You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
除了支持DeepSeek V3/R1满血版及其系列蒸馏版模型在Hopper架构GPU上部署,飞桨还实现了Weight Only INT8量化,支持在A800部署;此外,还通过Weight Only INT4量化,支持单机部署,相比2机部署方案,大大节省了跨机通信耗时,相同并发下可加速101%~128%。
针对Weight Only INT4量化推理,除了基本的Channel Wise,飞桨还支持了更细粒度的Group Wise(64/128)的量化方式,模型精度得到进一步提升。
目录
飞桨新一代框架3.0全面升级了大模型推理能力,依托高扩展性的中间表示(PIR)从模型压缩、推理计算、服务部署、多硬件推理全方位深度优化,能够支持众多开源大模型进行高性能推理。全面支持了DeepSeek V2/V3/R1满血版及其基于LlaMA、Qwen蒸馏出的系列模型,其中,在DeepSeek V3/R1上取得了突出的性能表现。
飞桨框架3.0大模型高性能推理能力一览
提供面向服务器场景的部署服务
支持各大主流模型
推理机制全面
量化精度多样
多种硬件
DeepSeek多量化推理方案
Weight Only INT8/4量化
除了支持DeepSeek V3/R1满血版及其系列蒸馏版模型在Hopper架构GPU上部署,飞桨还实现了Weight Only INT8量化,支持在A800部署;此外,还通过Weight Only INT4量化,支持单机部署,相比2机部署方案,大大节省了跨机通信耗时,相同并发下可加速101%~128%。
针对Weight Only INT4量化推理,除了基本的Channel Wise,飞桨还支持了更细粒度的Group Wise(64/128)的量化方式,模型精度得到进一步提升。
Block Wise FP8量化
权重采用官方推荐的Block Wise(128x128)量化,激活采用动态per group(128)量化,采用一个warp计算多个group,充分利用显存带宽。我们基于cutlass3.8版本,实现了高效的FP8 BlockGemm,并经过矩阵参数调优进一步提升了性能。同时基于Triton实现的FusedMoE算子,提前遍历搜索出最优性能配置,并将MoE前的Token Permute/Dispatch等细碎操作进行算子融合以达到极致的吞吐的性能。还支持了将Python端生成的Triton kernel封装成Paddle自定义算子,进而支持静态图推理部署。
FP8-WINT4混合量化
为了在保证模型精度的同时最小化显存占用,我们采取将MoE部分进行WINT4量化,MLP等其它部分采用FP8量化的混合量化方式,实现了单机部署下的最优吞吐。为了评估模型效果,针对MMLU-Pro的部分科目,分别对Paddle的WINT4量化与FP8-WINT4混合量化以及vLLM的FP8量化进行了测评,分数评估如下表。
SageAttention量化
为了优化长文推理性能,我们集成了Attention动态量化方案SageAttention2,在原生支持的128大小的Head Dim(同时支持Ampere/Hopper架构)基础上,我们针对DeepSeek模型,实现了Head Dim为192的情况(当前仅支持Hopper架构)。
在精度近乎无损的前提下,大幅提升了长序列输入下Prefill阶段的首Token时延(TTFT),在64K长文输入下,首token推理速度最大提升37.4%。
SageAttention2通过动态的将Q、K矩阵量化为INT8(或者INT4,我们这里采用INT8),V矩阵量化为FP8来重新组织Attention计算各阶段的数据类型;在Softmax阶段先将INT32的Q*K转换为FP32,之后进行Q*K的反量化,再采用Online Softmax加速计算;将结果P量化为FP8,与经过FP8量化的V矩阵相乘,之后再对P*V结果进行反量化,得到Attention的计算结果O。
高效的MLA与MTP实现
Multi-head Latent Attention(MLA)算子
总体概述
一次完整的 MLA 计算包含四个步骤,分别是 Data Load、QK GEMM、Softmax Update + R2S、PV GEMM。结合 Hopper 架构的特性,通过多级流水线编排、精细的寄存器及共享内存分配,深度调优 MLA 算子性能;并适配 decoder 阶段 num_token > 1 的情况,以支持高效投机解码。
方案一
使用3个Warp Group (WG),WG0作为 Producer,进行2阶段的数据搬运操作;WG1与WG2作为 Consumer,其中 WG1 负责计算 QK GEMM 以及 Softmax 操作,并将结果存储到共享内存中;而后 WG1 与 WG2 共同计算 PV GEMM 以缓解寄存器压力;这种方式下,我们每次处理 64 长度的KV,最终占用了 225KB 的共享内存。
方案二
为了将 CPV 与 UPRS 操作进行 overlap,在上述的基础上,将 WG0 的流水线增加到四阶段,将 PV GEMM 与 Softmax 操作进行 overlap。为了节省寄存器与共享内存,我们每次处理 32 长度的KV,该套实现建议在 CUDA12.8 版本下使用。
方案三(实验中)
为了进一步对不同操作进行overlap,使用4个 Warp Group,其中 WG0 作为 Producer 进行4阶段的数据搬运,WG1 作为 Consumer 进行2阶段的 QK Gemm 与Softmax 操作,WG2 与 WG3 负责 PV GEMM 计算;在使用4个Warp Group后,单线程最大寄存器占用为128个,每次处理 32 长度的KV;WG0 与WG1 占用寄存器数量小于72个;WG2 与 WG3 寄存器占用数量约184个;因此,理论上通过更精细化的寄存器划分该方案可行,该方案当前暂开源一套低精度累加实现,后续将持续优化。
竞品对比
通过上述一系列的优化,在 Hopper 架构上,MLA 算子速度相较于 FlashMLA 取得了4%~23%的明显提升。
MTP 高效推理实现大批次加速
投机解码概述
“投机”,顾名思义,以较小代价博大的收益;在 LLM 中,尽可能小的额外时延生成多个 Draft Token,尽最大努力让 Base 模型接收它,减少推理的总耗时。
下图概括了投机解码的常用方法以及框架流程:
适合场景:在时延要求高、并发较小的场景
类Draft Model系列方法(MTP)
以下是 MTP 推理时的时序图:
大批次下的性能优化
性能测试
基于DeepSeekV3/R1提供的MTP权重,我们在多个数据集上统计,第二个token的接受率达到80%~90%,达到DeepSeekV3论文效果。基于飞桨框架3.0的高性能优化:
DeepSeek部署实战
介绍内容:
a. 一键下载模型、benchmark 数据集
b. 部署单节点DeepSeek-R1,量化精度为WINT4
c. 部署单节点DeepSeek-R1-MTP,基础模型量化精度为WINT4,MTP量化精度为WINT8
环境要求:
如何一键启动推理服务
Case 1:官网文档 demo
Case 2:根据文档demo升级改造
--> 进阶版:在持久化的docker容器内进行所有部署操作,并可随意更改配置测试
10min速成推理部署高手
介绍内容:
成为部署高手只需要四步!!
参考文档:https://github.com/PaddlePaddle/PaddleNLP/blob/develop/llm/server/docs/deploy_usage_tutorial.md
预置脚本:/opt/output/download_model.py
下载位置:/work
下载模型:deepseek-ai/DeepSeek-R1-MTP/a8w8_fp8_wint4
其中ShareGPT_V3_unfiltered_cleaned_split.json是原始ShareGPT数组,filtered_sharedgpt_short_3000.json是根据规则筛选出的数据。
Case 3:部署单机DeepSeek-R1
养成好习惯,每次启动server前,先执行stop_server关闭可能存在的相关进程。
环境变量配置
最终环境变量
执行与验证流程
Case 4:部署单机DeepSeek-R1-MTP
最终环境变量
The text was updated successfully, but these errors were encountered: