Tensorflow 中的分布式

分布式训练可以提高模型训练的效率,节省时间,因此,用tensorflow训练模型的时候,经常用到分布式。分布式有两种模式,一种是单机多节点:单机多GPU ,多CPU,GPU+CPU等模式,通俗说就是我只有一台电脑,从这台电脑中分配出几个处理任务的端口(节点),同时进行job 或者 work;另一种是多机多节点,就是不同电脑,相互通过IP访问,并互相共享参数,像几个小伙伴一起完成模型训练。
tensorflow中的群集下可以有多个job,每个job下可以有多个work,这些work都是与server相关联。
分布式步骤:
ps:变量/张量初始化的存储相关节点
ps_host=[‘127.0.0.1:33330’,‘127.0.0.1:33331’]
work:变量/张量初始化的计算的相关节点
work_host=[‘127.0.0.1:33332’,‘127.0.0.1:33333’,‘127.0.0.1:33334’]
1、群集的创建
cluster=tf.train.ClusterSpec({‘ps’:ps_host,‘work’:work_host})
2、构建server,job和task,job对应ps_host,task对应work_host
一个job对应三个work,相当于要建立6个server
运行1 python tf_code_sever.py --job_name=ps --task_index=0
2、python tf_code_sever.py --job_name=ps --task_index=1
3、 python tf_code_sever.py --job_name=work --task_index=0
4、 python tf_code_sever.py --job_name=work --task_index=1
5、 python tf_code_sever.py --job_name=work --task_index=2
开出5个节点
tf.app.flags.DEFINE_string(‘job_name’,default_value=‘work’,
docstrings=‘one of “ps” or “work”’)#用flags传参,定义名字说明
tf.app.flags.DEFINE_integer('task_index’default_value=‘work’,
docstrings=‘Index of task within the job’)引用下标
接受参数:
def main ():
#启动服务
#创建server
FLAGS=tf.app.flags.FLAGS
server=tf.train.Server(cluster,job_name=FLAGS.job_name,
task_index=FLAGS.task_index)
#加载服务
server.join(_)

if name==‘main’:
tf.app.run(_)
#必须要这样的结构,默认去运行main 方法

运行,打入1 python tf_code_sever.py --job_name=ps --task_index=0
2、python tf_code_sever.py --job_name=ps --task_index=1
3、 python tf_code_sever.py --job_name=work --task_index=0
4、 python tf_code_sever.py --job_name=work --task_index=1
5、 python tf_code_sever.py --job_name=work --task_index=2

启动起来之后,再建立模拟文件去调用节点
import tensorflow as tf
import numpy as np
调用设备
with tf.device(’/job:ps/task:0’): 代表用ps的第0个设备
x=tf.variable(np.random.rand(100).astype(np.float32))

with tf.device(’/job:pa/task:2’):
y=tf.add(tf.multiply(x,0.2),0.2)
做运行
with tf.Session(target=‘localhost:33334’,config=tf.Configproto(log_device_placement=True))as sess:’加配置文件,准备用那各地址建立会话
print(sess.run(y))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值