tensorflow分布式案例

一、流程
(一)创建集群对象
(二)创建服务
(三)服务端等待接受参数
(四)客户端使用不同设备进行定义模型以进行计算
(五)使用高级会话类
二、代码实现
import tensorflow as tf
FLAGS = tf.app.flags.FLAGS
tf.app.flags.DEFINE_string(‘job_name’, ‘’, ‘启动服务的类型ps or worker’)
tf.app.flags.DEFINE_integer(‘task_index’, 0, ‘指定ps或者worker当中的哪一台服务器以task:0, task:1’)

def main(argv):
#定义全集技术的op,给钩子列表当中的训练步数使用
global_step = tf.contrib.framework.get_or_create_global_step()
#指定集群描述对象,ps ,worker
cluster = tf.train.ClusterSpec({‘ps’:[‘10.211.55.3:2223’], ‘worker’:[‘192.168.65.44:2222’]})
#创建不同的服务 ps ,worker
server = tf.train.Server(cluster, job_name=FLAGS.job_name, task_index=FLAGS.task_index)
#根据不同服务做不同的事情 ps:去更新保存参数 ,worker:指定设备去运行模型计算
if FLAGS.job_name == ‘ps’:
#参数服务器什么都不用干,是需要等待worker传递参数
server.join()
else:
worker_device = ‘/job:worker/task:0/cpu:0/’
#可以指定设备去运行
with tf.device(tf.train.replica_device_setter(
worker_device=worker_device,
cluster=cluster
)):
#简单做一个矩阵乘法运算
x = tf.Variable([[1, 2, 3, 4]])
w = tf.Variable([[2], [2], [2], [2]])

        mat = tf.matmul(x, w)

    #创建分布式会话
    with tf.train.MonitoredTrainingSession(
        master='grpc://192.168.65.44:2222',#指定主worker
        is_chief=(FLAGS.task_index == 0),#判断是否是主worker
        config=tf.ConfigProto(log_device_placement=True),#打印设备信息
        hooks=[tf.train.StopAtStepHook(last_step=200)]
    ) as mon_sess:
        while not mon_sess.should_stop():
            print(mon_sess.run(mat))

if name == ‘main’:
tf.app.run()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值