本项目的训练框架已成功升级,现在支持 PyTorch DistributedDataParallel (DDP) 多GPU分布式训练!
- ✅ 向后兼容:现有单GPU代码无需修改
- ✅ 自动化:自动检测环境、分配设备、分片数据
- ✅ 用户友好:简单配置即可启用,提供完整脚本和文档
- ✅ 高效:线性扩展性能,支持多节点训练
- ✅ 健壮:优雅降级、详细日志、异常处理
base/
├── base_config.py ✏️ 添加 DDP 配置参数
├── base_trainer.py ✏️ 实现 DDP 初始化、模型包装、同步逻辑
└── base_datamanager.py ✏️ 集成 DistributedSampler
trainers/
└── toy_trainer.py ✏️ 适配 DDP,添加分布式日志
config/
└── toy_trainer_ddp_config.yaml 🆕 DDP 训练示例配置
scripts/
├── ddp_train.ps1 🆕 Windows 启动脚本
├── ddp_train.sh 🆕 Linux/Mac 启动脚本
└── test_ddp.py 🆕 DDP 功能测试脚本
docs/
├── DDP_QUICKSTART.md 🆕 5分钟快速入门
├── DDP_GUIDE.md 🆕 完整使用指南
└── DDP_IMPLEMENTATION_SUMMARY.md 🆕 技术实现总结
ENV:
GPU: [0, 1, 2, 3] # 你的GPU列表
DISTRIBUTED: True # 启用DDP# 使用 4 个 GPU
torchrun --nproc_per_node=4 train.py --config config/your_config.yaml就这么简单! 🎉
| GPU数量 | 加速比 | 训练时间(示例) |
|---|---|---|
| 1 | 1.0x | 10 小时 |
| 2 | 1.8x | 5.5 小时 |
| 4 | 3.6x | 2.8 小时 |
| 8 | 7.0x | 1.4 小时 |
- 5分钟上手指南
最快速度让你的模型跑起来
- DDP 使用指南
配置说明、最佳实践、常见问题
- 实现总结
架构设计、关键代码、优化建议
# 单GPU测试
python scripts/test_ddp.py
# 多GPU测试
torchrun --nproc_per_node=2 scripts/test_ddp.py# 使用示例配置进行测试
torchrun --nproc_per_node=2 train.py --config config/toy_trainer_ddp_config.yaml- 自动从环境变量获取 rank 和 world_size
- 支持 NCCL(GPU)和 Gloo(CPU)后端
- 优雅降级到非分布式模式
# 之前(DataParallel)
model = nn.DataParallel(model)
# 现在(DistributedDataParallel)
model = self.wrap_model_with_ddp(model)- 自动使用
DistributedSampler分片数据 - 每个GPU处理不同的数据子集
- 避免重复,提高效率
- 仅主进程(rank 0)执行日志记录和模型保存
- 避免文件冲突和重复输出
- 节省资源
ENV:
GPU: [0]
DISTRIBUTED: False # 或不设置ENV:
GPU: [0, 1, 2, 3]
DISTRIBUTED: True
DIST_BACKEND: 'nccl' # 可选,默认 nccl
DIST_URL: 'env://' # 可选,默认 env://- 配置中的
BATCH_SIZE是每个GPU的批量大小 - 有效总批量 =
BATCH_SIZE × GPU数量 - 示例:4个GPU,batch_size=16,总batch=64
推荐使用线性缩放:
lr_ddp = lr_single_gpu × num_gpus如果遇到 OOM:
- 减小每GPU的 batch_size
- 启用混合精度训练(future work)
- 使用梯度累积(future work)
# 解决:换个端口
torchrun --master_port=29501 --nproc_per_node=4 train.py ...检查:
- 配置文件
DISTRIBUTED: True - 使用
torchrun而非python --nproc_per_node正确
解决:减小配置中的 BATCH_SIZE
- 自动混合精度 (AMP)
- 梯度累积
- 多节点训练示例
- FSDP 支持
- DeepSpeed 集成
- 弹性训练
如果你遇到问题或有改进建议:
- 版本:v1.0.0
- 日期:2025-12-03
- 兼容性:PyTorch >= 1.10.0
部署前检查:
- 核心框架支持 DDP
- 配置文件完善
- 启动脚本就绪
- 测试脚本通过
- 文档完整
- 向后兼容
🎉 现在开始享受多GPU分布式训练的速度吧!
有任何问题请参考 文档 或联系开发团队。