TensorFlow中的集群(cluster)指的是一系列能够针对图(Graph)进行分布式计算任务(task)。每个任务是同服务(server)相关联的。TensorFlow中的服务会包含一个用于创建session的主节点和至少一个用于图运算的工作节点,一个集群可以被拆分为一个活着多个作业(job),每个作业可以包含至少一个任务。

以下的例子是一个最简单的例子

1、服务端代码:

import tensorflow as tf

'''
运行命令:
python tensf_server_01 --job_name=ps --task_index=0
python tensf_server_01 --job_name=ps --task_index=0
python tensf_server_01 --job_name=work --task_index=0
python tensf_server_01 --job_name=work --task_index=1
python tensf_server_01 --job_name=work --task_index=2 ''' #1、配置服务器相关信息
#因为tensorflow底层代码中,默认就是使用ps和work分别表示两类不同的工作节点
#ps:变量/张量的初始化,存储相关节点
#work:变量/张量的计算/运算的相关节点
ps_host = ['127.0.0.1:33331','127.0.0.1:33332']
work_hosts = ['127.0.0.1:33333','127.0.0.1:33334','127.0.0.1:33335']
cluster = tf.train.ClusterSpec({'ps':ps_host,'work':work_hosts}) #2、定义一些运行参数(在运行该python文件的时候就可以制定这些参数了)
tf.app.flags.DEFINE_string('job_name',default_value='work',docstring="One of 'ps' or 'work'")
tf.app.flags.DEFINE_integer('task_index',default_value=0,docstring="Index of task within the job")
FLAGS = tf.app.flags.FLAGS #2、启动服务
#_下划线表示占位符
def main(_):
print(FLAGS.job_name)
server = tf.train.Server(cluster,job_name=FLAGS.job_name,task_index=FLAGS.task_index)
server.join() if __name__ == '__main__':
#底层默认会调用main方法
tf.app.run()

2、client端的代码:

import tensorflow as tf
import numpy as np #1、构建图
#表示使用ps的job,task:0表示使用第一个配置,也就是127.0.0.1:33331
with tf.device('/job:ps/task:0'):
#构造函数
x = tf.constant(np.random.rand(100).astype(np.float32)) with tf.device('/job:ps/task:1'):
y = y = x * 0.2 +0.3 #2、运行
with tf.Session(target='grpc://127.0.0.1:33335',
config=tf.ConfigProto(log_device_placement=True)) as sess:
sess.run(y)

四、Tensorflow的分布式训练的更多相关文章

  1. 『TensorFlow』分布式训练_其三_多机分布式

    本节中的代码大量使用『TensorFlow』分布式训练_其一_逻辑梳理中介绍的概念,是成熟的多机分布式训练样例 一.基本概念 Cluster.Job.task概念:三者可以简单的看成是层次关系,tas ...

  2. [翻译] 使用 TensorFlow 进行分布式训练

    本文以两篇官方文档为基础来学习TensorFlow如何进行分布式训练,借此进入Strategy世界.

  3. 『TensorFlow』分布式训练_其一_逻辑梳理

    1,PS-worker架构 将模型维护和训练计算解耦合,将模型训练分为两个作业(job): 模型相关作业,模型参数存储.分发.汇总.更新,有由PS执行 训练相关作业,包含推理计算.梯度计算(正向/反向 ...

  4. 『TensorFlow』分布式训练_其二_单机多GPU并行&GPU模式设定

    建议比对『MXNet』第七弹_多GPU并行程序设计 一.tensorflow GPU设置 GPU指定占用 gpu_options = tf.GPUOptions(per_process_gpu_mem ...

  5. [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架

    [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 目录 [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 0x00 摘要 0x01 架构图 ...

  6. [源码解析] TensorFlow 之 分布式变量

    [源码解析] TensorFlow 之 分布式变量 目录 [源码解析] TensorFlow 之 分布式变量 1. MirroredVariable 1.1 定义 1.2 相关类 1.2.1 类体系 ...

  7. 文本分布式表示(二):用tensorflow和word2vec训练词向量

    看了几天word2vec的理论,终于是懂了一些.理论部分我推荐以下几篇教程,有博客也有视频: 1.<word2vec中的数学原理>:http://www.cnblogs.com/pegho ...

  8. tensorflow分布式训练

    https://blog.csdn.net/hjimce/article/details/61197190  tensorflow分布式训练 https://cloud.tencent.com/dev ...

  9. TensorFlow Distribution(分布式中的数据读取和训练)

    本文目的 在介绍estimator分布式的时候,官方文档由于版本更新导致与接口不一致.具体是:在estimator分布式当中,使用dataset作为数据输入,在1.12版本中,数据训练只是datase ...

随机推荐

  1. (四) Keras Dropout和正则化的使用

    视频学习来源 https://www.bilibili.com/video/av40787141?from=search&seid=17003307842787199553 笔记 使用drop ...

  2. mysql很有用的语句

    1)删除表内所有数据: 再添加数据时,如果设有自动增加的id,那么id也会重置. truncate table 表名; 2)创建结构相同的数据库表 create table 数据库名.新表名 like ...

  3. 小米5.0以上系统如何没ROOT激活xposed框架的经验

    在较多企业的引流或者业务操作中,大多数需要使用安卓的黑高科技术xposed框架,这段时间,我们企业购买了一批新的小米5.0以上系统,大多数都是基于7.0以上版本,大多数不能够获取Root的su超级权限 ...

  4. Android项目实战登录&注册

    由于项目中大部分界面都有一个后退键和一个标题栏,为避免代码冗杂以及便于利用,我们可以将后推荐和标题栏单独抽取出来定义一个标题栏布局,在 res/layout 目录下新建一个 Layout resour ...

  5. 测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法

    今天遇见了一个奇怪的问题,在IDE中run unit test,全部cases都成功了,但是后来通过mvn test运行case确保错了.在寻求原因的同时也找到了对应的解决方法. Run Unit T ...

  6. 数据库原理剖析 - 序列1 - B+树

    本文节选自<软件架构设计:大型网站技术架构与业务架构融合之道>第6.3章节. 作者微信公众号: 架构之道与术.进入后,可以加入书友群,与作者和其他读者进行深入讨论.也可以在京东.天猫上购买 ...

  7. Python递归函数

    参考: https://pythonspot.com/recursion/ https://www.python-course.eu/recursive_functions.php 一.递归函数两大要 ...

  8. Redis 由浅入深

    1.redis是什么? redis是nosql(也是个巨大的map) 单线程,但是可处理1秒10w的并发(数据都在内存中) 使用java对redis进行操作类似jdbc接口标准对mysql,有各类实现 ...

  9. CTF杂项之BubbleBabble加密算法

    这题很坑,刚开始我拿到就分析不出来了(/无奈),关键是不知道是什么加密算法,后来看题目描述的bubble,猜测是bubble 这种算法(听都没听说过...) 上图 这串编码 xinik-samak-l ...

  10. springboot 定时任务

    1.启动类新增注解 @EnableScheduling import org.springframework.boot.SpringApplication; import org.springfram ...