
pytorch
文章平均质量分 53
lppfwl
这个作者很懒,什么都没留下…
展开
-
模型训练时gpu内存不足的解决办法
最近在训练微调bert预训练模型的时候,gpu内存老是不足,跑不了一个epoch就爆掉了,在网上来来回回找了很多资料,这里把一些方法总结一下:半精度训练半精度float16比单精度float32占用内存小,计算更快,但是半精度也有不好的地方,它的舍入误差更大,而且在训练的时候有时候会出现nan的情况(我自己训练的时候也遇到过,解决方法可以参考我的另一篇博客)。模型在gpu上训练,模型和输入数据都要.cuda()一下,转成半精度直接input.half()和model.half() 就行了。另外,还有原创 2021-11-04 11:13:17 · 20657 阅读 · 4 评论 -
pytorch半精度训练时出现nan的情况
最近在训练bert模型的时候,因为gpu内存不足,就想着用半精度训练的方式来降低内存占用,加速训练,但是训练几百个batch之后,就出现模型输出为nan的情况,但是之前用单精度float32训练的时候就没出现过这个问题。一点点去查看之后,发现是在某个batch更新之后,模型embedding层的权重参数变成了nan,在网上查了一些资料之后终于解决这个问题了,这里记录一下:1.由于我的优化器使用的是adam算法,在用半精度训练的时候需要torch.optim.Adam中加入参数eps=1e-3,否则就有可原创 2021-11-04 09:20:13 · 2900 阅读 · 2 评论 -
pytorch修改模型参数的方法
pytorch貌似不支持直接修改网络参数参考了知乎https://zhuanlan.zhihu.com/p/158876093和评论,自己测试了一下,有用的方法如下:(我这里是修改模型参数的数据类型)for p in model.parameters(): p.data=p.data.to(torch.float16)记录一下...原创 2021-09-02 10:24:29 · 3652 阅读 · 0 评论 -
pytorch中维度不一致张量之间加减/逻辑运算问题
pytorch中维度不一致张量之间加减/逻辑运算问题最近在看一个程序的时候很迷惑pytorch中维度不一致的张量之间如何让做加减和逻辑运算,参考了一个大神的博文https://blog.youkuaiyun.com/bxdzyhx/article/details/110831005然后自己试了一下,特此记录一下以逻辑与&为例...原创 2021-05-10 15:07:19 · 5555 阅读 · 0 评论 -
pytorch中tensor的底层存储方式,维度变换permute/view/reshape,维度大小和数目
记录一下pytorch中tensor的底层存储方式,维度变换permute/view/reshape,维度大小和数目。tensor的底层存储方式tensor的底层存储是按照行优先的原则存储的,比如:>>import torch>>a=tensor.rand((2,2,3))>>atensor([[[0.1345,0.4907,0.8740], [0.4888,0.5481,0.8513]], [[0.1015,0.9427,0.8660], [原创 2021-05-13 10:21:58 · 1189 阅读 · 2 评论