Transformers 文档

CPU

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

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-VNNIIntel 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 上更新