概念:
参考:Accelerating Large Language Models with Mixed-Precision Techniques - Lightning AI
3种数量类型表示的数据范围不一样,以float32为例其中有1个符号位,8位表示指数,23位表示尾数
标准训练推理是用的float32,但是占用GPU显存太大,所以优化的方向就是一般就是,时间换空间或者是减少float32位精度。
需要特别说的是,bfloat16 是nvidia 提出的数据类型,不是所有显卡都支持,像3080,3090之后的显卡都ok
推理速度和显存占用
不同模型不一样,以LLaMa为例。时间换空间,显存占用减少了,推理时间增加了,很合理
参考:Accelerating Large Language Models with Mixed-Precision Techniques - Lightning AI
Lightning-AI
参考 bfloat16 running 4x slower than fp32 (conv) · Issue #11933 · Lightning-AI/pytorch-lightning · GitHub