Hugging Face 与 AMD 合作:Transformers 模型在 AMD GPU 上开箱即用加速
AMD + 🤗: Large Language Models Out-of-the-Box Acceleration with AMD GPU
Hugging Face 宣布 Transformers 全部模型和任务可在 AMD Instinct GPU 上无需改码运行,并推出 Text Generation Inference 对 MI210/MI250 的初步支持,docker 镜像为 ghcr.io/huggingface/text-generation-inference:1.2-rocm。
官方宣布 Transformers 无需改码即可在 AMD Instinct GPU 上运行,并给出 MI250 对比 A100 的推理与训练数据,可作选型参考。
今年早些时候,AMD 与 Hugging Face 宣布建立合作伙伴关系,在 AMD 的 AI Day 活动上共同加速 AI 模型。我们一直在努力将这一愿景变为现实,让 Hugging Face 社区能够轻松地在 AMD 硬件上以最佳性能运行最新的 AI 模型。
AMD 正在为世界上一些最强大的超级计算机提供动力,包括欧洲最快的 LUMI,它运行着超过 10,000 块 MI250X AMD GPU。在此次活动上,AMD 发布了其最新一代服务器 GPU——AMD Instinct™ MI300 系列加速器,该系列产品即将全面上市。
在这篇博客文章中,我们介绍了在为 AMD GPU 提供出色的开箱即用支持、以及改善最新服务器级 AMD Instinct GPU 互操作性方面所取得的进展。
开箱即用的加速
你能发现下面有 AMD 专属的代码改动吗?别费眼神了,与在 NVIDIA GPU 上运行相比,一处都没有 🤗。
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "01-ai/Yi-6B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
with torch.device("cuda"):
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16)
inp = tokenizer(["Today I am in Paris and"], padding=True, return_tensors="pt").to("cuda")
res = model.generate(**inp, max_new_tokens=30)
print(tokenizer.batch_decode(res))
我们一直在努力的一个主要方面是,无需任何代码改动即可运行 Hugging Face Transformers 模型。我们现在已在 AMD Instinct GPU 上支持所有 Transformers 模型和任务。我们的合作不止于此,我们还在探索对 diffusers 模型、其他库以及其他 AMD GPU 的开箱即用支持。
实现这一里程碑是我们团队与两家公司之间重大努力与协作的成果。为了维持对 Hugging Face 社区的支持和性能,我们在自有数据中心内构建了 Hugging Face 开源库在 AMD Instinct GPU 上的集成测试——并与 Verne Global 合作,在冰岛部署 AMD Instinct 服务器,从而将这些新增工作负载的碳影响降至最低。
除了原生支持之外,我们合作的另一个主要方面是为 AMD GPU 上可用的最新创新和功能提供集成。通过 Hugging Face 团队、AMD 工程师和开源社区成员的协作,我们很高兴地宣布支持以下内容:
- 来自 AMD 开源工作 ROCmSoftwarePlatform/flash-attention 的 Flash Attention v2,已原生集成到 Transformers 和 Text Generation Inference 中。
- 来自 vLLM 的 Paged Attention,以及 Text Generation Inference 中为 ROCm 提供的各种融合内核。
- 用于 ROCm 驱动 GPU 上 Transformers 的 DeepSpeed 现也已正式验证并支持。
- GPTQ 是一种用于降低模型内存需求的常见权重压缩技术,现已通过与 AutoGPTQ 和 Transformers 的直接集成在 ROCm GPU 上获得支持。
- Optimum-Benchmark,一个可轻松在 AMD GPU 上对 Transformers 进行性能基准测试的实用工具,支持常规和分布式设置,并支持各种优化和量化方案。
- 通过 Optimum 库使用 ROCMExecutionProvider,在 ROCm 驱动的 GPU 上借助 ONNX Runtime 支持 ONNX 模型执行。
我们非常高兴能够将这些最先进的加速工具提供给 Hugging Face 用户并使其易于使用,同时通过将直接集成纳入我们面向 AMD Instinct GPU 的全新持续集成与开发流水线,提供持续维护的支持和性能。
一块配备 128 GB 高带宽内存的 AMD Instinct MI250 GPU 具有两个不同的 ROCm 设备(GPU 0 和 1),每个设备拥有 64 GB 的高带宽内存。
这意味着,仅用一块 MI250 GPU 卡,我们就有两个 PyTorch 设备,可以非常轻松地利用张量和数据并行来实现更高的吞吐量和更低的延迟。
在本文的剩余部分,我们报告了通过大型语言模型进行文本生成过程中涉及的两个步骤的性能结果:
- 预填充延迟:模型为用户提供的输入或提示计算表示所需的时间(也称为“首个令牌时间”)。
- 每令牌解码延迟:在预填充步骤之后,以自回归方式生成每个新令牌所需的时间。
- 解码吞吐量:在解码阶段每秒生成的令牌数量。
使用 optimum-benchmark 并在 MI250 和 A100 GPU 上运行 推理基准测试,在有和没有优化的情况下,我们得到以下结果:
在上面的图表中,我们可以看到 MI250 的性能有多出色,特别是在以大批次处理请求的生产环境中,与 A100 卡相比,它提供了超过 2.33 倍的令牌(解码吞吐量),并且首个令牌的时间(预填充延迟)缩短了一半。
运行如下所示的 训练基准测试,一块 MI250 卡可以容纳更大的训练样本批次,并达到更高的训练吞吐量。
生产解决方案
我们合作的另一个重要焦点是为 Hugging Face 生产解决方案构建支持,首先是文本生成推理(TGI)。TGI 提供了一种端到端解决方案,用于大规模部署大型语言模型进行推理。
最初,TGI 主要针对 Nvidia GPU,利用了针对 Ampere 架构后的大部分最新优化,例如 Flash Attention v1 和 v2、GPTQ 权重量化和 Paged Attention。
今天,我们很高兴地宣布 TGI 初步支持 AMD Instinct MI210 和 MI250 GPU,利用了上述所有出色的开源工作,集成到一个完整的端到端解决方案中,随时可以部署。
在性能方面,我们花费了大量时间在 AMD Instinct GPU 上对文本生成推理进行基准测试,以验证并发现我们应该关注优化的地方。因此,在 AMD GPU 工程师的支持下,我们能够实现与 TGI 已经提供的性能相匹配。
在此背景下,基于 AMD 与 Hugging Face 之间正在建立的长期合作关系,我们一直在集成和测试 AMD GeMM Tuner 工具,这使我们能够调整 TGI 中使用的 GeMM(矩阵乘法)内核,以找到最佳设置以提高性能。GeMM Tuner 工具预计将在即将发布的版本中 作为 PyTorch 的一部分 发布,让每个人都能从中受益。
综上所述,我们非常激动地展示首批性能数据,这些数据展示了最新的 AMD 技术,将 Text Generation Inference 在 AMD GPU 上运行 Llama 模型系列,置于高效推理解决方案的前沿。
A100 缺失的柱状图对应内存不足错误,因为 Llama 70B 在 float16 下权重为 138 GB,需要足够的空闲内存用于中间激活、KV 缓存缓冲区(2048 序列长度、批量大小 8 时 >5GB)、CUDA 上下文等。Instinct MI250 GPU 拥有 128 GB 全局内存,而 A100 只有 80GB,这解释了为何 MI250 能够运行更大的工作负载(更长的序列、更大的批量)。
Text Generation Inference 已准备好部署到生产环境,通过 Docker 镜像 ghcr.io/huggingface/text-generation-inference:1.2-rocm 在 AMD Instinct GPU 上运行。请务必参考文档了解支持及其限制。
接下来是什么?
我们希望这篇博客文章能让你像 Hugging Face 一样,对与 AMD 的合作感到兴奋。当然,这只是我们旅程的开始,我们期待在更多 AMD 硬件上支持更多用例。
在接下来的几个月里,我们将致力于为 AMD Radeon GPU 带来更多支持和验证,这些 GPU 你可以放入自己的台式机用于本地使用,降低可及性门槛,为我们的用户铺平道路,带来更多可能性。
当然,我们很快将致力于 MI300 系列的性能优化,确保开源和解决方案都能以 Hugging Face 始终追求的最高稳定性水平提供最新创新。
我们另一个关注领域将是 AMD Ryzen AI 技术,它为最新一代 AMD 笔记本电脑 CPU 提供动力,允许在边缘设备上运行 AI。在编码助手、图像生成工具和个人助手变得越来越广泛可用的时代,提供能够满足隐私需求的解决方案以利用这些强大工具非常重要。在此背景下,Ryzen AI 兼容模型已在 Hugging Face Hub 上提供,我们正与 AMD 密切合作,在未来几个月内带来更多模型。
来源:Hugging Face:Blog(RSS) · huggingface.co