PART 01
模型量化是提升推理效率、降低推理成本的主流方式,它是指在保持模型精度尽量不变的前提下,将模型使用的高精度数值(如 FP32/BF16 浮点数)转换为低精度数值(如 FP8、INT8、INT4 甚至更低比特)的过程,从而减少了大模型内存占用、提升了推理性能。
对权重(Weight)采用INT4 量化,对激活(Activation)采用FP8 动态量化;
只对普通专家权重使用INT4量化,而对其他线性层保留DeepSeek原生的FP8量化方式;
W4AFP8混合量化方案
通过上述W4AFP8混合量化方案,可以将DeepSeek系列模型大小从689GB减小到 367GB,从而可以实现单机八卡部署,推理成本降低 50%。为了实现这种量化模型的高效推理,我们在SGLang中实现了一种优化的推理方案,并贡献给了开源社区。
PART 02
TP并行和EP并行的权重划分对比示意图
TP并行时,所有GPU卡计算量一致,整体计算时间稳定,性能相比 EP有明显提升。
然而,将这一理论上的优势转化为实际可用的功能,需要克服以下两个挑战:
1.权重切分与加载的适配:实现TP并行需要设计一套新的权重加载逻辑,能够正确识别需要切分的权重(如专家MLP层的权重矩阵),并按照TP的策略(如行切分或列切分)将其均匀地切分到多个GPU上。同时,新的TP实现需要能够无缝集成到推理框架现有的分布式调度逻辑中。
2.推理计算内核的兼容:模型推理时前向传播计算需要适配TP模式,这是实现TP部署的核心工作。例如,对于一个线性层,TP部署时输入的权重和对应的量化参数维度已经变化,如果直接使用原来的算子可能会有计算错误,或者性能无法达到最优;这要求对推理框架中负责MoE层计算的核心内核有深入的了解并进行修改。
SGLang中W4AFP8量化模块架构图,深色为TP并行需要修改的部分
为此,腾讯云联合小红书Hilab Infra团队,为SGLang提供了完整的W4AFP8模型TP并行推理实现。在开发过程中,团队深入分析了模型结构,修改了SGLang中与模型权重加载相关的代码,确保W4AFP8格式的量化权重能被正确切分并加载到TP组内的各个GPU中;另外,我们重构了CUDA内核调度模块,修改了CUDA内核实现,确保了MoE模块TP计算时精度无损;同时,我们遍历了各种内核调优配置(TileShape,ClusterShape和Scedule策略),并从中选取最优组合,保证了MoE算子的高性能。
通过上述优化攻坚,当前TP方案推理性能相比最初方案有了显著提升:TTFT最高降低了 20%,QPM最高提升了 14%。目前相关PR已正式合入SGLang V0.5.2版本,并吸引更多开发者在此基础上做了进一步优化和拓展。
(详见https://github.com/sgl-project/sglang/pull/8118)
在SGLang V0.5.2之后的版本用TP并行部署 W4AFP8模型很简单,只需要如下命令:
python3-msglang.launch_server--model-path/path/to/model--tp8--trust-remote-code--host0.0.0.0--port8000
PART 03
W4AFP8模型相比W4A16和FP8模型,QPM在Batch为1,16,64下的对比
PART 04
感谢小红书Hilab Infra团队的通力合作和支持,感谢 SGLang团队的辛苦付出,腾讯云也将继续与社区伙伴共建,共同推动国产大模型在推理性能和生态落地上的新突破。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |