082在 CPU 上高效训练
在 CPU 上高效训练¶
本指南重点介绍如何在 CPU 上高效地训练大型模型。
使用 IPEX 实现混合精度¶
混合精度是指在模型中同时使用单精度 (fp32) 和半精度 (bf16/fp16) 数据类型来加速训练或推理,同时仍保持大部分单精度的准确性。现代 CPU 如第 3 代、第 4 代和第 5 代 Intel® Xeon® Scalable 处理器原生支持 bf16。第 6 代 Intel® Xeon® Scalable 处理器则支持 bf16 和 fp16。通过启用混合精度训练,你可以直接获得更好的性能提升。
为了进一步提高训练性能,你可以使用 Intel® Extension for PyTorch (IPEX)。IPEX 是基于 PyTorch 构建的一个库,它增加了对 Intel® 高级向量扩展 512 矢量神经网络指令 (Intel® AVX512-VNNI) 和 Intel® 高级矩阵扩展 (Intel® AMX) 的支持,从而在 Intel CPU 上提供额外的性能提升。然而,仅支持 AVX2 的 CPU(例如,AMD 或较旧的 Intel CPU)在 IPEX 下不一定有更好性能。
自 PyTorch 1.10 版本起,CPU 后端已经启用了自动混合精度 (AMP)。IPEX 也支持 CPU 上的 bf16/fp16 操作优化,并部分合并到主 PyTorch 分支。使用 IPEX AMP 可以获得更好的性能和用户体验。
了解更多详细信息,请参阅 自动混合精度。
IPEX 安装¶
IPEX 的发布版本跟随 PyTorch。通过 pip 安装:
| PyTorch 版本 | IPEX 版本 |
|---|---|
| 2.5.0 | 2.5.0+cpu |
| 2.4.0 | 2.4.0+cpu |
| 2.3.0 | 2.3.0+cpu |
| 2.2.0 | 2.2.0+cpu |
请运行 pip list | grep torch 获取你的 pytorch_version,以便获取相应的 IPEX version_name。