使用 Intel Sapphire Rapids 加速 PyTorch Transformers
Intel Sapphire Rapids CPU 与 Hugging Face Optimum Intel 库结合使用时,可将 PyTorch Transformer 推理速度提升至比上一代 Intel Xeon(Ice Lake)高达 3 倍。这一性能提升即使在处理长文本序列时,也能实现个位数的预测延迟,这一基准此前主要只能通过 GPU 实现。
基于 CPU 推理的战略优势
基于 CPU 的推理是一种可行且在许多情况下优于基于 GPU 的推理的替代方案,这取决于模型规模、任务并行度和成本约束。
- 模型规模: 较小的模型通常在 CPU 上运行高效,而较大的模型则更能受益于 GPU 的强大计算能力。
- 并行度: GPU 在大规模并行处理方面表现出色。如果推理任务缺乏高度并行性,CPU 可能更为有效。
- 成本与灵活性: 与 GPU 相比,CPU 通常更具成本效益,尤其是对不需要极低延迟的使用场景。它们还提供了更大的灵活性,可用于扩展推理工作者并在多样化的硬件环境中部署。
硬件和软件配置
为了评估性能提升,使用以下规格的 Amazon EC2 实例进行基准测试:
- Ice Lake(基准):
c6i.16xlarge实例。 - Sapphire Rapids:
r7iz.16xlarge-metal实例。
两个实例均使用 32 个物理核心(64 个 vCPU),并配置了 Ubuntu 22.04、Linux 5.15.0、PyTorch 1.13、Intel Extension for PyTorch 1.13 和 Transformers 4.25.1。Sapphire Rapids 实例额外使用了 Optimum Intel 库。
NLP 模型性能基准测试
基准测试在文本分类任务上使用 distilbert-base-uncased、bert-base-uncased 和 roberta-base 模型进行。测试测量了短(16 token)和长(128 token)序列下,单次推理和批量推理的平均延迟和 p99 延迟。
优化技术
在 Sapphire Rapids 架构上,通过 Optimum Intel 库应用了以下优化,以利用硬件特性:
- bfloat16 模式: 启用以利用高级矩阵扩展(AMX)指令。
- 即时编译(JIT): 设置为
True以进一步优化模型执行。
性能结果
对于 distilbert-base-uncased 模型,在 Sapphire Rapids 上的单次预测相比上一代 Xeon CPU 降低了 60-65% 的延迟(运行速度提升 60-65%)。硬件与软件的结合使得即使在处理长文本序列时,也能实现个位数的预测延迟。
结论
第四代 Intel Xeon CPU 为 PyTorch Transformers 的推理性能带来了显著提升。通过集成 Intel Extension for PyTorch 和 Hugging Face Optimum,开发者可以更具成本效益地部署深度学习模型,并在特定 NLP 任务上实现与基于 GPU 的解决方案相媲美的性能水平。