Transformers 文档
加速器选择
加入 Hugging Face 社区
并获得增强的文档体验
开始使用
加速器选择
在分布式训练期间,您可以指定要使用的加速器(CUDA、XPU、MPS、HPU 等)的数量和顺序。当您拥有不同计算能力的加速器并希望优先使用更快的加速器时,这会很有用。或者您也可以只使用一部分可用的加速器。选择过程适用于 DistributedDataParallel 和 DataParallel。您不需要 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:0
和 cuda: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
环境变量可以导出而不是添加到命令行。不建议这样做,因为如果您忘记了环境变量的设置方式,并且最终使用了错误的加速器,可能会造成混淆。相反,通常的做法是在同一命令行上为特定的训练运行设置环境变量。