TensorFlow2.x-distribute
Tensorflow distribute
Tensorflow2.0 单机多卡设置。
Tensorflow2.0 多GPU设置。
在Tensorflow2.0 中,有一个非常一个非常方便的函数 tf.distribute.MirroredStrategy()只需在代码中进行修改即可。
我们可以简单理解 单机多卡,就是将数据根据batch进行分发到每一张GPU上,然后单独计算loss,最后对loss进行汇总,然后进行反向传播,对每张GPU上的模型参数镜像 进行更新。
MirroredStrategy 的步骤如下:
训练开始前,该策略在所有 N 个计算设备上均各复制一份完整的模型;
每次训练传入一个批次的数据时,将数据分成 N 份,分别传入 N 个计算设备(即数据并行);
N 个计算设备使用本地变量(镜像变量)分别计算自己所获得的部分数据的梯度;
使用分布式计算的 All-reduce 操作,在计算设备间高效交换梯度数据并进行求和,使得最终每个设备都有了所有设备的梯度之和;
使用梯度求和的结果更新本地变量(镜像变量);
当所有设备均更新本地变量后,进行下一轮训练(即该并行策略是同步的)。
其中,最主要的 就是下面3个函数。
1 | # 创建strategy |