Tensorflow2.x 多卡并行训练时间不减少问题分析
在进行单机多卡并行训练的时候,发现多个有趣现象。
- 多卡训练一定比单卡速度快
- 使用tf.keras API在MirroredStrategy的并行策略下可以很好的加速训练
- 使用Custom Training Loop在MirroredStrategy并行策略下卡数增加不能缩短训练时间
实验描述
起初不知道具体造成这个现象的原因,我通过控制变量来debug. 硬件设备8 * v100 GPUs
如上表所示,数据集选用10类狗共1万张图片;固定每张GPU上的batch_size既(batch_size_per_replica). 变量包括:
- 使用TF.DatasetAPI进行数据读取预处理(input pipeline)时是否进行dataset.cache()操作。
- API选择:tf.kerasAPI VS custom training loop
- 训练时的GPU卡数