隆重推出 AMD 第五代 EPYC™ CPU
AMD 刚刚发布了基于 Zen5 架构的第五代服务器级 EPYC CPU,代号为 `Turin`。它显著提升了性能,尤其是在核心数量达到 192 个和线程数达到 384 个时。
从大型语言模型 (LLM) 到 RAG 场景,Hugging Face 用户可以利用这一代新服务器来增强其性能能力
- 降低部署的目标延迟。
- 提高最大吞吐量。
- 降低运营成本。
在过去几周,我们一直与 AMD 合作,以验证 Hugging Face 生态系统在新一代 CPU 上得到全面支持,并在不同任务中提供预期性能。
此外,我们还在探索一些令人兴奋的新方法,通过使用 `AMD ZenDNN PyTorch 插件 (zentorch)` 来利用 `torch.compile` 对 AMD CPU 进行加速,从而进一步提升我们稍后将讨论的工作负载的性能。
虽然我们能够提前体验这项工作,以测试 Hugging Face 模型和库并与您分享性能,但我们预计 AMD 将很快向社区提供,敬请关注!
AMD Turin 与 AMD Genoa 性能对比 - 2 倍加速
在本节中,我们展示了对两款 AMD EPYC CPU(Turin,128 核;Genoa,96 核)进行基准测试的结果。在这些基准测试中,我们使用了 PyTorch 的 ZenDNN 插件(zentorch),它为 AMD EPYC CPU 上的深度学习工作负载提供了推理优化。该插件与 torch.compile 图编译流程无缝集成,可以在 torch.fx 图上进行多轮图级优化,以实现进一步的性能加速。
为了确保最佳性能,我们使用了 `bfloat16` 数据类型并采用了 `ZenDNN 5.0`。我们配置了多实例设置,支持多个 Meta LLaMA 3.1 8B 模型实例跨所有核心并行执行。每个模型实例分配 32 个物理核心,从而能够利用服务器的全部处理能力进行高效数据处理和计算加速。
我们使用两种不同的批次大小(16 和 32)在五种不同的用例中运行了基准测试
- 摘要(1024 输入 token / 128 输出 token)
- 聊天机器人(128 输入 token / 128 输出 token)
- 翻译(1024 输入 token / 1024 输出 token)
- 论文写作(128 输入 token / 1024 输出 token)
- 实时字幕(16 输入 token / 16 输出 token)。
这些配置不仅有助于全面分析每台服务器在不同工作负载下的表现,还模拟了 LLM 的实际应用。具体来说,我们绘制了每个用例的解码吞吐量(不包括第一个 token),以说明性能差异。
Llama 3.1 8B Instruct 的结果
Meta Llama 3.1 8B 的吞吐量结果,比较了 AMD Turin 和 AMD Genoa。AMD Turin 始终优于 AMD Genoa CPU,在大多数配置中实现了约 2 倍的吞吐量提升。
结论
正如所示,与前代产品 AMD Genoa 相比,AMD EPYC Turin CPU 在 AI 用例中提供了显著的性能提升。为了提高可复现性并简化基准测试过程,我们利用了 optimum-benchmark,它提供了一个统一的框架,可在各种设置中进行高效的基准测试。这使我们能够有效地使用 `zentorch` 后端进行 `torch.compile` 基准测试。
此外,我们开发了一个优化的 `Dockerfile`,将很快与基准测试代码一起发布。这将有助于轻松部署和重现我们的结果,确保其他人能够有效地利用我们的发现。
您可以在 AMD Zen 深度神经网络 (ZenDNN) 找到更多信息
有用资源
- ZenTF:https://github.com/amd/ZenDNN-tensorflow-plugin
- ZenTorch:https://github.com/amd/ZenDNN-pytorch-plugin
- ZenDNN ONNXRuntime:https://github.com/amd/ZenDNN-onnxruntime