一、分布式计算
跟多GPU不同是:数据不是从主存拿的,是在分布式文件系统拿的,有多个工作站,工作站中有多个GPU,通过网络读取数据到GPU中,GPU通过网络接收到来自参数服务器的参数进行运算计算梯度,最后将梯度传回服务器,服务器对梯度进行求和更新参数
二、GPU架构
本地多通讯指GPU与GPU之间速度快
三、计算小批量步骤
1、从每个计算服务器中读取小批量中的一块
2、进一步将数据切分到每个GPU上
3、每个worker从参数服务器中获取模型参数
4、复制到每个GPU中
5、每个GPU计算梯度
6、将所有GPU中的梯度求和
7、梯度传回服务器中
8、每个服务器对梯度求和并更新参数
四、同步SGD
五、性能
在分布式计算时要避免通信的开销大于计算的开销,一个简单的方法就是将batchsize增大,但数据集不大的时候用过于大的batchsize可能会使测试精度变低;
增大批量大小,会一定程度的提高系统性能;但随着批量大小的增加,收敛程度会变低,需要更多的epoch进行训练,所以需要权衡
1、使用一个大的数据集
2、需要更好的GPU-GPU和机器-机器带宽
3、高效的数据读取与预处理
4、模型需要更好的计算(FLOP)通讯(model size)比Inception>ResNet>AlexNet因为AlexNet一下子就算完了,很难做并行
5、使用足够大的批量大小来得到好的系统性能
6、使用高效的优化算法来对应大批量大小
六、总结