更快的训练和推理: 对比 Habana Gaudi®2 和英伟达 A100 80GB

发表于 2022年12月14日
在 GitHub 上更新

本文也提供英文版本 English

通过本文,你将学习如何使用 Habana® Gaudi®2 加速模型训练和推理,以及如何使用 🤗 Optimum Habana 训练更大的模型。然后,我们展示了几个基准测例,包括 BERT 预训练、Stable Diffusion 推理以及 T5-3B 微调,以评估 Gaudi1、Gaudi2 和英伟达 A100 80GB 之间的性能差异。剧透一下: Gaudi2 的训练和推理速度大约是英伟达 A100 80GB 的两倍!

Gaudi2 是 Habana Labs 设计的第二代 AI 硬件加速卡。每台服务器装有 8 张加速卡,每张加速卡的内存为 96GB (Gaudi1 为 32GB,A100 80GB 为 80GB)。Habana 的 SynapseAI SDK 在 Gaudi1 和 Gaudi2 上是通用的。这意味🤗 Optimum Habana,一个将 🤗 Transformers 和 🤗 Diffusers 库与 SynapseAI 连起来的、用户友好的库, 在 Gaudi2 上的工作方式与 Gaudi1 完全相同!

因此,如果你在 Gaudi1 上已经有现成的训练或推理工作流,我们鼓励你在 Gaudi2 上尝试它们,因为无需任何更改它们即可工作。

如何访问 Gaudi2?

访问 Gaudi2 的简单且经济的方法之一就是通过英特尔和 Habana 提供的英特尔开发者云 (Intel Developer Cloud,IDC) 来访问。要使用 Gaudi2,你需要完成以下操作步骤:

  1. 进入 英特尔开发者云登陆页面 并登录你的帐户 (如果没有账户,需要先注册一个)。
  2. 进入 英特尔开发者云管理控制台
  3. 选择 Habana Gaudi2 Deep Learning Server,其配有 8 张 Gaudi2 HL-225H 卡以及最新的英特尔® 至强® 处理器 ,然后单击右下角的 Launch Instance ,如下所示。
Cloud Architecture
  1. 然后你可以申请一个实例。
Cloud Architecture
  1. 一旦申请成功,请重新执行步骤 3,然后单击 Add OpenSSH Publickey 以添加付款方式 (信用卡或促销码) 以及你的 SSH 公钥,你可使用 ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa 命令以生成公钥。每次添加付款方式或 SSH 公钥时,你可能会被重定向到步骤 3。

  2. 重新执行步骤 3,然后单击 Launch Instance 。你必须接受建议条款才能真正把实例启动起来。

  3. 进入 英特尔开发者云管理控制台,然后单击 View Instances 选项卡。

  4. 你可以复制实例界面上的 SSH 命令来远程访问你的 Gaudi2 实例!

如果你终止实例后想再次使用 Gaudi2,则必须重新执行整个过程。

你可以在 此处 找到更多相关信息。

基准测试

下面,我们将进行多项基准测试来评估 Gaudi1、Gaudi2 和 A100 80GB 在各种尺寸的模型上的训练和推理能力。

BERT 模型预训练

几个月前,Hugging Face 的技术主管 Philipp Schmid 介绍了 如何使用 🤗 Optimum Habana 在 Gaudi 上预训练 BERT。该预训练一共执行了 6.5 万步,每张卡的 batch size 为 32 (因此总 batch size 为 8 * 32 = 256),总训练时长为 8 小时 53 分钟 (你可以在 此处 查看此次训练的 TensorBoard 日志)。

我们在 Gaudi2 上使用相同的超参重新运行相同的脚本,总训练时间为 2 小时 55 分钟 (日志见 此处)。 也就是说,无需任何更改,Gaudi2 的速度提升了 3.04 倍

由于与 Gaudi1 相比,Gaudi2 的单卡内存大约增加了 3 倍,因此我们可以充分利用这更大的内存容量来增大 batch size。这将会进一步增加 HPU 的计算密度,并允许开发人员尝试那些在 Gaudi1 上无法尝试的超参。在 Gaudi2 上,我们仅需 2 万训练步,每张卡的 batch size 为 64 (总 batch size 为 512),就可以获得与之前运行的 6.5 万步相似的收敛损失,这使得总训练时长降低为 1 小时 33 分钟 (日志见 此处)。使用新的配置,训练吞吐量提高了 1.16 倍,同时新的 batch size 还极大地加速了收敛。 总体而言,与 Gaudi1 相比,Gaudi2 的总训练时长减少了 5.75 倍,吞吐量提高了 3.53 倍

Gaudi2 比 A100 更快: batch size 为 32 时,Gaudi2 吞吐为每秒 1580.2 个样本,而 A100 为 981.6; batch size 为 64 时,Gaudi2 吞吐为每秒 1835.8 个样本,而 A100 为 1082.6。这与 Habana 宣称的 batch size 为 64 时 Gaudi2 在 BERT 预训练第一阶段上的训练性能是 A100 的 1.8 倍 相一致。

下表展示了我们在 Gaudi1、Gaudi2 和英伟达 A100 80GB GPU 上测得的吞吐量:

Gaudi1 (BS=32) Gaudi2 (BS=32) Gaudi2 (BS=64) A100 (BS=32) A100 (BS=64)
吞吐量 (每秒样本数) 520.2 1580.2 1835.8 981.6 1082.6
加速比 x1.0 x3.04 x3.53 x1.89 x2.08

BS 是每张卡上的 batch size。 Gaudi 训练时使用了混合精度 (bf16/fp32),而 A100 训练时使用了 fp16。所有数据都基于 8 卡分布式训练方案测得。

使用 Stable Diffusion 进行文生图

🤗 Optimum Habana 1.3 的主要新特性之一是增加了 对 Stable Diffusion 的支持。现在,在 Gaudi 上进行文生图非常容易。与 GPU 上的 🤗 Diffusers 不同,Optimum Habana 上的图像是批量生成的。由于模型编译耗时的原因,前两个 batch 比后面的 batch 的生成速度要慢。在此基准测试中,在计算 Gaudi1 和 Gaudi2 的吞吐量时,我们丢弃了前两个 batch 的生成时间。

这个脚本 使用的 batch size 为 8,其 gaudi_configHabana/stable-diffusion

我们得到的结果与 Habana 发布的 数字 一致,如下表所示。 Gaudi2 的延迟比 Gaudi1 快 3.51 倍 (0.925 秒对比 3.25 秒),比英伟达 A100 快 2.84 倍 (0.925 秒对比 2.63 秒)。 而且,Gaudi2 支持的 batch size 更大。

Gaudi1 (BS=8) Gaudi2 (BS=8) A100 (BS=1)
延迟 (每图像秒数) 3.25 0.925 2.63
加速比 x1.0 x3.51 x1.24

更新: 上图已更新,因为 SynapseAI 1.10 和 Optimum Habana 1.6 为 Gaudi1 和 Gaudi2 带来了额外的加速。

BS 是 batch size。Gaudi 上的推理精度为 bfloat16 ,A100 上的推理精度为 fp16 (更多信息详见 此处)。所有数据均为 单卡 运行数据。

微调 T5-3B

因为每张卡的内存高达 96 GB,Gaudi2 可以运行更大的模型。举个例子,在仅应用了梯度 checkpointing 内存优化技术的条件下,我们成功微调了一个 T5-3B (参数量为 30 亿) 模型。这在 Gaudi1 上是不可能实现的。我们使用 这个脚本 在 CNN DailyMail 数据集上针对文本摘要任务进行了微调,运行日志见 这里

结果如下表所示。 Gaudi2 比 A100 80GB 快 2.44 倍。 我们发现,目前在 Gaudi2 上的 batch size 只能为 1,不能设更大。这是由于在第一次迭代时生成的计算图占了不少内存空间。Habana 正在致力于优化 SynapseAI 的内存占用,我们期待未来新版本的 Habana SDK 能够缓解这一问题。同时,我们还期待使用 DeepSpeed 来扩展此基准,从而看看引入 DeepSpeed 后平台间的性能对比是否与现在保持一致。

Gaudi1 Gaudi2 (BS=1) A100 (BS=16)
吞吐量 (每秒样本数) N/A 19.7 8.07
加速比 / x2.44 x1.0

BS 指的是每卡 batch size。 Gaudi2 和 A100 使用的精度为 fp32,且启用了梯度 checkpointing 技术。所有数据都基于 8 卡分布式训练方案测得。

总结

本文讨论了我们首次使用 Gaudi2 的经历。从 Gaudi1 到 Gaudi2 的过渡完全是无缝的,因为 Habana 的 SDK SynapseAI 在两者上是完全兼容的。这意味着 SynapseAI 上的新优化会让两个平台同时受益。

可以看到,Habana Gaudi2 的性能与 Gaudi1 相比有了显著提高,且其训练和推理吞吐大约是英伟达 A100 80GB 的两倍。

我们还知道了如何在英特尔开发者云上设置 Gaudi2 实例。设置完后,你就可以 Gaudi2 上使用 🤗 Optimum Habana 轻松运行这些 例子

如果你对使用最新的 AI 硬件加速卡和软件库加速机器学习训练和推理工作流感兴趣,可以移步我们的 专家加速计划。如果你想了解有关 Habana 解决方案的更多信息,可以在 此处 了解我们相关信息并 联系他们。要详细了解 Hugging Face 为让 AI 硬件加速卡更易于使用而做的努力,请查阅我们的 硬件合作伙伴计划

相关话题


感谢垂阅!如果你有任何疑问,请随时通过 Github论坛 与我联系。你还可以通过 LinkedIn 联系我。