在AMD MI300X上增强DeepSeek-R1推理能力:调优至7,318 Token/s

image.png

本文编译自  https://rocm.blogs.amd.com/ar...

接前文《解锁 DeepSeek-R1 671B FP8 推理性能:5,921 token/s @ AMD MI300X

我们之前关于这个主题的博客文章   讨论了 DeepSeek-R1 如何在 AMD Instinct™ MI300X GPU 上实现具有竞争力的性能。我们还提供了与 Nvidia H200 GPU 的性能比较和一个简短的演示应用程序来说明实际使用情况。在本博客中,我们将深入探讨如何使用 SGLang 框架、关键内核优化(如 ROCm™ 的 AI Tensor Engine)和超参数调整来帮助实现性能提升。

概览

  • 通过使用最新的 SGLang 框架,与 Nvidia H200 相比,MI300X 实现了 - 在相同延迟下吞吐量提高 2 到 5 倍[ 1 ] - 在相同并发性下吞吐量提高 75% 且延迟降低 60% [ 1 ]。
  • 针对 ROCm 软件 (AITER)内核的 AI Tensor Engine经过优化,可提供 +2X GEMM [ 2 ]、+3X MoE [ 3 ]、+17x MLA 解码[ 4 ]、+14X MHA 预填充**[ 5 ]
  • SGLang服务超参数调优,得益于 MI300X 更大的内存容量,提升了大并发下的吞吐量

DeepSeek-R1 服务基准测试的关键要点

MI300X GPU 通过使用各种优化技术,在总吞吐量与端到端延迟方面全面展示了使用 SGLang 的卓越性能。下图 1 显示,使用 SGLang 框架和关键优化技术,MI300X 在延迟相似的情况下实现了比 NVIDIA H200 高达 5 倍的吞吐量。

扩展性能

图 1. DeepSeek R1 总吞吐量 (tks) 与延迟 (ms) [ 1 ]

如图 2 所示,H200 GPU 可以在单个节点中处理多达 16 个并发请求,令牌间延迟 (ITL) 低于 50 毫秒。我们使用 SGLang 0.4.4.post1 和 flashinfer MLA 库对 Nvidia H200 GPU 上的 SGLang 性能进行了基准测试。由 8 个 GPU 组成的单个 MI300X 节点可以处理多达 128 个并发请求,同时将令牌间延迟 (ITL) 保持在 50 毫秒以下,这表明 MI300X 具有更高的用户容量来完成响应,而不会影响用户体验。

注意:将分块预填充大小参数设置为 131,072 可启用输入序列的单批处理,但这可能会导致非常大的输入序列出现内存不足 (OOM) 错误。减少分块预填充大小可实现分批预填充缓存计算,从而更好地利用模型的总上下文长度预算。然而,这会增加解码延迟,因为必须以较小的批次处理输入并在解码期间检索。鼓励读者针对其特定用例优化此参数。

扩展性能

图 2. DeepSeek R1 在 50 毫秒内实现更高的并发性 Token 间延迟限制[ 1 ]

关键优化

优化技术使开发人员能够显著提高在 GPU 上运行的应用程序的性能,充分利用并行处理的潜力并消除内存瓶颈。AMD AI Tensor Engine for ROCm (AITER) 是一个集中式存储库,其中充满了高性能 AI 运算符,旨在加速各种 AI 工作负载。

  • ROCm 人工智能张量引擎 (AITER)

AITER 是一个全新的高性能开源 AI 算子库。它提供 Python 和 C++ API,可轻松集成到 SGlang、vLLM 和其他自定义框架中。AITER 优化了以下 DeepSeek V3/R1 内核,以在 MI300X GPU 上实现显著提升,以便用户使用该库体验到显著的性能提升。- AITER 块级 GEMM(最高提升 2 倍)- AITER 块级融合 MoE(最高提升 3 倍)- AITER MLA 用于解码(最高提升 17 倍)- AITER MHA 用于预填充(最高提升 14 倍)

  • Hyperparameter 参数调整

当运行具有大量线程(例如 128 个或更多)的程序时,系统会因预填充吞吐量缓慢而面临瓶颈。我们发现使用更高的  chunked_prefill_size 值 可以加速预填充阶段,但代价是消耗更多的 VRAM,如图 3 所示。

扩展性能

图 3. DeepSeek R1 在 SGLang 上进行超参数调整后总吞吐量 (tks) 更高[ 1 ]

如何重现基准

现在让我们在您的系统上重现相同的性能提升,并将相同的技术应用到您的应用程序中,以在 MI300X GPU 上获得最佳性能。

以下说明假设用户已经下载了模型。

注意:用于复制 MI300X 基准的图像是上游预演版本。此版本中的优化和性能增强预计将包含在即将发布的  lmsysorg 上游生产版本中。

带有 SGLang 的 AMD Instinct MI300X GPU

  1. 设置相关环境变量并启动 AMD SGLang 容器。
docker pull rocm/sgl-dev:upstream_20250312_v1
export MODEL_DIR=<DeepSeek-R1 saved_path> 
docker run -it \
    --ipc=host \
    --network=host \
    --privileged \
    --shm-size 32G \
    --cap-add=CAP_SYS_ADMIN \
    --device=/dev/kfd \
    --device=/dev/dri \
    --group-add video \
    --group-add render \
    --cap-add=SYS_PTRACE \
    --security-opt seccomp=unconfined \
    --security-opt apparmor=unconfined \
    -v $MODEL_DIR:/model \    rocm/sgl-dev:upstream_20250312_v1

2. 启动 SGLang 服务器。

python3 -m sglang.launch_server \
    --model \model \
    --tp 8 \
    --trust-remote-code \
    --chunked-prefill-size 131072 \
    --enable-torch-compile \
    --torch-compile-max-bs 256 &

3. 针对用户定义的并发值和所需参数运行 SGLang 基准服务脚本。

# Run after “The server is fired up and ready to roll!”
concurrency_values=(128 64 32 16 8 4 2 1)
for concurrency in "${concurrency_values[@]}"; do
python3 -m sglang.bench_serving \
    --dataset-name random \
    --random-range-ratio 1 \
    --num-prompt 500 \
    --random-input 3200 \
    --random-output 800 \    --max-concurrency "${concurrency}"done

注意:使用 torch 编译标志将导致服务器启动时间更长

带有 SGLang 的 NVIDIA H200 GPU 

  1. 设置相关环境变量并启动 NVIDIA SGLang 容器。
docker pull lmsysorg/sglang:v0.4.4.post1-cu125
export MODEL_DIR=<DeepSeek-R1 saved_path> 
docker run -it \
    --ipc=host \
    --network=host \
    --privileged \
    --shm-size 32G \
    --gpus all \
    -v $MODEL_DIR:/model \
    lmsysorg/sglang:v0.4.4.post1-cu125

2. 启动 SGLang 服务。

export SGL_ENABLE_JIT_DEEPGEMM=1
python3 -m sglang.launch_server \
    --model \model \
    --trust-remote-code \
    --tp 8 \
    --mem-fraction-static 0.9 \
    --enable-torch-compile \
    --torch-compile-max-bs 256 \
    --chunked-prefill-size 131072 \
    --enable-flashinfer-mla &

3. 针对用户定义的并发值和所需参数运行 SGLang 基准服务脚本。

# Run after “The server is fired up and ready to roll!”
concurrency_values=(128 64 32 16 8 4 2 1)
for concurrency in "${concurrency_values[@]}"; do
python3 -m sglang.bench_serving \
    --dataset-name random \
    --random-range-ratio 1 \
    --num-prompt 500 \
    --random-input 3200 \
    --random-output 800 \
    --max-concurrency "${concurrency}"done

总结

本博客向您展示了如何利用 SGLang 框架、AMD 的 ROCm AI 张量引擎 (AITER) 和有针对性的超参数调整,在 AMD Instinct™ MI300X GPU 上使用 DeepSeek-R1 实现突破性的推理性能。我们展示了 MI300X 如何以高达 5 倍的吞吐量和显著降低的延迟超越 Nvidia 的 H200,尤其是在高并发工作负载下。我们展示了核心内核优化(包括 GEMM、MoE、MLA 解码和 MHA 预填充)如何实现重大性能提升,同时调整参数(如 chunked_prefill_size)如何增强吞吐量扩展。我们还提供了分步基准测试说明,以帮助您复制我们的发现,展示 MI300X 高效服务大规模机器学习模型的优势

未来的 AMD ROCm 软件版本将推出更多优化。我们期待进一步的性能提升,包括但不限于:

  • 专家并行性 (EP)
  • 预填充和解码分解
  • 推测解码

立即尝试

从 Docker hub 下载预先构建的 SGLang docker 容器  ,并按照此处的说明开始使用 MI300X GPU: sgl-project/SGLang。

资源

免责

第三方内容由拥有该内容的第三方直接授权给您,而非由 AMD 授权给您。所有链接的第三方内容均“按原样”提供,不提供任何形式的担保。使用此类第三方内容完全由您自行决定,在任何情况下,AMD 均不对您因任何第三方内容而承担任何责任。您承担所有风险,并对因使用第三方内容而可能产生的任何损害承担全部责任。

Image

最后再补充一款在国内可以买到的,正常包含保修服务的 AMD CPU+AMD GPU 服务器,与 MI300X 是接近型号,大家可以脑补下,或者在《3U 8 卡:对 AI 推理服务器意味着什么?》中也可以找到答案。

希望对大家有帮助:)

[ 1 ](一,二,三,四,五)

平均而言,配置了 AMD Instinct™ MI300X GPU 的系统在运行带有 SGLang 的 DeepSeek R1 时,在相同延迟下可提供 2 至 5 倍的吞吐量,在相同批次大小下,吞吐量比 Nvidia HGX H200 高 75%,延迟降低 60%。测试由 AMD 于 2025 年 3 月 13 日完成,结果可能因配置、使用情况、软件版本和优化而异。

系统配置:
AMD Instinct™ MI300X 平台
系统型号:Supermicro AS-8125GS-TNMR2
CPU:2x AMD EPYC 9654 96 核处理器
NUMA:每个插槽 2 个 NUMA 节点。 NUMA 自动平衡已禁用/内存:2304 GiB(24 DIMM x 96 GiB Micron Technology MTC40F204WS1RC48BB1 DDR5 4800 MT/s)
磁盘:16,092 GiB(4x SAMSUNG MZQL23T8HCLS-00A07 3576 GiB、2x SAMSUNG MZ1L2960HCJR-00A07 894 GiB)
GPU:8x AMD Instinct MI300X 192GB HBM3 750W
主机操作系统:Ubuntu 22.04.4
系统 BIOS:3.2
系统 BIOS 供应商:American Megatrends International, LLC。
主机 GPU 驱动程序:(amdgpu 版本):ROCm 6.3.1

系统配置:
NVIDIA HGX H200 平台
系统型号:Supermicro SYS-821GE-TNHR
CPU:2x Intel Xeon Platinum 8592V 64 核处理器
NUMA:每个插槽 2 个 NUMA 节点。启用 NUMA 自动平衡
内存:3072 GiB(32 DIMM x 96 GiB Micron Technology MTC40F204WS1RC56BB1 DDR5 5600 MT/s)
磁盘:432TiB(16 x 27TiB SOLIDIGM SBFPF2BU307T)
GPU:8x NVIDIA Hopper H200 141GB HBM 700W
主机操作系统:Ubuntu 22.04.5
系统 BIOS:2.1
系统 BIOS 供应商:American Megatrends International, LLC。
主机 GPU 驱动程序:Cuda 12.5

[ 2 ]

平均而言,配置了 AMD Instinct™ MI300X GPU 的系统表明,AITER 块级 GEMM 可将性能提升 2 倍,从而显著加快一般矩阵乘法任务。AMD 于 2025 年 3 月 11 日进行测试,结果可能因配置、使用情况、软件版本和优化而异。

系统配置:
AMD Instinct™ MI300X 平台:
系统型号:Supermicro GPU A+ Server AS - 8125GS-TNMR2
CPU:2x AMD EPYC 9654 96 核处理器(2 个插槽,每个插槽 96 个内核,每个内核 2 个线程)
NUMA 配置:每个插槽 2 个 NUMA 节点
内存:2.3 TiB(24 个 DIMM,4800 mts,96 GiB/DIMM)
磁盘:根驱动器 + 数据驱动器组合:
2x 960GB Samsung MZ1L2960HCJR-00A07
4x 3.84TB Samsung MZQL23T8HCLS-00A07
GPU:8x AMD MI300X 192GB HBM3 750W
主机操作系统:带有 Linux 内核的 Ubuntu 22.04.4 LTS 5.15.0-116-generic。
系统 BIOS:3.2
系统 BIOS 供应商:American Megatrends International, LLC。
主机 GPU 驱动程序(amdgpu 版本):6.10.5

[ 3 ]

平均而言,配置了 AMD Instinct™ MI300X GPU 的系统显示 AITER 块级融合 MoE 可将性能提升 3 倍,从而优化混合专家 (MoE) 操作的效率。AMD 于 2025 年 3 月 11 日进行测试,结果可能因配置、使用情况、软件版本和优化而异。

系统配置:
AMD Instinct™ MI300X 平台
系统型号:Supermicro AS-8125GS-TNMR2
CPU:2x AMD EPYC 9654 96 核处理器
NUMA:每个插槽 2 个 NUMA 节点。 NUMA 自动平衡已禁用
内存:2304 GiB(24 个 DIMM x 96 GiB Micron Technology MTC40F204WS1RC48BB1 DDR5 4800 MT/s)
磁盘:16,092 GiB(4x SAMSUNG MZQL23T8HCLS-00A07 3576 GiB、2x SAMSUNG MZ1L2960HCJR-00A07 894 GiB)
GPU:8x AMD Instinct MI300X 192GB HBM3 750W
主机操作系统:Ubuntu 22.04.4
系统 BIOS:3.2
系统 BIOS 供应商:American Megatrends International,LLC
主机 GPU 驱动程序:(amdgpu 版本):ROCm 6.3.1

[ 4 ]

平均而言,配置了 AMD Instinct™ MI300X GPU 的系统表示,AITER MLA 解码可提供 17 倍的性能提升,从而提高解码效率。AMD 于 2025 年 3 月 11 日进行测试,结果可能因配置、使用情况、软件版本和优化而异。

系统配置:
AMD Instinct™ MI300X 平台
系统型号:Supermicro GPU A+ Server AS - 8125GS-TNMR2
CPU:2x AMD EPYC 9654 96 核处理器(2 个插槽,每个插槽 96 个内核,每个内核 2 个线程
NUMA 配置:每个插槽 2 个 NUMA 节点
内存:2.3 TiB(24 个 DIMM,4800 mts,96 GiB/DIMM)
磁盘:根驱动器 + 数据驱动器组合:
2x 960GB Samsung MZ1L2960HCJR-00A07
4x 3.84TB Samsung MZQL23T8HCLS-00A07
GPU:8x AMD MI300X 192GB HBM3 750W
主机操作系统:带有 Linux 内核的 Ubuntu 22.04.4 LTS 5.15.0-116-generic
系统 BIOS:3.2 \ 系统 BIOS 供应商:American Megatrends International, LLC。
主机 GPU 驱动程序(amdgpu 版本):6.10.5

[ 5 ]

平均而言,配置了 AMD Instinct™ MI300X GPU 和 AITER MHA 进行预填充的系统性能提升了 14 倍,提高了预填充阶段的多头注意力 (MHA) 性能。AMD 于 2025 年 3 月 11 日进行了测试,结果可能因配置、使用情况、软件版本和优化而异。

系统配置:
AMD Instinct™ MI300X 平台
系统型号:Supermicro GPU A+ Server AS - 8125GS-TNMR2
CPU:2x AMD EPYC 9654 96 核处理器(2 个插槽,每个插槽 96 个内核,每个内核 2 个线程
NUMA 配置:每个插槽 2 个 NUMA 节点
内存:2.3 TiB(24 个 DIMM,4800 mts,96 GiB/DIMM)
磁盘:根驱动器 + 数据驱动器组合
2x 960GB Samsung MZ1L2960HCJR-00A07 \ 4x 3.84TB Samsung MZQL23T8HCLS-00A07 \ GPU:8x AMD MI300X 192GB HBM3 750W \ 主机操作系统:带有 Linux 内核的 Ubuntu 22.04.4 LTS 5.15.0-116-generic。
系统 BIOS:3.2
系统 BIOS 供应商:American Megatrends International, LLC。
主机 GPU 驱动程序(amdgpu 版本):6.10.5

扩展阅读:《企业存储技术》文章分类索引更新(微信公众号合集标签)

END

作者:Peng Sun等
原文:企业存储技术

推荐阅读

欢迎关注企业存储技术极术专栏,欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
5620
内容数
281
关注存储、服务器、图形工作站、AI硬件等方面技术。WeChat:490834312
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息