Pytorch多GPU并行训练
多GPU训练的原因
- 模型特别大,不同模块放在不同GPU,对训练速度无提升(model parallel)
- 将整个模型同时并行进行训练,提高了batch_size,即提高了训练速度(data parallel)
数据集如何在不同设备间分配
误差梯度如何在不同设备之间通信
BatchNormalization如何在不同设备间同步
- 使用同步的BN会降低并行速度
Distributed data parallel
Pytorch中使用多GPU训练的常用启动方式
- 方法一:torch.distributed.launch
- 代码量少点,启动速度快点
- 如果开始训练后,手动强制终止程序,有小概率会出现进程没有杀掉的情况(要关注显存占用)
- 方法二:torch.multiprocessing
- 拥有更好的控制和灵活性