飞桨框架3.0推理升级:支持多款主流大模型、DeepSeek-R1满血版实现单机部署,吞吐提升一倍!
飞桨框架3.0大模型推理部署升级加码,支持多款主流大模型,MLA、MTP、量化优化全面突破,4比特单机部署DeepSeek-R1满血版吞吐提升一倍,立即体验请直接划至下方“一键式脚本,快速启动推理”。
飞桨新一代框架3.0全面升级了大模型推理能力,依托高扩展性的中间表示(PIR)从模型压缩、推理计算、服务部署、多硬件推理全方位深度优化,能够支持众多开源大模型进行高性能推理,并在DeepSeek V3/R1上取得了突出的性能表现。飞桨框架3.0支持了DeepSeek V3/R1满血版及其系列蒸馏版模型的FP8推理,并且提供INT8量化功能,破除了Hopper架构的限制。此外,还引入了4比特量化推理,使得用户可以单机部署,降低成本的同时显著提升系统吞吐一倍,提供了更为高效、经济的部署方案。
在性能优化方面,我们对MLA算子进行多级流水线编排、精细的寄存器及共享内存分配优化,性能相比FlashMLA最高可提升23% 。综合FP8矩阵计算调优及动态量化算子优化等基于飞桨框架3.0的DeepSeek R1 FP8推理,单机每秒输出token数超1000;若采用4比特单机部署方案,每秒输出token数可达2000以上!推理性能显著领先其他开源方案。此外,还支持了MTP投机解码,突破大批次推理加速,在解码速度保持不变的情况下,吞吐提升144% ;吞吐接近的情况下,解码速度提升42% 。针对长序列Prefill阶段,通过注意力计算动态量化,首token推理速度提升37% 。
- H800上256并发不含MTP测试,实验复现请参考文档:
https://paddlenlp.readthedocs.io/zh/latest/llm/docs/predict/d...
4比特量化 单机高速推理部署
除了支持DeepSeek V3/R1满血版及其系列蒸馏版模型在Hopper架构GPU上部署,飞桨框架3.0 还实现了Weight Only INT8量化,支持在A800部署;此外,还通过Weight Only INT4量化,支持单机部署;相比2机部署方案,大大节省了跨机通信耗时,相同并发下可加速101%~128% 。
- H800上不含MTP测试,实验复现请参考文档:
https://paddlenlp.readthedocs.io/zh/latest/llm/docs/predict/d...
MLA优化性能大幅领先
结合Hopper架构的特性,我们通过多级流水线编排、精细的寄存器及共享内存分配,深度调优MLA算子性能,相比业内最优方案FlashMLA,性能领先4%~23% 。下面将详细介绍我们的优化方案。
首先,使用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%的明显提升。
测试说明:H800 CUDA12.8环境下NCU锁频统计Kernel耗时
MTP高效推理 实现大批次加速
飞桨框架3.0在大模型推理方面设计了一套全新的投机解码通用机制,解耦基础模型与投机解码方法,统一了基于草稿模型(Draft Model)、多头投机解码(MTP/Eagle)、参考文献匹配等多种投机解码范式,仅少量代码,即可适配新的投机解码方法。 为了极致的性能,我们还优化了注意力机制的实现,支持在解码阶段输入的token长度大于1, 在草稿token验证阶段,保持批次大小不变的情况下,可一次性完成对所有草稿token的推理验证,解决了大批次下投机解码劣化推理性能的问题。传统的草稿token验证,批次大小一般会膨胀草稿token数量的倍数,我们高效的注意力机制则可以保持原始批次大小,减少计算量,如下图所示:
草稿token验证阶段注意力计算优化
基于DeepSeekV3/R1提供的MTP权重,我们在多个数据集上统计,第二个token的接受率达到80%~90%,达到DeepSeekV3论文效果。基于飞桨框架3.0的高性能优化:
- 基于实验1与实验4,保持解码速度不劣化(此示例中解码速度提升25% ),QPS提升144%。
- 基于实验2与实验3,保持QPS不劣化(此示例中QPS提升8% ),解码速度提升42%。
- 基于实验2与实验4,保持批次大小不变,在批处理大小为128较大的时候,依然可以保持QPS提升32% ,解码速度提升32%。
长序列注意力机制量化加速
长序列推理,由于Attention计算量与序列长度的平方成正比,量化和稀疏都能取得非常好的加速。飞桨框架3.0大模型推理在基于Hopper架构GPU上,集成了Attention动态量化方案SageAttention,并优化了DeepSeek模型中Head Dim为192的情况,在精度近乎无损的基础上,实现了长序列输入Prefill阶段的高性能注意力计算实现,64K长文输入首token推理速度提升37.4%。
SageAttention通过动态的将Q、K矩阵量化为INT8,V矩阵量化为FP8来重新组织Attention计算各阶段的数据类型;在softmax阶段先将INT32的QK转换为FP32,之后进行QK的反量化,再采用online softmax加速计算;将结果P量化为FP8,与经过FP8量化的V矩阵相乘,之后在进行对V的反量化,得到Attention的计算结果O。上述两次量化和反量化过程在保证精度的前提下,大幅度提升了注意力计算的性能。
一键式脚本 快速启动推理
我们提供了一键式脚本,可以帮助开发者们基于飞桨框架3.0快速启动DeepSeek-R1服务,并进行推理请求。为了方便测试性能,在文档【1】(见文末)中我们提供了benchmark脚本进行性能测试,下面我们将给出示例。 为了避免模型过大导致的下载时间过长问题,我们直接提供了自动下载的脚本,支持下载后再启动服务进行推理。进入容器后根据单机或多机模型参考文档【2】(见文末)进行静态图下载。
单机WINT4推理**
以1台H800为例,部署单机4比特量化推理服务。
- 设置变量model_name声明需要下载的模型,具体支持的静态图模型详见文档【3】(见文末)。
- 设置模型存储路径MODEL_PATH,默认挂载至容器内/models路径下(请确认对存储路径MODEL_PATH具有写权限)
export MODEL_PATH=${MODEL_PATH:-$PWD}
export model_name="deepseek-ai/DeepSeek-R1/weight_only_int4"
docker run --gpus all --shm-size 32G --network=host --privileged --cap-add=SYS_PTRACE
-v $MODEL_PATH:/models
-e "model_name=${model_name}"
-e "MP_NUM=8"
-e "CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7"
-dit ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlenlp:llm-serving-cuda124-cudnn9-v2.1 /bin/bash
-c -ex 'start_server $model_name && tail -f /dev/null'&& docker logs -f $(docker ps -lq)
两机推理**
以2台H800机器为例,介绍如何基于PaddlePaddle启动多机DeepSeek-R1服务,首先需要保证2台机器互通,下面均以伪IP为例。
# 第一个节点(master)
ping 192.168.0.1#
第二个节点(slave)
ping 192.168.0.2
在2个节点上分别执行下列以下命令,一键启动多机推理镜像。
- IP 设置:POD_IPS 为两机的IP,POD_0_IP 为第一个节点(master)的IP,两机的POD_0_IP 完全相同。
- 针对两机模型,默认设置为高吞吐下最优的BATCH_SIZE与BLOCK_BS。关于其他环境变量的说明可以查看文档【4】(见文末)。
export MODEL_PATH=${MODEL_PATH:-$PWD}
export model_name="deepseek-ai/DeepSeek-R1-2nodes/weight_only_int8" #可更换FP8模型
export MP_NNODE=${MP_NNODE:-2}
export MP_NUM=${MP_NUM:-16}
export POD_0_IP=${POD_0_IP:-"192.168.0.1"}
export POD_IPS=${POD_IPS:-"192.168.0.1,192.168.0.2"}
export BATCH_SIZE=${BATCH_SIZE:-128}
export BLOCK_BS=${BLOCK_BS:-40}
docker run --gpus all --shm-size 32G --network=host --privileged --cap-add=SYS_PTRACE
-v $MODEL_PATH:/models
-e "model_name=${model_name}"
-e "MP_NUM=${MP_NUM}"
-e "MP_NNODE=${MP_NNODE}"
-e "CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7"
-e "POD_0_IP=${POD_0_IP}"
-e "POD_IPS=${POD_IPS}"
-e "BATCH_SIZE=${BATCH_SIZE}"
-e "BLOCK_BS=${BLOCK_BS}"
-dit ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlenlp:llm-serving-cuda124-cudnn9-v2.1 /bin/bash
-c -ex 'start_server $model_name && tail -f /dev/null'&& docker logs -f $(docker ps -lq)
请求推理
curl请求示例
curl 127.0.0.1:9965/v1/chat/completions -H 'Content-Type: application/json' \
-d '{
"model":"default",
"text":"Hello, how are you?"
}'
API请求示例
镜像已经提供openai的依赖,可以进入容器中进行测试
import openai
client = openai.Client(base_url=f"http://127.0.0.1:9965/v1/chat/completions", api_key="EMPTY_API_KEY")
# 非流式返回
response = client.completions.create(
model="default",
prompt="Hello, how are you?",
max_tokens=50,
stream=False,
)
print(response)
print("\n")
# 流式返回
response = client.completions.create(
model="default",
prompt="Hello, how are you?",
max_tokens=100,
stream=True,
)
for chunk in response:
if chunk.choices[0] is not None:
print(chunk.choices[0].text, end='')
以上就是本次推理升级中单机和两机部署DeepSeek-R1服务的示例,请见具体文档【5】(见文末)。下周一我们还将开展直播课程及实测活动,进一步帮助大家轻松上手体验DeepSeek系列及更多热门大模型的高性能推理部署。
总结
飞桨框架3.0 具备模型压缩工具、高性能推理引擎、服务化部署全栈工具,除了支持DeepSeek、Qwen、Llama、Mixtral等众多热门大模型之外,还提供自研的精度无损的量化压缩方法,支持INT8、FP8、INT4多种精度类型的量化算法,包含TensorCore优化的高性能算子、上下文缓存能力,以及KV Cache 8比特及4比特量化推理等。除英伟达GPU之外,还支持在昆仑芯、昇腾、海光、燧原、太初、Intel CPU等多种硬件上进行大模型推理,欢迎前往多硬件部署文档【6】(见文末)实际体验。未来,飞桨将不断优化推理部署性能,持续为大家提供高水平的技术服务。
官方课程与实测活动
直播课程
3月17日(下周一)19:00,技术解析加代码实战,一线研发大佬为大家详细解析强大性能提升背后的原理,并结合官方最新开源代码案例,现场带大家开箱体验DeepSeek-R1等热门大模型的高性能推理部署!
实测活动
技术知识的一切问题,代码会给你答案!官方case开源代码直给、直播课程现场coding手把手带你开箱体验、官方驻群答疑保驾护航,完成实测任务即可获得小额奖学金等实用奖励。
有奖测评
基于飞桨框架3.0,在技术网站发布本人真实的测评报告/使用tips/实际场景应用实例等经验贴,并提交至官方(下方海报二维码),即可获得50-500元奖学金。
文档【1】: https://github.com/PaddlePaddle/PaddleNLP/tree/develop/llm/benchmark/serving
文档【2】:
https://github.com/PaddlePaddle/PaddleNLP/blob/develop/llm/server/docs/deploy_usage_tutorial.md
文档【3】:
https://paddlenlp.readthedocs.io/zh/latest/llm/docs/predict/d...
文档【4】: https://paddlenlp.readthedocs.io/zh/latest/llm/server/docs/de...
文档【5】: https://paddlenlp.readthedocs.io/zh/latest/llm/docs/predict/d...
文档【6】:
https://paddlenlp.readthedocs.io/zh/latest/llm/docs/predict/d...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。