当前位置: 首页 > news >正文

DeepSeek 大型 MoE 模型大规模部署压测学习

https://lmsys.org/blog/2025-05-05-large-scale-ep/

以上是对文章《Deploying DeepSeek with PD Disaggregation and Large-Scale Expert Parallelism on 96 H100 GPUs》的中文总结,以及对您提到的几个术语(MLA、MoE、SGLang、VLLM、EP 和 DP)的说明。


📄 文章中文总结

这篇由 SGLang 团队于 2025年5月5日发布的技术博客,展示了如何采用 SGLang 框架,在 12 个节点(共 96 张 NVIDIA H100 GPU,Atlas Cloud)上,使用预填充-解码拆分(Prefill‑Decode Disaggregation)大规模专家并行(Expert Parallelism,EP),成功复现 DeepSeek 的推理效率 ([lmsys.org][1])。

  • 性能表现:每节点处理输入 2000 token 时,达到 52.3k 输入 token/s22.3k 输出 token/s,几乎与官方 DeepSeek 相当,且每输出百万 token 的成本仅约 $0.20,仅为官方 Chat API 费用的五分之一 ([lmsys.org][1])。
  • 优化手段:文章深入讲解了并行策略(MLA attention、MoE expert、dense FFN、LM head),并重点介绍了 PD 拆分、DeepEP、DeepGEMM、Two‑Batch Overlap(TBO)、以及专家负载均衡(EPLB)。这些方法有效提升了 GPU 利用率及吞吐量 ([lmsys.org][1])。
  • 开源贡献:所有代码与实验方案均已开源,可复现,自由扩展使用 。

🧠 专业术语解析

MLA(Multi-Head Latent Attention 多头潜在注意力)

一种 attention 机制,用于捕捉复杂输入依赖关系。文章指出在此机制上,采用 DP Attention 进行数据并行以减少 KV 缓存冗余,提高内存效率 ([lmsys.org][1])。

MoE(Mixture of Experts 专家混合模型)

模型中含有多个专家子网络,输入由路由模块分配给部分专家处理,形成“稀疏 FFN”(Sparse FFN)。优势在于计算高效但内存消耗大。文章提出用 Expert Parallelism(EP)将专家参数分散存储在多 GPU 上,并结合 DeepEP 和 EPLB 技术来优化通信与负载均衡 ([lmsys.org][1])。

SGLang

一个高效的 LLM/VLM 推理框架,强调后端与前端协同设计。此次文章展示 SGLang:

  • 支持 PD Disaggregation;
  • 内建 EP、DeepEP、DeepGEMM、TBO、EPLB 等模块;
  • 提供 DisposableTensor、专家负载分析工具等辅助功能 ([lmsys.org][1])。
    SGLang 已成为业内标准部署方案 。

VLLM

虽文章未直接涉及 VLLM,但它是在同类型 LLM 推理框架中常被提及的对标系统。SGLang 团队曾于 2024 年对比并优化深度 remark,显示其性能优于 VLLM 。

EP(Expert Parallelism 专家并行)

一种并行策略,用于将 MoE 中的多个专家分布到不同 GPU 上管理内存压力。配合 DeepEP 通信库,支持两种调度模式:prefill 的高吞吐模式(normal dispatch)和 decode 的低延迟模式(low‑latency dispatch)。PD 拆分机制让这两种模式可并存 ([lmsys.org][1])。

DP(Data Parallelism 数据并行)

不同于 tensor parallelism,DP 复制整模型到多个设备,再并行处理 batch。文章使用它对 attention、FFN、LM Head 进行优化:

  • 在 attention 中避免 KV 缓存复制;
  • 在 dense FFN 中减少通讯与对齐碎片,加速训练与推理 ([lmsys.org][1])。

✅ 总结

技术功能
MLA模型核心注意力机制,配合 DP 优化 KV 内存
MoE稀疏专家网络,允许高效扩展但需加载专家参数
EP专家参数跨设备分布并管理通信模式
DP跨设备复制模型,实现高效 batch 推理
PD 拆分分离 prefill 与 decode 阶段,优化资源利用
DeepEP / DeepGEMM / TBO / EPLB分别负责通信、矩阵计算、批次重叠与专家负载均衡

文章展示了通过这些协同优化,SGLang 在庞大 MoE 模型上达成高效、大规模部署,且成果开源,推动社区共建发展。

bu在这里插入图片描述

基于 LMSYS 在文章《Deploying DeepSeek with PD Disaggregation and Large-Scale Expert Parallelism on 96 H100 GPUs》中展示的内容和实践经验,我们可以设计一套用于评估 大规模 MoE 模型部署性能 的完整测评工具与方案,覆盖:


🔧 一、测评工具(建议组合使用)

工具/库名称功能说明
SGLang推理框架本文核心框架,支持 EP/DP/PD 拆分等
DeepEP高性能专家通信用于优化专家参数的分布式通信
DeepGEMM高效矩阵乘法库替代 PyTorch 默认 GEMM,加速 FFN/MoE
vllm-benchmark推理性能基准工具可用于横向对比 vLLM/SGLang 等
nvprof / Nsight / Nsight SystemsNVIDIA GPU 分析工具分析 GPU 利用率、内存瓶颈等
Prometheus + Grafana系统监控收集节点资源(CPU/GPU/内存/网络)利用率
torch.distributed + NCCL Debug通信调试工具调试 DP/EP 分布式通信问题
日志分析工具(如 ELK)专家分布/调度可视化对 EPLB / 路由行为做统计分析

📋 二、性能测试指标设计

1. Token Throughput(吞吐量)

  • Input Token/s:每秒处理的 prompt token 数;
  • Output Token/s:每秒生成的 token 数;
  • Peak vs Steady-state:观察 warm-up 后是否稳定;
  • 用于判断 PD 拆分 + DeepEP 优化效果。

2. Token Latency(时延)

  • Prefill 时延:测每个 token 编码耗时;
  • Decode 时延:生成阶段每 token 平均耗时;
  • 支持 1-B/4-B/8-B 并发下对比。

3. 资源利用率

  • GPU 利用率(SM/Memory/PCIe/NVLink);
  • Network 带宽(EP 通信);
  • 内存占用(KV 缓存/专家缓存是否爆炸);
  • 是否存在 Load Imbalance(EPLB 调度是否平衡)。

4. 专家调度效率

  • 路由策略命中率(top-k);
  • 有效专家调用比例;
  • 负载均衡偏差(EPLB前后对比);
  • expert collapse(专家频繁未命中)现象。

5. 系统稳定性

  • 并发处理能力(不同并发下是否死锁);
  • 长时间推理稳定性(内存泄漏/通信超时);
  • 多轮推理中错误率(异常 token、重复输出);
  • 异常节点容错测试(例如某 GPU 故障恢复);

✅ 三、测试方案设计(按步骤)

✅ 基础功能验证阶段(1-8 卡小规模)

  1. 部署 SGLang + DeepEP,加载 MoE 模型(如 DeepSeek-MoE);

  2. 验证 PD 拆分是否成功;

  3. 检查每个阶段(prefill/decode)是否绑定正确 GPU 核心;

  4. 分别测试:

    • Dense 模式;
    • MoE 模式;
    • EP+DP 模式对比。

✅ 性能扩展阶段(96 卡大规模)

  1. 固定 batch size,逐步增加 expert 数;

  2. 验证是否触发 DeepEP 的 dispatch 模式切换;

  3. 多组并发设置:

    • 单路(低延迟);
    • 多路并发(高吞吐);
    • 混合(PD 拆分)。
  4. 使用工具收集:

    • Token 吞吐;
    • 时延;
    • GPU utilization;
    • expert 活跃度与分布。

✅ 优化测试阶段

  1. 启用/关闭:

    • EPLB;
    • DeepGEMM;
    • Two‑Batch Overlap(TBO);
    • Memory-Aware Allocation(MAA);
  2. 比较:

    • vLLM baseline vs SGLang;
    • dense vs sparse(同模型)。

📌 附加建议

  • 日志指标建议添加

    • 每轮推理专家调度表;
    • 通信延迟(EP);
    • token queue size(PD Decode);
    • TBO 命中率(prefill-decode 重叠成功率);
  • 推荐数据集:使用 AlpacaEval / MMLU / GSM8K 的部分样本模拟实际对话负载。

  • 自动化评估脚本:编写 eval_runner.py 实现多种并发配置自动跑测,并输出 markdown 表格或 CSV。

http://www.lryc.cn/news/571187.html

相关文章:

  • FlinkCDC-Hudi数据实时入湖原理篇
  • JVM监控的挑战:Applications Manager如何提供帮助
  • Spring Boot集成Kafka全攻略:从基础配置到高级实践
  • 多模态大语言模型演进:从视觉理解到具身智能的技术突破
  • Linux运维新人自用笔记(部署 ​​LAMP:Linux + Apache + MySQL + PHP、部署discuz论坛)
  • 5.安装IK分词器
  • ELK在Java的使用
  • Selenium(选择元素,浏览器/元素操作,等待,页面交互)
  • Windows Python 环境管理终极对比:极简方案 VS 传统方案(仅需 2 个软件实现全流程自动化)
  • Selenium(多窗口,frame,验证码,截图,PO模式)
  • rockx读取单张图片并检测图片内人脸的矩形
  • vite的常用配置
  • 「动态规划::数位DP」统计数字递推 / LeetCode 3352|1012(C++)
  • 线程池(Thread Pool)详解
  • 基于Cesium移动的天空云
  • 【Docker基础】Docker核心概念:命名空间(Namespace)之IPC详解
  • 根据Python模块的完整路径import动态导入
  • 05_MinIO+Java SpringBoot 实现透传代理下载
  • 如何确定驱动480x320分辨率的显示屏所需的MCU主频
  • 为何前馈3DGS的边界总是“一碰就碎”?PM-Loss用“3D几何先验”来解
  • Mac 安装JD-GUI
  • 低轨导航 | 低轨卫星导航PNT模型,原理,公式,matlab代码
  • 软件工程:流程图如何画?
  • Python 爬虫入门 Day 5 - 使用 XPath 进行网页解析(lxml + XPath)
  • springboot使用kafka
  • Jmeter的三种参数化方式详解
  • web前端开发核心基础:Html结构分析,head,body,不同标签的作用
  • Java内存模型与线程
  • Anaconda 使用
  • 力扣经典算法篇-17-反转字符串中的单词(逆序遍历,数组分割,正则表达式)