这里是 AI 研习社,我们的问答版块已经正式推出了!欢迎大家来多多交流~
https://club.leiphone.com/page/question
社长为你推荐来自 AI 研习社问答社区的精华问答。如有你也有问题,欢迎进社区提问。
话不多说,直接上题
@iresine问:tensorflow 怎么配置非数据并行分布式?
假设模型有两个conv层和1个fc层,有3台服务器每台各一块显卡,请问要怎么实现把计算图拆成3部分,每块显卡分别计算一个层,而不是把计算图完整复制3份放到3块卡上独立计算?
来自社友的回答
@王奇文:
你指的是in-graph模式的模型并行吧?思考以下几个问题:
cpu和gpu的优势和劣势分别是什么?cpu擅长指定操作,逻辑判断,gpu擅长矩阵运算,二者相互补充,一边用cpu执行参数更新、逻辑运算,gpu执行矩阵运算
tf的分布式实现有哪些类别?单机单卡,单机多卡,多机多卡。此处适用于多机多卡(单卡),3个服务器分成两类:参数服务器ps,计算服务器work,中间通过gRPC调用、传输
2个卷积核1个fc真的有必要分散在三台机器吗?如果纯粹为了做实验,可以参考下tf官方的in-graph实现。基本方法是:
定义网络结构时,指定tf.device(''),如:
withtf.device('/job:ps/task:0'):#参数定义在机器D上
w=tf.get_variable('w',(2,2),tf.float32,initializer=tf.constant_initializer(2))
b=tf.get_variable('b',(2,2),tf.float32,initializer=tf.constant_initializer(5))
withtf.device('/job:worker/task:0/cpu:0'):#在机器A cpu上运行
addwb=w+b
withtf.device('/job:worker/task:1/cpu:0'):#在机器B cpu上运行
mutwb=w*b
withtf.device('/job:worker/task:2/cpu:0'):#在机器C cpu上运行
divwb=w/b
领取专属 10元无门槛券
私享最新 技术干货