作者:亚S哥_271 | 来源:互联网 | 2023-07-08 15:41
分布式TensorFlow分布式Tensorflow是由高性能的gRPC框架作为底层技术来支持的。这是一个通信框架gRPC(googleremoteprocedurecall),是
分布式TensorFlow
分布式Tensorflow是由高性能的gRPC框架作为底层技术来支持的。这是一个通信框架gRPC(google remote procedure call),是一个高性能、跨平台的RPC框架。
RPC协议,即远程过程调用协议。是指通过网络从远程计算机程序上请求服务。
分布式原理:
单机多卡是指单台服务器有多块GPU设备。假设一台机器上有4块GPU,单机多GPU的训练过程如下:
1)在单机单GPU的训练中,数据是一个batch一个batch的训练。 在单机多GPU中,数据一 次处理4个batch(假设是4个GPU训练),每个GPU处理一个batch的数据计算。
2)变量,或者说参数,保存在CPU上。数据由CPU分发给4个GPU,在GPU上完成计算,得到每个批次要更新的梯度。
3)在CPU上收集完4个GPU上要更新的梯度,计算一下平均梯度,然后更新。
4)循环进行上面步骤
多机多卡(分布式)
分布式是指有多台计算机,充分使用多台计算机的性能,处理数据的能力。可以根据不同计算机划分不同的工作节点。当数据量或者计算量达到超过一台计算机处理能力的上限的话,必须使用分布式。
多机多卡分布式的架构:
参数作业所在的服务器称为参数服务器(parameter server),负责管理参数的存储和更新;
工作节点(worker job)的服务器主要从事计算的任务,如运行操作。worker节点中需要一个主节点来进行会话初始化,创建文件等操作,其他节点等待进行计算。
分布式更新参数的模式:
更新参数分为同步和异步两种方式,即异步随机梯度下降法(Async-SGD)和同步随机梯度下降法(Sync-SGD)
同步随即梯度下降法的含义是在进行训练时,每个节点的工作任务需要读入共享参数,执行并行的梯度计算,同步需要等待所有工作节点把局部的梯度算好,然后将所有共享参数进行合并、累加,再一次性更新到模型的参数;下一个批次中,所有工作节点拿到模型更新后的参数再进行训练。这种方案的优势是,每个训练批次都考虑了所有工作节点的训练情况,损失下降比较稳定;劣势是,性能瓶颈在于最慢的工作结点上。
异步随机梯度下降法的含义是每个工作结点上的任务独立计算局部梯度,并异步更新到模型的参数中,不需要执行协调和等待操作。这种方案的优势是,性能不存在瓶颈;劣势是,每个工作节点计算的梯度值发送回参数服务器会有参数更新的冲突,一定程度上会影响算法的收敛速度,在损失下降的过程中抖动较大。