FP8训练数值缩放策略深度解析:从逐张量到逐块,解锁大模型训练新纪元
FP8训练的效率与稳定性,关键在于精细化的数值缩放策略。NVIDIA Nemotron实验揭示,从基础的逐张量缩放(Per-tensor scaling),包括延迟缩放(Delayed scaling)和当前缩放(Current scaling),到更高级的逐块缩放(Per-block scaling),每一种策略都在维持数值稳定性和精度方面发挥着核心作用。
逐张量缩放通过为每个张量(如权重、激活或梯度)分配独立的缩放因子,有效解决了FP8动态范围有限的挑战。延迟缩放通过历史数据平滑异常值,而当前缩放则实时调整以适应数据变化,两者均旨在提升训练的稳健性。然而,这些方法在面对张量内部复杂数值分布时仍显不足。
逐块缩放通过将张量划分为更小的块并为每块分配独立的缩放因子,实现了对局部数值特征的精细化适应。这不仅能更准确地表示高幅度区域,还能保护低幅度区域的精度,从而显著提升FP8训练的稳定性和效率。NVIDIA Blackwell架构的MXFP8格式,即一种硬件级的微缩放FP8(Micro-Scaling FP8),更是将逐块缩放推向极致,通过定义化的块大小和幂次-2缩放因子,优化了硬件实现,并在实际模型训练中展现出与BF16相当的精度和收敛速度。
此外,通用的可配置块缩放提供了跨不同模型架构和硬件需求的灵活性,允许用户根据具体情况调整块的大小和形状。这些缩放策略的有效选择和实施,是释放FP8在大模型训练中潜力的关键。NVIDIA NeMo框架通过提供如“delayed”、“tensorwise”、“mxfp8”和“blockwise”等FP8 Recipe配置,进一步简化了用户对这些高级缩放策略的应用。
Per-Tensor and Per-Block Scaling Strategies for Effective FP8 Training | NVIDIA Technical Blog
In this blog post, we’ll break down the main FP8 scaling strategies—per-tensor scaling, delayed and current scaling, and per-block scaling (including the Blackwell-backed MXFP8 format)—and explain why…

网友讨论