Raccoon Liu : 腾讯大模型推理负责人
朱文熙 : 腾讯开悟平台研发负责人
王猛 : NVIDIA 高级加速计算专家
模型能力强
训练开销低
开源免费模型重构生态
技术架构创新
部署的挑战
DS(DeepSeek)证明了基础模型创新对应用有极强的拉动作用。
DS爆火后,司内AI应用需求激增
混元针对DS做定向优化,提供业内性价比最高的DS推理服务
性能优化目标
优化路径与成果
PD 模式 -> 202 QPM
IFB 模式 -> 137 QPM
结论
PD分离的核心思想是将Prefill(提示处理)和Decode(生成)两个阶段分开部署和优化。
TPOT = Decode总时长 / Decode长度,可在Decode阶段组合更大的BatchSize。PD系统本身不产生性能提升,精细化的分阶段优化方案是性能提升源泉。
PD架构支持多种并行方式,以应对不同阶段的瓶颈。
Tensor Parallel (张量并行)
Expert Parallel (专家并行)
Data Parallel (数据并行)
针对Prefill和Decode阶段的不同瓶颈,采用不同的混合并行策略。
下图展示了mPnD系统的整体架构。系统分为接入层、推理协调器(Inference Coordinator)、预填充节点(Prefill Node)、解码节点(Decode Node)以及远程KV缓存中心(Remote KVCache Center)。请求流程、缓存传输和控制信息在各组件间流动。
性能表现:
右图比较了PD与非PD(non-PD)的性能。结果显示,在有效ITL(in-flight tokens limit)区间,PD的吞吐明显更优,大幅提升了Goodput。在20~25 tokens/s的用户请求区间,PD有效提升了30~40%的Goodput。
如下表所示,从EP=8(并发128)增加到EP=16(并发256),虽然MoE部分的耗时从37.86ms下降到36.79ms,但整体(All)耗时从71.31ms显著增加到95.64ms。
结论与原因分析:
- 结论:MoE-Gemm部分的耗时下降符合预期。
- 原因:虽然显存带宽压力降低,但当矩阵维度M小于32时,耗时基本不变。右侧表格详细列出了不同参数下gemm1和gemm2的性能指标,验证了这一判断。
解决方案:DeepEP + EPLB (Large-EP哼哈二将)
下图展示了结合DeepEP和EPLB的Transformer Layer架构,其中MoE Layer采用320路专家并行。通过采用DeepEP的Dispatch+Combine通信模式,可以实现注重处理时延、小消息友好。
本页介绍了DeepEP在TRMT GPU通信优化基座上的应用,旨在提升大规模专家并行(Large-EP)场景下的通信效率。
本页介绍了EPLB(Expert Parallelism Load Balancer),一个用于解决MoE中专家负载不均问题的负载均衡器。
下图展示了EPLB的工作原理,负载均衡器(Load Balancer)将不同的专家(Expert)动态分配到各个GPU上,以实现负载均衡。右侧的两个图表直观地对比了负载均衡前后的效果,均衡后各Layer的负载更加均匀。
本页对PD(PagedAttention with Decentralization) serving方案进行了总结。
性能优化总结
PD优势
PD劣势
本节介绍In-flight-Batching (IFB) 技术。
In-flight-Batching(IFB)简介
IFB通过动态聚合请求,显著提升硬件利用率与吞吐量,避免了因请求长度差异导致的资源浪费。下图对比了静态批处理(Static batching)和动态批处理(In-flight-Batching)的差异,后者能更有效地填充计算资源。
IFB部署DeepSeek-R1的特点
IFB部署优势
下图展示了IFB中的Prefill阶段和Decode阶段。
模型的核心是Transformer Block,其中包含了Feed-Forward Network和Multi-Head Latent Attention (MLA)。下图展示了其详细结构,包括Router和Shared Expert的机制。
deepgemm.grouped_gemm_fp8。Flash-MLA 和 deepgemm.gemm_fp8。参考资料: https://arxiv.org/pdf/2405.04434
本页详细介绍了DeepGemm相对于TRT-LLM旧版实现的优化点。
DeepGemm优化点
性能指标
集成到TRT-LLM
右侧图表展示了DeepGemm在不同配置下的性能表现。
SwapAB
(AB)^T = B^T A^T。性能结果
下图展示了SwapAB的原理和性能测试结果。
MLA (多头潜在注意力机制)
Flash-MLA
下图展示了不同注意力机制的对比以及Flash-MLA的流水线工作示意图。
参考资料: https://arxiv.org/pdf/2405.04434
参考资料: https://github.com/deepseek-ai/FlashMLA
FP8 Flash-MLA 性能优势
支持的功能
性能指标
下表展示了不同量化策略在多个基准测试上的表现,右侧图表为性能对比。
get_mla_metadata是Flash-MLA的内置核心之一,用于计算沿k序列长度(seqlen)维度分区的flash decoding元数据。get_mla_metadata会为每个注意力层引入额外延迟,而实际所需每层metadata的seqlen和blocksize都相同,所需的metadata可以复用。get_mla_metadata,并将元数据传递给注意力算子。下图展示了优化前后的流程对比以及端到端加速效果。
Hopper-style Flash-MHA
性能优势
结论
下图对比了A100和H100架构下,MHA的数据传输方式,并展示了Hopper-style Flash-MHA的端到端性能提升。
Sparse Attention
模型效果人工评估:
参考MInference并在Triton上开发了适配的MHA相关内核。
性能指标
seq_len为32768时,latency从2.501s降至0.310s,加速比达到8.08x。参考论文: Minference 1.0: Accelerating Pre-filling for Long-Context LLMs via Dynamic Sparse Attention (NeurIPS'24 spotlight, FoMo @ ICML'24)
显存空间优势
显存带宽优势
量化损失
量化改进
结果
Kernel介绍
Pre-Quant
Expand-Row
存在问题
优化手段
性能结果
参考资料:DeepSeek-V3 Technical Report https://arxiv.org/pdf/2412.19437
Vallina模式
Eagle模式
MTP接受率
Relaxed acceptance
Strict acceptance
Relaxed acceptance
Decoding阶段有严重的 kernel launch bound问题
结果导致kernel launch之间存在较大间隙。
然而,即使使用CUDA Graph,我们仍需在每个decoding步骤后进行同步。
解决方案是将target model + verification logic + draft model 合并到一个CUDA Graph中,并在当前步骤仍在运行时启动下一解码步骤。
The credit for the overlap scheduler idea belong to the SGLang team: https://lmsys.org/blog/2024-12-04-sglang-v0-4/
优化目标
观察现象
解决办法
A guide on good usage of non_blocking and pin_memory() in PyTorch
相比于TensorRT backend,PyTorch的显存管理更加灵活,比较隐晦和难以分析。
更精准地计算kv-cache memory
Chunked MoE
修复显存泄漏
复用显存
TopK算子融合
优化Quantize kernel
使用Grouped RMSNorm
使用Ring AllReduce 替代 Tree Allreduce
设置冗余CUDA stream来overlap modules
性能优化总结
IFB优势
IFB劣势
PD场景
IFB场景
TODO