解锁DeepSeek-R1 671B FP8推理性能

本文编译自 https://rocm.blogs.amd.com/artificial-intelligence/DeepSeekR1_Perf/README.html

image.png

在本博客中,我们探讨了 DeepSeek-R1 如何在 AMD Instinct™ MI300X GPU 上实现竞争性能,以及与 H200 的性能比较和一个展示实际使用情况的简短演示应用程序。通过利用 MI300X,用户可以在单个节点上以令人印象深刻的效率部署 DeepSeek-R1 和 V3 模型。在短短两周内,使用 SGLang 进行的优化已将推理速度提高了 4 倍,确保了高效的扩展、更低的延迟和优化的吞吐量。MI300X 的高带宽内存 (HBM) 和计算能力支持执行复杂的 AI 工作负载,处理更长的序列和要求苛刻的推理任务。随着 AMD 和 SGLang 社区推动持续优化(包括融合的 MoE 内核、MLA 内核融合和推测解码),MI300X 将提供更强大的 AI 推理体验。

概览

  • DeepSeek-R1因其深度推理能力而受到广泛关注,在语言建模性能基准测试中可与顶级闭源模型相媲美。
  • AMD Instinct MI300X GPU可以在单个节点中为新的 DeepSeek-R1 和 V3 模型提供具有竞争力的性能。
  • 与 MI300X 上最初使用时的性能相比,用户使用 SGLang 后性能提升了 4 倍。未来几周内还将进行更多优化。
  • 思维链 (CoT)受益于 MI300X GPU 增加的内存带宽和容量优势,使其能够更快、更高效地访问大内存,从而有效地支持现实世界 AI 应用中更长的序列长度。

DeepSeek 模型部署挑战

虽然大规模部署的需求比以往任何时候都强烈,但实现最佳推理性能也带来了重大的技术挑战。Deepseek-R1 是一个大型模型,具有超过 640 GB 的参数。即使以 FP8 精度进行训练,也不可能将其放入 8 个 NVIDIA H100 GPU 的单个节点中。此外,多头潜在注意力 (MLA) 和混合专家 (MoE) 架构需要高度优化的内核,以确保高效扩展和利用自定义优化。最后,调整 FP8 GEMM 内核以支持分块量化对于最大化吞吐量和性能至关重要,因此调整这些内核对于有效执行至关重要。

在 MI300X 上利用 SGLang 

SGLang 是一个高性能的开源 LLM 和 VLM 服务框架。它提供高效的运行时、广泛的模型支持和活跃的社区,并在整个行业中得到越来越多的采用。AMD 是 SGLang 的主要贡献者,并一直与社区密切合作,以在 AMD Instinct GPU 上实现和优化 LLM 推理。为了在 MI300X 上提供最佳的开箱即用体验,SGLang 发布了预构建的 docker 镜像和 docker 文件。这些资产可用于生产部署,并可作为根据用例特定要求定制自定义镜像的起点。

服务基准测试的关键要点

以下是 SGLang 在 Instinct MI300X 上进行基准测试的一些关键要点:

  • 在短短两周内,我们使用 671B DeepSeek-R1 FP8 模型(而不是较小的提炼版本)实现了高达 4 倍的推理性能提升,并且所有优化都上传到 SGLang(图 1)。
  • DeepSeek-R1 和 V3 的性能已针对 MI300X 进行了高度优化,以利用其强大的计算能力和大容量 HBM 内存容量。

image.png

图 1:总吞吐量(tks)[ 1 ]

  • 对于需要低延迟的聊天应用程序等在线推理用例,单个 Instinct MI300X 节点(8 个 GPU)上的 SGLang 服务基准测试表现出强大的性能,即使并发请求多达 32 个,也能将每个输出令牌的时间 (TPOT) 保持在 50 毫秒以下。对于离线工作负载,可以使用更大的并发设置来最大化吞吐量。
  • 从图 2 中我们可以看到,对于最大并发数从 1 到 32 的范围,性能主要受内存限制,而对于最大并发数在 32 到 64 之间,性能则转为受计算限制。

../../_图像/dsf2.png

图 2:Deepseek R1 总吞吐量 (tks) 与延迟 (ms) [ 2 ]

如何重现基准

下面您将找到 MI300X 和 H200 的说明。以下说明假定模型已下载。

在 MI300X 上

  1. 下载 Docker 容器:
docker pull rocm/sglang-staging:20250212
  1. 运行 docker 容器:
docker run -d -it --ipc=host --network=host --privileged --device=/dev/kfd --device=/dev/dri --device=/dev/mem --group-add render --security-opt seccomp=unconfined -v /home:/workspace rocm/sglang-staging:20250212

docker exec -it <container_id> bash
  1. 运行服务基准测试:
HSA_NO_SCRATCH_RECLAIM=1 python3 -m sglang.launch_server --model/workspace/models/DeepSeek-R1/ --tp 8 --trust-remote-code

运行客户端请求

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

在 H200 上

  1. 下载 Docker 容器:
dockerpulllmsysorg/sglang:v0.4.2.post3-cu125
  1. 运行 docker 容器:
docker run -d -it --rm --gpus all --shm-size 32g -p 30000:30000 -v /home:/workspace --ipc=host lmsysorg/sglang:v0.4.2.post4-cu125 
docker exec -it <container_id> bash
  1. 要运行服务基准,您可以使用与 MI300x 相同的 bash 命令:
HSA_NO_SCRATCH_RECLAIM=1 python3 -m sglang.launch_server --model/workspace/models/DeepSeek-R1/ --tp 8 --trust-remote-code

运行客户端请求:

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

请查看下面的演示

下面的演示展示了一个简单的聊天应用程序,它在 MI300X 服务器上运行 DeepSeek-R1 的实时推理。从这个演示中,很容易看出,对于类似的用例,可以轻松实现可接受的延迟和吞吐量。

image.png

图 3:在 MI300X 服务器上运行 DeepSeek-R1 的实时演示聊天应用程序

我们下一步要怎么走

本博客重点介绍了 AMD 与 SGLang 合作的承诺,即在 Instinct MI300X GPU 上提供 DeepSeek-R1 的最佳开箱即用用户体验。即将推出更多优化,预计将进一步提高性能,包括但不限于:

  • 融合 MoE 内核优化
  • MLA 内核融合
  • 集体沟通增强 (Collective communication enhancement)
  • 数据并行 (DP) 和专家并行 (EP)
  • 预填充和解码分解
  • 推测解码

立即尝试

要在 MI300X 上开始使用 DeepSeek-R1 和 V3,请先从 Dockerhub 中提取 预构建的 SGLang docker 容器
https://hub.docker.com/layers...

然后按照 https://github.com/sgl-projec...  的说明进行操作

总结

DeepSeek-R1 在 AMD Instinct™ MI300X GPU 上提供顶级推理性能。MI300X 的高带宽内存和计算能力支持高效扩展、更低延迟和更长序列处理。AMD 与 SGLang 合作,继续通过 MoE 内核优化、MLA 融合和推测解码来提高性能。立即开始使用最新的 SGLang docker 容器,并在 MI300X 上释放 DeepSeek-R1 的全部潜力。

更多资源

尾注

[1] 图 1 代表 AMD 于 2025 年 2 月使用 DeepSeek R-1 FP8 LLM 在两周内进行的推理性能测试的结果,在单节点 AMD Instinct MI300X GPU(8 个 GPU)上运行 SGLang 0.4.2 服务基准,并发性高达 16 个外观,服务时间少于 50 毫秒 TPOT,使用批次大小 1、2、4、8、16、32、64、128;以及 3,200 个输入令牌和 800 个输出令牌。配置详情:Supermicro AS-8125GS-TNMR2 配备 2P AMD EPYC 9654 96 核处理器、8x AMD Instinct MI300X(192GB,750W)GPU、Ubuntu 22.04.4 和 ROCm 6.3.1、1536 GiB(24 个 DIMMS、4800 mts、64 GiB/DIMM、24 个通道 - 1 个 DIMM/通道)、8x 3840GB Micron 7450 SSD、SBIOS 1.8 vs. Supermicro AS-8125GS-THNR 配备 2P Intel Xeon Platinum 8592V 64 核处理器、8x NVIDIA Hopper H200(141GB,700W)GPU、Ubuntu 22.04.5 和 CUDA 12.5, 2048 GiB(16 个 DIMMS、4800 mts、128 GiB/DIMM、16 个通道 - 1 DIMM/通道)、8x 3840GB Micron 7450 SSD、SBIOS 1.8 实际结果将根据硬件配置、软件版本、驱动程序和优化(MI300-076)而有所不同。

[2] 此处的图 2 表示性能“快照”,其结果基于 AMD 于 2025 年 2 月进行的开箱测试(SGLang 后端未进行超参数调整),使用 DeepSeek R-1 FP8 LLM,运行 SGLang 0.4.2 服务基准来测量 AMD Instinct MI300X GPU 与 NVIDIA H200 GPU 的总吞吐量(tks)与延迟(ms)。配置详情:Supermicro AS-8125GS-TNMR2 配备 2P AMD EPYC 9654 96 核处理器、8x AMD Instinct MI300X(192GB,750W)GPU、Ubuntu 22.04.4 和 ROCm 6.3.1、1536 GiB(24 个 DIMMS、4800 mts、64 GiB/DIMM、24 个通道 - 1 个 DIMM/通道)、8x 3840GB Micron 7450 SSD、SBIOS 1.8 vs. Supermicro AS-8125GS-THNR 配备 2P Intel Xeon Platinum 8592V 64 核处理器、8x NVIDIA Hopper H200(141GB,700W)GPU、Ubuntu 22.04.5 和 CUDA 12.5, 2048 GiB(16 个 DIMMS、4800 mts、128 GiB/DIMM、16 个通道 - 1 个 DIMM/通道)、8x 3840GB Micron 7450 SSD、SBIOS 1.8 实际结果将根据硬件配置、软件版本和优化而有所不同。实际结果将根据硬件配置、软件版本、驱动程序和优化而有所不同(MI300-077)。

Image

在英文原文的底部还有一条评论,算不算彩蛋:)

扩展阅读:《DeepSeek-R1 671B 最小化部署实验:CPU+192GB 内存
在 Azure MI300X GPU 虚机上运行 DeepSeek-R1
MLPerf Llama 大模型推理测试:一款 GPU 独战 NVIDIA 群雄

END

作者:Andy Luo
原文:企业存储技术

推荐阅读

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