单机多GPU训练
先简单介绍下单机的多GPU训练,然后再介绍分布式的多机多GPU训练。
单机的多GPU训练, tensorflow的官方已经给了一个cifar的例子,已经有比较详细的代码和文档介绍,这里大致说下多GPU的过程,以便方便引入到多机多GPU的介绍。
单机多GPU的训练过程:
通俗解释:
老师给小明和小华布置了10000张纸的乘法题并且把所有的乘法的结果加起来,每张纸上有128道乘法题。这里一张纸就是一个batch, batch_size就是128. 小明算加法比较快,小华算乘法比较快,于是小华就负责计算乘法, 小明负责把小华的乘法结果加起来 。这样小明就是CPU,小华就是GPU.
这样计算的话, 预计小明和小华两个人得要花费一个星期的时间才能完成老师布置的题目。于是小明就招来2个算乘法也很快的小红和小亮。于是每次小明就给小华,小红,小亮各分发一张纸,让他们算乘法, 他们三个人算完了之后, 把结果告诉小明,小明把他们的结果加起来,然后再给他们每人分发一张算乘法的纸,依次循环,知道所有的算完。
这里小明采用的是同步模式,就是每次要等他们三个都算完了之后,再统一算加法,算完了加法之后,再给他们三个分发纸张。这样速度就取决于他们三个中算乘法算的最慢的那个人,和分发纸张的速度。
TF分布式模式
In-graph 模式
将模型的计算图的不同部分放在不同的机器上执行
In-graph模式和单机多GPU模型有点类似。还是一个小明算加法, 但是算乘法的就可以不止是他们一个教室的小华,小红,小亮了。可以是其他教师的小张,小李。。。。
In-