tensorflow 怎么配置非数据并行分布式?

这里是 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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180912A1O7IT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券