编者注:几个月前我写过一篇《MLPerf Llama 大模型推理测试:一款 GPU 独战 NVIDIA 群雄》,随着最新一期的 MLPerf Inference: Datacenter 5.0 榜单更新,基本上没太多意外。
AMD 新发布的 MI325X GPU 紧咬着 NVIDIA H200。CUDA 护城河、B200 在短期内的优势还在。
具体到对某个 LLM 模型推理的优化,无论 Llama 还是 DeepSeek R1/V3,我看到 AMD 持续投入了不少调优工作,从《解锁 DeepSeek-R1 671B FP8 推理性能:5,921 token/s @ AMD MI300X》,到《在 AMD MI300X 上增强 DeepSeek-R1 推理能力:调优至 7,318 Token/s》都有提供 Docker 容器的下载和测试复现方法。
还有个问题,就是 MI300X 和 MI325X 在 xx 名单上,在这种情况下分享一些调优方法或者说要点,我觉得应该更有意义——这就是本文的目的。因为许多朋友都知道,就像 H20 那样,AMD Instinct 也有一款针对国内定制的版本。
以下内容翻译自 rocm.blogs.amd.com,来源链接见文末。
AI 转型及其对 GenAI、LLM、模型推理与训练新进展的不断增长的需求,强调了对创新 GPU 架构和产品的加速设计和交付的需求。了解 AI 模型在这些 GPU 上的性能对于 AI 部署和采用的持续进步至关重要。然而,由于 AI 模型固有的复杂性以及可能的部署和任务的多样性,对其进行基准测试具有挑战性。从跨行业的角度来解决这个问题,最好有一个可在不同平台和供应商之间进行比较的基准。MLPerf 就是这样一个基准测试,由跨行业 MLCommons 联盟(https://mlcommons.org)创建,AMD 是该联盟的创始成员之一。
MLPerf Inference:Datacenter v5.0 基准测试结果(https://mlcommons.org/benchma...)于 2025 年 4 月 2 日发布,AMD 再次取得了具有竞争力的成绩,并首次在 AMD Instinct MI325X GPU 上发布。如果您有兴趣使用我们的步骤运行基准测试,请查看我们关于重现 AMD MLPerf Inference v5.0 提交的博客(https://rocm.blogs.amd.com/ar...)。在此博客中,我们为您提供了优化的幕后视图:您将深入了解我们最新的 MLPerf v5.0 结果,并发现我们的 Llama 2 70B 和 Stable-diffusion-XL 推理基准测试背后的高级优化,从量化和通用矩阵乘法 (GEMM) 调整到尖端的 vLLM 调度和平台增强。让我们开始吧!
MI325X 架构
MI325X Instinct GPU 是 AMD Instinct 系列面向现代数据中心的最新 GPU,可提供行业领先的性能和优化的总拥有成本 (TCO)。MI325X 基于第三代 CDNA 3 核心架构、先进的堆叠和 Chiplet 小芯片技术,凭借其改进的矩阵核心技术和 OAM(开放加速器模块)封装中高度精简的计算单元,可提供高吞吐量和效率。AMD Instinct MI325X 平台配备 8 个独立 GPU 和一个 EPYC CPU,是高性能 AI 基础设施不可或缺的组成部分。这款 GPU 提供 256GB 的大容量 HBM3E 内存容量和 6TB/s 的内存带宽,使单个 GPU 能够服务和训练一些最大的模型。随着 AI 需求的增加,MI325X 在各种精度(如 FP16、BF16、FP8 和 INT8)上提供高性能,可用于在各种用例和模型上提供服务、训练和数据分析。借助 AMD ROCm 软件,MI325X 可提高开发人员效率、易用性和开箱即用的生产力,适用于各种流行的行业 AI 框架、性能数学分析、AI 和 HPC 库以及软件包。MI325X GPU 和 MI325X 平台的主要规格如下所示:
Llama 2 70B MLPerf 推理基准测试
Llama 2 70B 已迅速成为 MLPerf Inference 基准套件中最受欢迎的基准测试。它首次在 MLPerf Inference v4.0 中推出,使用了 Llama 系列模型中非常受欢迎的模型。该基准的 MLPerf 参考实现(https://mlcommons.org/2024/03...)提供了完整的基准规范,其中包括模型检查点、数据集以及性能和准确性指标。具体来说,该基准使用 Open Orca Q&A 数据集并测量离线和服务器场景下的性能。前者在一个批次中处理所有样本,而后者是一种在线服务类型,其中查询以符合泊松分布的速率到达,并且需要在指定的延迟约束内进行处理。
ResNet50 历来是最受欢迎的 MLPerf 推理基准,然而,在 MLPerf 推理 v5.0 中,Llama 2 70B 已成为最受欢迎的基准,表明基准测试社区已完全接受大型语言模型。总体而言,Llama 2 70B 已收到来自 16 个组织在封闭类别中的 45 份提交。AMD 已提交了 8xMI325X 服务器的结果,并与四个合作伙伴提交了结果:ASUSTeK、GigaComputing、MangoBoost 和 Supermicro。
优化的 vLLM Docker 镜像
我们在 DockerHub 的 rocm/vllm-dev(https://hub.docker.com/r/rocm...)上提供的 AMD 优化 vLLM Docker 上构建了我们的提交。(我们的提交中使用的是rocm/vllm-dev:nightly_main_20250203
)。这些 Docker 镜像经过高度优化,每周发布一次。它们与带有 BLAS 库的预调 GEMM 解决方案集成,支持 GEMM 形状以推理许多流行的 LLM 模型。
对 vLLM 改进
vLLM 现在支持解码操作的多步调度,以提高效率。调度会引入 CPU 开销,从而降低 GPU 利用率和吞吐量。通过一次调度解码步骤,GPU 可以连续执行前向步骤,而无需等待 CPU 指令,从而通过跨步骤分配开销来有效减少开销。
为了最大限度地提高 vLLM 中的吞吐量,必须调整几个超参数,包括
如上所述的 num_scheduler_steps。此外,max_num_batched_tokens
确定预填充的最大批处理大小,而max_num_seqs
控制解码的最大批处理大小。在服务器场景中,还必须仔细调整 QPS(每秒查询数)以平衡传入和完成的查询,同时满足 TTFT(第一个令牌时间)和 TPOT(每个输出令牌时间)的限制。
调度器变更
vLLM 调度程序是高效 LLM 服务的关键组件。它动态确定是否在任何给定时刻执行某个prefill 或者一个
decode 操作,同时管理可以批量处理的查询数量。这通过优化每秒浮点运算 (FLOPS) 和最大化内存效率直接影响 GPU 性能。
为了提高性能,我们尽可能多地批量处理查询,从而最大限度地减少端到端内核调用的开销并最大化 GPU 吞吐量。在离线场景中,我们始终将批量大小接近最大值 — 预填充为 65K,解码为 2048。在服务器场景中,在遵守 TTFT 约束的同时,当等待预填充的查询数量较少时,我们会避免预填充,从而确保 GPU 的有效利用。
框架优化 - 负载平衡
LLM 服务通常使用多个 GPU 和多个 vLLM 实例来处理用户查询。我们必须将负载均匀地分配到每个 GPU 上,因为负载不平衡会导致严重的排队延迟,并且执行管道比其他 GPU 慢得多,从而导致整体系统吞吐量降低。每个查询的输入序列长度 (ISL) 和输出序列长度 (OSL) 的变化使问题更加复杂。为了解决这个问题,我们采用了一种新颖的负载平衡算法,该算法根据每个 GPU 中的查询数量和查询大小,仔细选择负载最小的 GPU 来分配传入查询。
Llama 2 70B 的量化
在本节中,我们将研究如何使用 AMD Quark(https://quark.docs.amd.com/la...)进行量化,以生成针对 AMD MLPerf 推理提交的优化模型。AMD Quark 是一个公开可用的模型优化库,附带全面的文档和示例。在当前 MLPerf 轮次中,我们以之前的 MLPerf 提交(https://rocm.blogs.amd.com/ar...)为基础。新的量化使用开放计算项目 (OCP) FP8-e4m3 格式。我们量化方法的概述如下。有关更多详细信息,请参阅 MLPerf Inference: Datacenter official site(https://rocm.blogs.amd.com/ar...)。
量化策略
模型量化通常需要校准,以确保量化模型在特定数据集上保持一定的准确度。为了进行校准,我们使用 mlcommons/inference 为每个模型提供的整个校准数据集。作为预处理步骤的一部分,校准数据集的输入被序列化并通过标记化系统地处理成固定长度的序列,并结合动态填充和截断。
在我们的提交中,我们使用每个张量对称静态量化将所有关键张量(如nn.Linear
模块中的输入和权重)转换为 OCP FP8-e4m3 格式。我们使用的公式是:
Xq 是 X 值的量化形式 x,scale 为张量的最大绝对值(absmax),常数 448 表示 OCP FP8-e4m3 中数值的数值范围。缩放后的值在裁剪后使用半偶数方法进行舍入。
解码器块中的所有线性层都经过量化,涵盖输入和权重。输入和权重的量化尺度在校准期间计算。查询 (Q)、键 (K) 和值 (V) 的权重共享一个共同尺度,即它们各自尺度中的最高值。我们还应用了 AMD Quark 中的 AutoSmoothQuant 算法来减少错误。KV 缓存条目也经过量化。
我们试验了几种量化方法,例如 FP8 注意力量化(在 FP8 中执行的注意力模块计算中的 GEMM)。AMD Quark 具有对各种方案的功能支持,可实现快速实验。Quark 的导出格式支持这些功能,并可与 vLLM 无缝部署。
GEMM 优化
在 Llama 2 70B 模型中,GEMM 占端到端总计算成本的 70% 以上。我们确定了性能最关键的 FP8 GEMM,并使用 hipBLASLt 离线 GEMM 调优对其进行了优化,以选择合适的图块大小来实现高计算效率。这项工作的结果是,MI325X 上的预填充和解码阶段分别在 65K 和 2048 的批处理大小下实现了 1.5K TFLOP 和 1.4K TFLOP。我们重复 GEMM 调优运行,以优化和提高基准测试其他阶段的性能,使 GPU 能够处理更大的批处理大小,同时保持在 TTFT 和 TPOT 延迟阈值内。
系统级调优
虽然大部分性能来自 GPU,但服务器设计和配置也有助于提高性能。具体来说,我们发现高频 Turin CPU 以最小的开销执行 harness 命令时可提供最佳性能。
此外,可以通过以下操作系统配置设置来提高性能:
echo 3 | sudo tee /proc/sys/vm/drop_caches
sudo cpupower idle-set -d 2
sudo cpupower frequency-set -g performance
echo 0 | sudo tee /proc/sys/kernel/nmi_watchdog
echo 0 | sudo tee /proc/sys/kernel/numa_balancing
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
echo 'always' | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
echo 'always' | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
GPU 功率节流可能会在性能运行期间发生,并会影响性能。以下命令将最大频率限制为 1700 MHz,以避免节流并提高离线场景的整体性能。
sudo rocm-smi --setperfdeterminism 1700
sudo amd-smi set --soc-pstate 0 -g all
Llama 2 70B 性能图表及要点
我们的 MLPerf Inference v5.0 提交确立了最新 AMD 数据中心 MI325X GPU 在市场上的地位。MI325X GPU 拥有业界领先的计算 TFLOP、内存容量和带宽,再加上 ROCm 堆栈、AI 框架和库中的开源软件优化,已准备好为运行生成式 AI、LLM 和其他变革性技术的 AI 数据中心提供支持。下图突出显示了 MLPerf Inference v5.0 提交中使用的 MI325 平台,表 1 总结了用于运行工作负载的主机 CPU 和 GPU 配置。
表 1:运行 Llama 2 70B 基准测试性能所用的系统配置
在以下性能图表中,我们展示了 MI325X 与 Nvidia H200 在 Llama 2 70B 离线和服务器提交(提交 ID 分别为 5.0-0001 和 5.0-0060)上的性能结果对比。MI325X 与 H200 GPU 展开了正面竞争。完整结果可在 MLCommons 上找到,而代码和其他工件可在提交存储库(https://github.com/mlcommons/...)中找到。为了提高可重复性,我们还发布了预构建的 docker 镜像以及量化模型,这些模型在我们的复现博客中使用。
此外,我们还与多家合作伙伴(Supermicro、Giga Computing 和 AsusTek)合作,使他们能够提交基于 MI325X 的系统解决方案。Mangoboost 成功发布了有史以来最高的 Llama 2 70B 离线性能,约为 103K tokens/sec,其 4 节点 MI300X 集群由其 LLMboost 堆栈启用。值得注意的是,此提交实现了 Llama 2 70B 基准测试中 MLPerf 提交中记录的最高离线性能。总体而言,这些提交验证了 AMD Instinct 解决方案在 AI 工作负载中的可扩展性和性能。
Stable-diffusion-xl (SDXL) 文生图 MLPerf 推理基准测试
略(有兴趣的读者朋友,可以去看原文)
总结
本博客介绍了 AMD 在 MLPerf Inference:Datacenter v5.0 提交中针对 Llama 2 70B 和 SDXL 模型使用的关键优化策略。如果您有兴趣进一步探索这些策略或亲自运行基准测试结果,请访问博客“重现 AMD MLPerf Inference v5.0 提交”。AMD 一直在突破我们产品的能力界限。请务必查看我们最新的软件和硬件版本,它们将进一步提高本博客中描述的工作负载的性能。
原文链接:《AMD Instinct MI325X GPUs Produce Strong Performance in MLPerf Inference v5.0》 https://rocm.blogs.amd.com/ar...
作者:Meena Arunachalam, Miro Hodak, Wei-Ting Liao, Poovaiah Palangappa, Eliot Li, AMD Quark Team, AMD Brevitas Team, and AMD Shark Team
扩展阅读:《Reproducing the AMD Instinct GPUs MLPerf Inference v5.0 Submission》 https://rocm.blogs.amd.com/ar...
《AMD Instinct GPUs Continue AI Momentum Across Industry Benchmarks and Today’s Most Demanding AI Models》
https://community.amd.com/t5/...
《总吞吐高达 6708 token/s!联想 AMD AI 服务器单机部署满血版 DeepSeek 大模型,创业界新高》 https://mp.weixin.qq.com/s/52...
END
原文:企业存储技术
推荐阅读
欢迎关注企业存储技术极术专栏,欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
END
作者:唐僧 huangliang
原文:企业存储技术
推荐阅读
- 推测解码:加速 vLLM 文本生成 Token/s 2.31 倍
- DeepSeek 能否引领 AI PC 发展趋势?(技术篇)
- 在AMD MI300X上增强DeepSeek-R1推理能力:调优至7,318 Token/s
欢迎关注企业存储技术极术专栏,欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。