解决AssertionError: No inf checks were recorded for this optimizer

解决AssertionError: No inf checks were recorded for this optimizer

在torch.cuda.amp.grad_scaler.py里面有这段注释

``scaler`` dynamically estimates the scale factor each iteration.  To minimize gradient underflow,
    a large scale factor should be used.  However, ``float16`` values can "overflow" (become inf or NaN) if
    the scale factor is too large.  Therefore, the optimal scale factor is the largest factor that can be used
    without incurring inf or NaN gradient values.

大概意思即float16会溢出,全部换成float32即可。

查看数据类型可通过

print(x.dtype)

将float16转换为float32,可通过to()函数

x = x.to(torch.float32)

我把代码里的embedding数据类型都输出 一遍,全都改了,发现还是报错,才发现如果设置了trainer的这个yaml文件,也得改

trainer:
  max_steps: 100_000
  val_check_interval: 5000
  precision: 32    #这个原本是16,这会儿改成32即可运行

全文参考
链接: link.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值