Transformers 文档
CPU
并获得增强的文档体验
开始使用
CPU
现代 CPU 能够通过利用硬件中构建的底层优化并在 fp16 或 bf16 数据类型上进行训练,从而高效地训练大型模型。
本指南重点介绍如何使用混合精度和 Intel Extension for PyTorch (IPEX) 库在 Intel CPU 上训练大型模型。
您可以通过运行以下命令找到您的 PyTorch 版本。
pip list | grep torch
使用上面的 PyTorch 版本安装 IPEX。
pip install intel_extension_for_pytorch==<version_name> -f https://developer.intel.com/ipex-whl-stable-cpu
有关更多详细信息,请参阅 IPEX 安装 指南。
IPEX 为 Intel CPU 提供了额外的性能优化。这些优化包括额外的 CPU 指令集架构 (ISA) 支持,例如 Intel AVX512-VNNI 和 Intel AMX。这两项功能都旨在加速矩阵乘法。然而,仅具有 Intel AVX2 的旧款 AMD 和 Intel CPU 并不能保证通过 IPEX 获得更好的性能。
IPEX 还支持使用 fp16 和 bf16 数据类型的 自动混合精度 (AMP) 训练。降低精度可以加快训练速度并减少内存使用量,因为它需要的计算量更少。使用全精度造成的精度损失非常小。第三代、第四代和第五代 Intel Xeon 可扩展处理器原生支持 bf16,第六代处理器除了 bf16 外还原生支持 fp16。
AMP 已为使用 PyTorch 进行 CPU 后端训练启用。
Trainer 通过添加 --use_cpu
、--use_ipex
和 --bf16
参数来支持使用 CPU 进行 AMP 训练。下面的示例演示了 run_qa.py 脚本。
python run_qa.py \ --model_name_or_path google-bert/bert-base-uncased \ --dataset_name squad \ --do_train \ --do_eval \ --per_device_train_batch_size 12 \ --learning_rate 3e-5 \ --num_train_epochs 2 \ --max_seq_length 384 \ --doc_stride 128 \ --output_dir /tmp/debug_squad/ \ --use_ipex \ --bf16 \ --use_cpu
这些参数也可以添加到 TrainingArguments 中,如下所示。
training_args = TrainingArguments(
output_dir="./outputs",
bf16=True,
use_ipex=True,
use_cpu=True,
)
资源
在 Accelerating PyTorch Transformers with Intel Sapphire Rapids 博客文章中了解更多关于在 Intel CPU 上训练的信息。
< > 在 GitHub 上更新