Transformers 文档

加速器选择

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

加速器选择

在分布式训练期间,您可以指定要使用的加速器(CUDA、XPU、MPS、HPU 等)的数量和顺序。当您拥有不同计算能力的加速器并希望优先使用更快的加速器时,这会很有用。或者您也可以只使用一部分可用的加速器。选择过程适用于 DistributedDataParallelDataParallel。您不需要 Accelerate 或 DeepSpeed 集成

本指南将向您展示如何选择要使用的加速器数量和使用它们的顺序。

加速器数量

例如,如果有4个加速器,而您只想使用前2个,请运行以下命令。

torchrun
Accelerate
DeepSpeed

使用 --nproc_per_node 选择要使用的加速器数量。

torchrun --nproc_per_node=2  trainer-program.py ...

加速器顺序

要选择要使用的特定加速器及其顺序,请使用适用于您硬件的环境变量。这通常在每次运行时在命令行上设置,但也可以添加到您的 ~/.bashrc 或其他启动配置文件中。

例如,如果有4个加速器(0、1、2、3),而您只想运行加速器0和2

CUDA
Intel XPU
CUDA_VISIBLE_DEVICES=0,2 torchrun trainer-program.py ...

只有 GPU 0 和 2 对 PyTorch 是“可见的”,它们分别映射到 cuda:0cuda:1
要颠倒顺序(将 GPU 2 用作 cuda:0,将 GPU 0 用作 cuda:1

CUDA_VISIBLE_DEVICES=2,0 torchrun trainer-program.py ...

在没有 GPU 的情况下运行

CUDA_VISIBLE_DEVICES= python trainer-program.py ...

您还可以使用 CUDA_DEVICE_ORDER 控制 CUDA 设备的顺序

  • 按 PCIe 总线 ID 排序(与 nvidia-smi 匹配)

    export CUDA_DEVICE_ORDER=PCI_BUS_ID
  • 按计算能力排序(最快优先)

    export CUDA_DEVICE_ORDER=FASTEST_FIRST

环境变量可以导出而不是添加到命令行。不建议这样做,因为如果您忘记了环境变量的设置方式,并且最终使用了错误的加速器,可能会造成混淆。相反,通常的做法是在同一命令行上为特定的训练运行设置环境变量。

< > 在 GitHub 上更新