FP8通过其独特的数值表示办法,能够在保持一定精度的同时,在大模型演习中提高演习速率、节省内存占用,终极降落演习本钱。
AI大模型开拓系统Colossal-AI的稠浊精度演习再度升级,支持主流的BF16(O2) + FP8(O1)的新一代稠浊精度演习方案。
仅需一行代码,即可对主流LLM模型能够得到均匀30%的加速效果,降落相应大模型开拓本钱,并担保演习收敛性。
无需引入额外的手写CUDA算子,避免了较长的AOT编译韶光和繁芜的编译环境配置。
开源地址:https://github.com/hpcaitech/ColossalAI
FP8稠浊精度演习低精度打算一贯是GPU硬件发展趋势。
从最早的FP32,到目前通用的FP16/BF16,再到Hopper系列芯片(H100, H200, H800等)支持的FP8,低精度打算速率越来越快,所需的内存也越来越低,非常符合大模型时期对硬件的需求。
目前FP8稠浊精度演习影响演习结果的最大成分便是scaling方案,常见的方案有两种:
延迟scaling实时scaling延迟scaling采取之前一段韶光窗口内的scaling值来估计当前scaling,同时将scaling的更新和矩阵乘法(gemm)领悟起来。这种打算方法效率较高,但由于是估算的scaling,以是对收敛性影响较大。
实时scaling直接采取当前的张量值来打算scaling,以是打算效率较低,但是对收敛性影响较小。根据英伟达的报告,这两种scaling方案的打算效率差距在10%以内。
Colossal-AI采取了对演习收敛性影响较小的实时scaling方案,同时实现有着不输其他延迟scaling实现的性能。
在单卡H100上对矩阵乘法进行的测试,可以看到矩阵的维度越大,FP8的加速效果越明显,而且Colossal-AI的实现与Transformer Engine的性能险些同等,如图1所示。但Transformer Engine须要繁芜的AOT编译环境配置和较长的编译韶光。
△图1. 单卡GEMM性能测试
为了实验结果更贴近现实,Colossal-AI直接在主流LLM上进行了实际演习的测试。
首先在H100单卡上进行了测试,以下测试中Transformer Engine (TE)采取的其默认的延迟scaling方案。
同时进行了收敛性测试,可以看到FP8稠浊精度演习的loss曲线与bf16的基本同等,如图4所示:
△图4. H100单卡 LLaMA2-7B 稠浊精度演习loss曲线
Colossal-AI还测试了H800多卡并行演习场景下的性能。在单机8卡H800上演习LLaMA2-7B,Colossal-AI FP8比拟Colossal-AI BF16有35%的吞吐提升,比拟Torch FSDP BF16有94%的吞吐提升。
在单机8卡H800上演习LLaMA2-13B,Colossal-AI FP8比拟Colossal-AI BF16有39%的吞吐提升。
在2机16卡H800上演习Cohere Command-R 35B,Colossal-AI FP8比拟Colossal-AI BF16有10%的吞吐提升,如图7所示:
根据英伟达的报告和测试履历,对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编译。
开源地址:https://github.com/hpcaitech/ColossalAI
— 完 —
量子位 QbitAI · 头条号签约
关注我们,第一韶光获知前沿科技动态