别急着把 autocast 全切成 bf16:RTX 3090 上把 GEMM、Conv2d 和 ResNet18 训练都跑完后,我的推荐顺序是这样
别急着把 autocast 全切成 bf16:RTX 3090 上把 GEMM、Conv2d 和 ResNet18 训练都跑完后,我的推荐顺序是这样
很多人把bf16当成“更稳的fp16”,也有人一提消费级显卡就先下结论:bf16肯定更慢,别折腾。我这次在一张RTX 3090上,把4096x4096的 GEMM、Conv2d和ResNet18训练都跑了一遍,结果和这两种口口相传都不完全一样:至少在这三类 workload 里,bf16不但没拖后腿,吞吐还都略高一点,显存占用也几乎和fp16打平。
这篇文章不打算再讲一遍fp16、bf16的教科书定义,而是把 PyTorch 官方混合精度文档、最近两条关于4090性能波动的 issue,和一组本地可复现实验放到一起,回答一个更实际的问题:如果你手里是3090这类消费级 Ampere 卡,训练脚本里的默认低精度,到底该先选谁?
别先问哪个“更先进”,先问你的 GPU 和 workload 在不在同一个前提里
PyTorch 官方 AMP 文档把autoca
