gRPC(google remote producer call)框架,一种通信方式,远程过程调用,对于底层协议的一个封装,解决一些传输错误的问题,同步的问题。
七层网络及对应协议:
应用层(Http),表示层,会话层,传输层(tcp/udp),网络层(ip),数据链路层(ppp),物理层(rj45)
TensorFlow怎么进行分布式计算?
两类服务器:
参数服务器(parameter server,ps),
工作服务器(worker):主要功能就是去计算
Tensorflow中,设备命名的规则:
参数服务器:可以有多台,/job:ps/task:0
工作服务器 :可以有多台,/job:worker:task:0/cpu:0
其中0有几台就改变,比如第二台工作服务器,使用第二个gpu
写为:/job:worker:task:1/gpu:1
分布式更新参数的模式:协调存储更新参数:
(1)同步模式更新:比如:worker1得到变化值1,worker2得到变化值2,将两个变化值传到ps,求平均值,然后更新。同步是因为每个服务器有时间快慢,需要等到所有服务器都传到变化值,一起更新
(2)异步模式更新:比如:worker1得到变化值1,worker2得到变化值2,每个服务器运行处理完后,及时将值传到ps,直接计算。可以提高速度,不用顾虑单个服务器的性能
梯度下降:w’=w-a(方向)变化量1
W’’=w’-a(方向)-变化量2
分布式代码:
import tensorflow as tf
FLAGS = tf.app.flags.FLAGS
tf.app.flags.DEFINE_string("job_name", " ","启动服务的类型ps or worker")
t