更快的训练和推理速度:Habana Gaudi®2与Nvidia A100 80GB对比

'Habana Gaudi®2与Nvidia A100 80GB比较:更快的训练和推理速度'

在本文中,您将学习如何使用 Habana® Gaudi®2 加速模型训练和推理,并使用 🤗 Optimum Habana 训练更大的模型。然后,我们提出了几个基准,包括 BERT 预训练、稳定扩散推理和 T5-3B 微调,以评估第一代 Gaudi、Gaudi2 和 Nvidia A100 80GB 之间的性能差异。剧透一下 – Gaudi2 在训练和推理方面比 Nvidia A100 80GB 快大约两倍!

Gaudi2 是由 Habana Labs 设计的第二代 AI 硬件加速器。单个服务器包含8个加速器设备,每个设备内存为96GB(第一代 Gaudi 为32GB,A100 80GB 为80GB)。Habana SDK,SynapseAI,适用于第一代 Gaudi 和 Gaudi2。这意味着 🤗 Optimum Habana,在 🤗 Transformers 和 🤗 Diffusers 库与 SynapseAI 之间提供了一个非常用户友好的接口,在 Gaudi2 上的工作方式与第一代 Gaudi 相同!因此,如果您已经有了适用于第一代 Gaudi 的可用的训练或推理工作流程,我们鼓励您在 Gaudi2 上尝试它们,因为它们可以正常工作,无需任何更改。

如何获得 Gaudi2 的访问权限?

Intel和Habana提供了一种简单、成本效益的方式,将 Gaudi2 提供给开发者,即通过 Intel Developer Cloud。要在那里开始使用 Gaudi2,您应该按照以下步骤进行:

  1. 转到 Intel Developer Cloud 登录页面,登录您的帐户或注册一个新帐户。

  2. 转到 Intel Developer Cloud 管理控制台。

  3. 选择带有八个 Gaudi2 HL-225H 中间层卡和最新 Intel® Xeon® 处理器的 Habana Gaudi2 深度学习服务器,并单击右下角的 Launch Instance,如下所示。

  4. 然后,您可以请求一个实例:

  5. 验证您的请求后,重新执行第 3 步,并单击 Add OpenSSH Publickey,以添加付款方式(信用卡或促销代码)和一个 SSH 公钥,您可以使用 ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa 生成。每次添加付款方式或 SSH 公钥时,您可能会被重定向到第 3 步。

  6. 重新执行第 3 步,然后单击 Launch Instance。您需要接受所提议的通用条件才能实际启动实例。

  7. 转到 Intel Developer Cloud 管理控制台,单击名为 View Instances 的选项卡。

  8. 您可以复制 SSH 命令以远程访问 Gaudi2 实例!

如果您终止实例并希望再次使用 Gaudi2,则必须重新执行整个过程。

您可以在此处找到有关此过程的更多信息。

基准测试

进行了几个基准测试,以评估第一代 Gaudi、Gaudi2 和 A100 80GB 在训练和推理方面以及各种模型的能力。

BERT 预训练

几个月前,Hugging Face 的技术负责人 Philipp Schmid 演示了如何使用 🤗 Optimum Habana 在 Gaudi 上进行 BERT 预训练。使用每个设备 32 个样本(总共 8*32=256)的批次大小进行了 65k 步的训练,总训练时间为 8 小时 53 分钟(您可以在此处查看此运行的 TensorBoard 日志)。

我们在 Gaudi2 上使用相同的脚本和相同的超参数重新运行了相同的脚本,得到了总训练时间为 2 小时 55 分钟的结果(请查看此处的日志)。这使得 Gaudi2 的速度提高了 3.04 倍,而且没有任何变化。

由于 Gaudi2 每个设备的内存大约是第一代 Gaudi 的 3 倍,因此可以利用这种更大的容量来获得更大的批次。这将使 HPUs 有更多的工作要做,并且还可以让开发者尝试一系列超参数值,这是在第一代 Gaudi 中无法达到的。使用每个设备 64 个样本的批次大小(总共 512),我们在 20k 步得到了与之前运行的 65k 步相似的损失收敛。总训练时间为 1 小时 33 分钟(请查看此处的日志)。这种配置下的吞吐量比之前高出 1.16 倍,而这个新的批次大小强烈加速了收敛速度。总体而言,与第一代 Gaudi 相比,Gaudi2 的总训练时间减少了 5.75 倍,吞吐量提高了 3.53 倍。

Gaudi2还提供了比A100更快的加速:对于批量大小为32的情况下,Gaudi2的样本速度为1580.2个/秒,而A100为981.6个/秒;对于批量大小为64的情况下,Gaudi2的样本速度为1835.8个/秒,而A100为1082.6个/秒,这与Habana在BERT预训练的第一阶段中使用批量大小为64时宣布的加速比x1.8一致。

以下表格显示了我们在第一代Gaudi、Gaudi2和Nvidia A100 80GB GPU上获得的吞吐量:

BS是每个设备的批量大小。Gaudi运行采用混合精度(bf16/fp32),而A100运行采用fp16。所有运行都是在8个设备上进行的分布式运行。

使用稳定扩散从文本生成图像

🤗 Optimum Habana 1.3版的主要新功能之一是支持稳定扩散。现在在Gaudi上从文本生成图像非常容易。与在GPU上使用🤗 Diffusers不同,图像是按批次生成的。由于模型编译时间的原因,前两个批次的速度较慢。在此基准测试中,我们舍弃了这两个批次,以计算第一代Gaudi和Gaudi2的吞吐量。

此脚本的批量大小为8个样本。它使用了Habana/stable-diffusion Gaudi配置。

我们得到的结果与Habana在此处发布的数字一致,如下表所示。 Gaudi2显示出的延迟比第一代Gaudi快3.51倍(3.25秒对比0.925秒),比Nvidia A100快2.84倍(2.63秒对比0.925秒)。它还可以支持更大的批量大小。

更新:随着SynapseAI 1.10和Optimum Habana 1.6版的发布,上述数字已更新,第一代Gaudi和Gaudi2获得了额外的加速。

BS是批量大小。Gaudi运行采用bfloat16精度,而A100运行采用fp16精度(更多信息请参见此处)。所有运行都是单设备运行。

对T5-3B进行微调

每个设备拥有96 GB的内存,Gaudi2可以运行更大的模型。例如,我们成功地对T5-3B(包含30亿个参数)进行了微调,其中唯一应用的内存优化是梯度检查点。这在第一代Gaudi上是不可能的。以下是我们在CNN DailyMail数据集上使用此脚本对该模型进行文本摘要微调的日志。

我们实现的结果如下表所示。 Gaudi2比A100 80GB快2.44倍。我们观察到在这里无法使用大于1的批量大小。这是由于在运行的第一次迭代中操作累积的图占用的内存空间。Habana正在努力优化SynapseAI未来版本的内存占用。我们期待使用Habana的新版本和DeepSpeed进行更广泛的基准测试,以验证是否保持相同的趋势。

BS是每个设备的批量大小。Gaudi2和A100运行采用fp32精度,并启用了梯度检查点。所有运行都是在8个设备上进行的分布式运行。

结论

在本文中,我们讨论了我们对Gaudi2的第一次体验。从第一代Gaudi过渡到Gaudi2是完全无缝的,因为Habana的SDK SynapseAI与两者都完全兼容。这意味着未来版本提出的新优化将使两者受益。

您已经看到Habana Gaudi2在训练和推理中显著提高了性能,并且在吞吐速度上大约是Nvidia A100 80GB的两倍。

您现在也知道如何通过英特尔开发者区设置Gaudi2实例。通过🤗 Optimum Habana,您可以轻松运行它上面的示例。

如果您有兴趣使用最新的AI硬件加速器和软件库加速机器学习训练和推理工作流程,请查看我们的专家加速计划。要了解有关Habana解决方案的更多信息,请阅读我们的合作伙伴关系介绍并联系他们。要了解有关Hugging Face努力使AI硬件加速器易于使用的更多信息,请查看我们的硬件合作伙伴计划。

  • 使用Habana Gaudi入门Transformers
  • 使用Hugging Face和Habana Labs加速Transformer模型训练

感谢阅读!如果您有任何问题,请随时通过Github或论坛与我联系。您也可以在LinkedIn上与我联系。