一行代码训练费用再降30%,AI大模型混合精度训练再升级

2024-09-26

FP8通过其独特的数值表示方法,可以提高训练速度,节省内存占用,最终降低训练成本,同时保持一定的精度。


AI大模型开发系统Colossal-AI再次升级混合精度训练,BF16(O2)支持主流 新一代FP8(O1)混合精度训练计划。


只需一行代码,就可以获得主流LLM模型。加速效果平均值为30%,降低相应的大模型开发成本,保证训练的收敛。


无需引入额外的手写CUDA算法,避免了长时间的AOT编译和复杂的编译环境设备。


混合精度FP8训练


GPU硬件的发展趋势是低精度计算。


从最早的FP32,到目前通用的FP16/BF16,再到Hopper系列芯片(H100, H200, FP8支持H800等,低精度计算速度越来越快,所需内存也越来越低,非常适合大模型时代硬件的需要。


当前影响FP8混合精度训练结果的最大因素是scaling方案,常见的方案有两种:


延迟scaling


即时scaling


延迟scaling选择前一段时间窗口中的scaling值来估算当前的scaling值,同时更新scaling和矩阵乘法。(gemm)整合起来。这样的计算方法效率很高,但是因为它是一个估计的scaling,所以对收敛有很大的影响。


即时scaling当前的张数值直接用于计算scaling,因此计算效率较低,但对收敛的影响较小。据英伟达报道,这两种scaling策略的计算效率差在10%以内。


Colossal-AI采用了对训练收敛影响较小的实时scaling方案,同时实现了不输其它延迟scaling的性能。


通过检测单卡H100中矩阵乘法,可以看出矩阵的维度越大,FP8的加速效果就越明显,而且Colossal-AI的实现和Transformer 如图1所示,Engine的性能几乎相同。但是Transformer Engine需要复杂的AOT编译环境配置和较长的编译时间。




为使实验结论更加贴近现实,Colossal-AI直接测试了主流LLM的实际训练。


先在H100单卡上测试一下,Transformermer下面的测试。 Engine (TE)其默认延迟scaling方案的选择。




与此同时进行了收敛测试,可以看到FP8混合精度训练的loss曲线与bf16基本一致,如图4所示:




Colossal-在H800多卡并行训练场景中,AI还测试了性能。单机8卡H800训练LLaMA2-7B,Colossal-AI ColossalossFP8对比-AI 与Torch相比,BF16的吞吐量提高了35%。 FSDP 94%的BF16吞吐量增加。



训练LLaMA2-13B,单机8卡H800,Colossal-AI ColossalossFP8对比-AI 39%的BF16吞吐量增加。



Cohererer在2机16卡H800上训练 Command-R 35B,Colossal-AI ColossalossFP8对比-AI 如图7所示,BF16的吞吐量提高了10%:



基于英伟达的报告和测试经验,对FP8混合精度训练性能的调优有一定的初步认识:


尽量少用张量并行,用流水线并行替代张量并行。


hidden模型 size越大,加速效果越明显。


矩阵乘法比例高,模型加速效果大。


由于Command在上述试验中-R 张量并行使用35B,所以加速效果不太明显。


Colossal-AI广泛支持FP8,各种并行方式都可以适应FP8混合精度训练。使用时,只需在初始plugin时打开FP8:


  • from colossalai.booster.plugin import GeminiPlugin, HybridParallelPlugin, LowLevelZeroPlugin
  • ...
  • plugin = LowLevelZeroPlugin(..., use_fp8=True)
  • plugin = GeminiPlugin(..., use_fp8=True)
  • plugin = HybridParallelPlugin(..., use_fp8=True)

此外,不需要额外的代码和AOT编译。


本文来自微信微信官方账号“量子位”,作者:关注前沿技术,36氪经授权发布。


本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。

免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com