看 transformers 的源码,判断能否使用 bf16 混合精度的时候需要 Ampere 架构的 GPU ,不太明白是为什么。 改了下代码试试 2080ti 能不能跑出来,如果可以的话再给大家汇报。 如果有人知道是什么原因以及效果如何也请留言告知,不胜感激。 ampere, GPU, 精度, 混合
用 fp16 也是混合精度 Ampere 架构才支持 bf16 ,更早的显卡硬件不支持,跑的时候实际上转回 fp32 ,更慢了 Turing 架构有 Tensor Core ,可以跑 fp16 和 int8 ,相比 fp32 还快很多
@ShadowPower 我使用的是 2080ti ,是 Turing 架构的。从我目前的测试上看,使用 fp16 会溢出,使用 bf16 按您的说法是会转回 fp32 ,会更慢。但是我确实看到加速了不少而且显存也下降了。 使用单精度,我 bs 最多只能设置到 8 ,需要大约 32 个小时训练 使用 bf16 ,我 bs 可以设置到 16 ,需要大约 16 个小时完成训练 使用 fp16 ,会直接溢出