FastDeploy 2.0 简介
随着文心 4.5 系列等大模型的陆续开源,围绕其推理性能与部署效率的研究与应用不断增长。基于此,FastDeploy 2.0 依托飞桨框架,提供大模型高效部署及高性能推理全栈能力。目前,FastDeploy 2.0 已支持多个主流开源大模型的部署,并提供基于 EP 并行与 PD 分离架构的高性能推理方案。在实际测试中,FastDeploy 2.0 在文心 4.5 模型上的输入/输出吞吐分别可达 56K/21K,支持近无损精度的 2-bit 量化方案,可在单卡条件下完成千亿参数模型的部署。FastDeploy 2.0 旨在降低大模型部署难度,提高推理效率和资源使用率,为研究机构与企业在大模型应用中的快速落地提供支持。
FastDeploy 2.0 技术亮点
FastDeploy 2.0 能够极致高效地推理部署 ERNIE 4.5 系列模型,主要依托以下技术实现:
- 统一了操作接口:FastDeploy 2.0 兼容了 OpenAI 协议,完全对齐 vLLM 使用接口,并且支持本地和服务化两种推理方式,使该工具非常易于使用。
- 多种高性能优化融合:通过各类量化高性能算子、CUDA Graph、投机解码、上下文缓存、分段预填充、PD 分离等高性能优化,使得 ERNIE 4.5 系列模型表现出优越的推理性能。
- 丰富的量化方法: 权重/激活/KV Cache 支持 8-bit、4-bit、甚至极低的 2-bit 量化压缩,单卡即可部署千亿级模型。
- 针对多种硬件优化:支持英伟达系列 GPU、昆仑芯 P800、天数 BI-V150、海光 K100AI、燧原 S60 等众多硬件上的高效推理。
- 提供工业级部署方案:针对工业部署场景,提供了实时负载感知、分布式负载均衡的流量调度方案。
部署性能和测试结果
除了基础部署能力,FastDeploy 2.0 还包含了多种量化技术,可以用一行命令开启 Weight Only 的 8/4-bit 及 FP8 在线量化推理,同时支持 W4A8 静态量化。基于 CUTLASS 深度优化算子性能,针对不同硬件和模型支持灵活选择最优的方案。
与此同时,FastDeploy 2.0 还实现了高性能、插拔式的投机解码框架,并通过融合 Kernel 加速前后处理、动态批处理、并行验证、虚拟 Padding 加速验证等手段进行性能优化,同时兼容上下文缓存、PD 分离、EP 并行、Chunked-Prefill。针对 MTP 推理,通过 MTP 模块的 Cache KV 进行逻辑、物理地址分离,以支持 Target 模型与 MTP 的多种层级下的上下文缓存功能;通过对 MTP 采取 PD 分离减少通讯量,加速了端到端推理性能。
FastDeploy 2.0 还优化了 CUDA Graph,支持通过飞桨动转静技术进行图捕获,同时兼容动态图进行整图捕获,在文心轻量级模型上的测试中,解码速度普遍能够提升 2 倍以上。
单机部署 ERNIE-4.5-300B-A47B 模型
FastDeploy 支持 Weight Only 4-bit 推理,支持在精度近乎无损的条件下将最小部署的 GPU 数量减少到 4 张。在单机部署 ERNIE-4.5-300B-A47B 模型时,其性能相比整体权重 8bit 计算的 QPS 提升了约 23%,提效的同时还降低了硬件资源需求。此外,针对 MoE 量化还引入 W4A8 量化和 KV Cache 的 8-bit 量化,QPS 进一步提升约 40%,在单机 H800 上,TPS 数据领先 vLLM 上单机 8 卡 WINT4 DeepSeek 198%。
单机部署 ERNIE-4.5 轻量级模型
在数据集输入长度 1.1K,A3B 模型在 H800 上约束 TPOT 不超过 25ms,0.3B 及 0.6B 模型在 A30 上约束 TPOT 不超过 16ms 的测试条件下,对比参数规模接近的 Qwen3 模型性能时:相同模型 FastDeploy 较 vLLM 性能领先达 5%、12%,ERNIE 4.5 轻量级 MoE 模型分别比 QWEN3 对应轻量模型性能快 99%、118%,FastDeploy 仍表现出了优异的性能。
2-bit 量化方案
飞桨 2-bit 量化方案将 MoE 权重从 BF16 量化到 2-bit,从而降低推理时显存占用和推理部署的资源门槛。对于参数量为 300B 的 ERNIE-4.5 模型,2-bit 量化将权重从 600GB 压缩至 89GB,使量化后的模型支持 141GB GPU 单卡部署。飞桨 2-bit 量化是一种基于卷积编码的量化方法,FastDeploy 沿用了 Trellis Code Quantization 和 Bitshift Trellis 的思想,并对码本空间和编码算法做了深入改进,不仅减少了量化损失,还提升了推理性能。飞桨 2-bit 量化方法比传统的标量量化方法有更好的效果,比传统向量量化有更快的推理速度。经该方案量化压缩的 ERNIE-4.5-300B-A47B 模型,在多个数据集上的精度表现接近无损。
Test Set | IFEval | BBH | DROP | GSM8K | CMath | CMMLU |
---|---|---|---|---|---|---|
WINT4 | 88.17 | 94.43 | 91.17 | 96.21 | 96.50 | 89.92 |
WINT2 | 85.40 | 92.02 | 89.97 | 95.98 | 96.00 | 86.22 |
大规模分布式推理
FastDeploy 通过专家并行( Expert Parallel)以支持 MoE 的大规模分布式推理,目前已支持 ERNIE-4.5-300B-A47B 大规模分离式部署。FastDeploy 使用 DeepEP 执行卡间、机间的 Dispatch 和 Combine 操作,还对 DeepEP 的低时延模式进行了两阶段改进并进行了细致的优化,通信性能可提升 2 倍。
该方案可以简单表述为,当命中本机的专家索引时,直接使用 NVLINK 进行传输;当命中其他机器的专家索引时,采用两阶段传输,第一阶段使用 RDMA 传输到目标机器的相同 rank 上,第二阶段使用 NVLINK 在目标机器传输到目标卡上。但是在实现中,低时延模式为了避免引入 CPU 同步,无法提前发送元信息,各个阶段的设计复杂度过高;同时,卡内、卡间、机间涉及阶段多且数据方向耦合,简单的内存序设计会带来性能劣化,需细致考虑内存一致性。在这一点上,FastDeploy 针对无元信息,在 kernel 中通过 3 级、共 7 种原子化的信号量映射完成了无元信息的传输设计,针对内存一致性控制,FastDeploy 在各个阶段精细使用 SM 层、GPU 层、系统层内存一致性模型控制内存序,避免不必要的性能损失,同时还保证了传输的正确性。
针对 KVCache 传输,自研了一套基于 RDMA 的传输库,部署简单轻量,仅需基础的 RDMA 运行环境即可使用。此传输库支持 NVIDIA GPU,也支持昆仑芯 XPU。为了实现更好的性能,FastDeploy 中的实现与现有的解决方案不同,包括减少 CQE 数量和支持 PCIe Relaxed Ordering。在 Mellanox ConnectX-7 400G 网卡上测试,多压力线程场景下,FastDeploy 中的实现和 Mooncake 实现都能够充分的利用网卡带宽,达到接近网卡硬件理论极限的传输性能。单压力线程测试,与 Mooncake 传输引擎相比,性能提升 1.1 倍到 6.9 倍。ERNIE-4.5-300B-A47B 模型经过 W4A8 量化、KVCache 量化、通信优化、KV Cache 传输优化、MTP 投机解码推理等优化,输入 2K 输出 400 的数据集, 在 H800 硬件上保持 TPOT 50ms,输入/输出 TPS 高达 56K/21K,相比 ERNIE 4.5 技术报告中输出 TPS 再提升 17%。
实时负载感知、分布式负载均衡调度
通常推理任务的输入长度不同,输出长度也和实际的推理任务相关,无法提前确定。当前面向负载进行调度的开源实现方案一般基于 round robin 或者输入长度进行调度,无法真正保证推理集群动态输出时的全局负载均衡。FastDeploy 基于专用缓存服务器实现了实时感知全局负载、分布式负载均衡调度策略,无需单独部署,直接通过启动参数开启,可以进一步优化集群吞吐和 TTFT 指标。
- PD 混合部署场景下,调度器基于推理实例主动拉取+Work Stealing 策略进行负载均衡,每个推理实例在缓存拥有一个任务队列,集群中的空闲节点会窃取高负载节点的任务进行推理,可以解决集群中的负载长尾问题,提升服务整体性能表现。
- PD 分离场景下,调度器实现为分布式调度器,推理实例通过缓存注册实例信息并周期性上报实时负载来更新存活状态,调度器通过缓存实时感知集群负载。调度过程中,首先根据推理请求的输入 token 数量来动态划定低负载节点集合,然后从中随机选择一个节点进行调度,这样可以缓解一个同步周期内不同的调度器将请求调度到同一实例上引起的负载波动。
多硬件推理部署
目前开源社区的大模型部署工具大多针对 NVIDIA GPU 和 AMD GPU 提供支持,而 FastDeploy 除了充分考虑 NVIDIA GPU 的优化特性外,充分考虑多硬件的部署需求:提供了 FastDeploy 硬件适配层,具备屏蔽不同硬件间的差异、统一模型调用接口、高效适配多种设备后端、Kernel 支持 CUDA/Triton/C++多种不同实现。目前已支持昆仑芯 P800、天数 BI-V150、海光 K100AI、燧原 S60 等众多硬件的高性能推理(具体用法请见后文示例)。
开始使用 FastDeploy 2.0
本地离线推理示例
from fastdeploy import LLM, SamplingParams
sampling_params = SamplingParams(top_p=0.95)
llm = LLM(model="ERNIE-4.5-0.3B")
outputs = llm.chat(messages=[{"role": "user", "content": "把李白的静夜思改写为现代诗"}], sampling_params)
服务化推理部署示例
- 通过一行命令快速启动服务:
python -m fastdeploy.entrypoints.openai.api_server --model baidu/ERNIE-4.5-0.3B-Paddle --max-model-len 32768
- 在服务启动后,即可用以下方式请求服务:
curl -X POST "http://0.0.0.0:8180/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "把李白的静夜思改写为现代诗"}]}'
启动并运行服务后,即可通过 FastDeploy 2.0 中与 OpenAI 兼容的 API,轻松与现有工具和工作流集成。更多详细文档、安装指南和高级配置选项,请参阅 FastDeploy 2.0仓库及文档。
多硬件快速部署示例
以在昆仑芯 P800 部署 ERNIE-4.5-300B-A47B-Paddle 模型为例,通过如下步骤即可快速完成部署:
# 步骤1. 基于预编译镜像创建并进入容器
mkdir Work
cd Work
docker pull ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/fastdeploy-xpu:2.0.0
docker run --name fastdeploy-xpu --net=host -itd --privileged -v $PWD:/Work -w /Work \
ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/fastdeploy-xpu:2.0.0 \
/bin/bash
docker exec -it fastdeploy-xpu /bin/bash
# 步骤2. 基于 ERNIE-4.5-300B-A47B-Paddle 模型启动 OpenAI API 协议兼容服务
export XPU_VISIBLE_DEVICES="0,1,2,3" 或 "4,5,6,7"
python -m fastdeploy.entrypoints.openai.api_server \
--model baidu/ERNIE-4.5-300B-A47B-Paddle \
--port 8188 \
--tensor-parallel-size 4 \
--max-model-len 32768 \
--max-num-seqs 64 \
--quantization "wint4" \
--gpu-memory-utilization 0.9
# 步骤3. 使用 curl 发送示例请求
curl -X POST "http://0.0.0.0:8188/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "Where is the capital of China?"}]}'
更多新硬件高性能推理部署方式,详细请见参考文档。