跳转到主要内容

分布式训练

AITraining 通过 Accelerate 支持多 GPU 训练,并为大型模型提供可选的 DeepSpeed Zero-3 优化。

要求

分布式后端

快速开始

DDP(默认)

使用多个 GPU 时,自动使用 DDP:

DeepSpeed

对于大型模型,使用 DeepSpeed Zero-3:

Python API

YAML 配置

工作原理

Accelerate 启动

训练通过 Accelerate 启动:
  1. AITraining 检测可用 GPU
  2. 通过 accelerate launch 启动训练
  3. 对于 DeepSpeed,添加 --use_deepspeed 和 Zero-3 标志
  4. 记录 accelerate env 用于调试

DDP 设置

使用 DDP 时:
  • 为性能设置 ddp_find_unused_parameters=False
  • 每个 GPU 处理批次的一部分
  • 梯度在 GPU 之间同步

DeepSpeed Zero-3

使用 DeepSpeed 时:
  • 模型参数在 GPU 之间分片
  • 多节点使用 --deepspeed_multinode_launcher standard
  • 自动应用 Zero-3 配置
  • 模型保存使用 accelerator.get_state_dict() 并解包

多节点训练

对于多节点 DeepSpeed 训练:
--deepspeed_multinode_launcher standard 标志会自动传递。

任务特定行为

LLM 训练

  • 默认:检测到多个 GPU 时使用 DDP
  • DeepSpeed:显式设置 --distributed-backend deepspeed

Seq2Seq 和 VLM

  • 多 GPU 情况自动选择 DeepSpeed
  • 对于 PEFT + 量化 + bf16 组合使用多 GPU DDP

使用 DeepSpeed 的检查点

使用 DeepSpeed 时,PEFT 适配器保存的处理方式不同。不使用 SavePeftModelCallback;而是使用 accelerator.get_state_dict(trainer.deepspeed) 保存并解包模型。

GPU 选择

控制使用哪些 GPU:

故障排除

检查 Accelerate 环境

常见问题

下一步

LoRA/PEFT

高效微调

Quantization

减少内存使用