头图

飞桨框架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%

image.png

  • 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%

image.png

  • H800上不含MTP测试,实验复现请参考文档:

https://paddlenlp.readthedocs.io/zh/latest/llm/docs/predict/d...

MLA优化性能大幅领先

结合Hopper架构的特性,我们通过多级流水线编排、精细的寄存器及共享内存分配,深度调优MLA算子性能,相比业内最优方案FlashMLA,性能领先4%~23% 。下面将详细介绍我们的优化方案。

image.png

首先,使用3个Warp Group (WG),WG0作为Producer,进行2阶段的数据搬运操作;WG1与WG2作为Consumer,其中WG1负责计算QK GEMM以及Softmax操作,并将结果存储到共享内存中;而后WG1与WG2共同计算PV GEMM以缓解寄存器压力;这种方式下,我们每次处理64长度的KV,最终占用了225KB的共享内存。

image.png

其次,为了将CPV与UPRS操作进行overlap,在上述的基础上,将WG0的流水线增加到四阶段,将PV GEMM与Softmax操作进行overlap。为了节省寄存器与共享内存,我们每次处理32长度的KV,该套实现建议在CUDA12.8版本下使用。

image.png

最后,为了进一步对不同操作进行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%的明显提升。

image.png

测试说明:H800 CUDA12.8环境下NCU锁频统计Kernel耗时

MTP高效推理 实现大批次加速

飞桨框架3.0在大模型推理方面设计了一套全新的投机解码通用机制,解耦基础模型与投机解码方法,统一了基于草稿模型(Draft Model)、多头投机解码(MTP/Eagle)、参考文献匹配等多种投机解码范式,仅少量代码,即可适配新的投机解码方法。 为了极致的性能,我们还优化了注意力机制的实现,支持在解码阶段输入的token长度大于1, 在草稿token验证阶段,保持批次大小不变的情况下,可一次性完成对所有草稿token的推理验证,解决了大批次下投机解码劣化推理性能的问题。传统的草稿token验证,批次大小一般会膨胀草稿token数量的倍数,我们高效的注意力机制则可以保持原始批次大小,减少计算量,如下图所示:

image.png
草稿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%。

image.png

长序列注意力机制量化加速

长序列推理,由于Attention计算量与序列长度的平方成正比,量化和稀疏都能取得非常好的加速。飞桨框架3.0大模型推理在基于Hopper架构GPU上,集成了Attention动态量化方案SageAttention,并优化了DeepSeek模型中Head Dim为192的情况,在精度近乎无损的基础上,实现了长序列输入Prefill阶段的高性能注意力计算实现,64K长文输入首token推理速度提升37.4%。

image.png

SageAttention通过动态的将Q、K矩阵量化为INT8,V矩阵量化为FP8来重新组织Attention计算各阶段的数据类型;在softmax阶段先将INT32的QK转换为FP32,之后进行QK的反量化,再采用online softmax加速计算;将结果P量化为FP8,与经过FP8量化的V矩阵相乘,之后在进行对V的反量化,得到Attention的计算结果O。上述两次量化和反量化过程在保证精度的前提下,大幅度提升了注意力计算的性能

image.png

一键式脚本 快速启动推理

我们提供了一键式脚本,可以帮助开发者们基于飞桨框架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元奖学金

image.png

文档【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...


飞桨PaddlePaddle
30 声望34 粉丝

飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件、丰富的工具组件于一体,是中国首个自主研发、功能丰富、开源开放的产业级深度...