跳到主内容
快讯直播
AI智模界
AI 词典

FP8 训练:8 位浮点如何省显存又不崩

FP8 训练(FP8 training)指的是在神经网络的前向传播(forward pass)和反向传播(backward pass)中,用 8 位浮点数完成核心的矩阵乘法等计算,从而把显存占用和带宽需求压下来,同时靠一套缩放技巧尽量不让训练稳定性变差。

先看浮点数怎么表示一个数:它由符号位、指数位(exponent)和尾数位(mantissa)组成。指数位管“能表示多大范围”,尾数位管“能表示多细”。8 位实在太少,于是业界常用两种 FP8 格式:E4M3(4 位指数、3 位尾数)和 E5M2(5 位指数、2 位尾数)。打个比方,E4M3 像一张小纸条,小数点后能多写几位,但数字不能太大;E5M2 像一张更长的纸条,能写很大的数,但只能记个大概。前向传播里的激活值通常范围可控,用 E4M3 更合适;反向传播里的梯度可能忽大忽小,用 E5M2 更能兜住范围。

但直接把权重、激活、梯度砍成 8 位,很容易溢出或下溢。所以 FP8 训练必须配缩放(scaling):给一个张量乘上缩放因子,把它“挪”到 FP8 能表示的区间,算完再除回去。这就像用一把刻度很粗的尺子量小零件,先按比例放大再量,量完换算回真实尺寸。缩放可以按张量、按通道或按块来做,更新频率也有讲究。

更重要的是,FP8 训练通常不是“全部用 FP8”。主权重(master weights)、优化器状态(optimizer states)和部分累加往往保留 FP32 或 BF16,只让前向和反向的矩阵乘走 FP8。这种混合精度(mixed precision)策略,既吃到 8 位的显存和算力红利,又给稳定性上了保险。

和相邻概念比:

维度FP8 训练FP16/BF16 混合精度
位宽8 位16 位
显存/带宽约为一半基准
动态范围窄,依赖缩放较宽,BF16 接近 FP32
稳定性处理缩放、E4M3/E5M2 分工、关键部分高精度FP16 需 loss scaling,BF16 通常较省心
典型场景大模型训练加速通用训练

它和推理量化(如 INT8/FP8 推理)也不同:推理量化只需一次性校准,不涉及反向传播;FP8 训练要管前向、反向、梯度缩放和权重更新,工程难度高得多。

对从业者来说,FP8 训练意味着同样硬件上能塞下更大的模型或更大的 batch,训练吞吐也可能更高。对普通职场人,训练成本下降会让模型迭代更快、调用更便宜。不过要记住,FP8 训练不是无损魔法,仍可能遇到 loss spike 或梯度溢出,需要监控和调参;具体支持哪些硬件和框架,以官方页面为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。