四、Tensorflow的分布式训练
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的分布式训练的更多相关文章
- 『TensorFlow』分布式训练_其三_多机分布式
本节中的代码大量使用『TensorFlow』分布式训练_其一_逻辑梳理中介绍的概念,是成熟的多机分布式训练样例 一.基本概念 Cluster.Job.task概念:三者可以简单的看成是层次关系,tas ...
- [翻译] 使用 TensorFlow 进行分布式训练
本文以两篇官方文档为基础来学习TensorFlow如何进行分布式训练,借此进入Strategy世界.
- 『TensorFlow』分布式训练_其一_逻辑梳理
1,PS-worker架构 将模型维护和训练计算解耦合,将模型训练分为两个作业(job): 模型相关作业,模型参数存储.分发.汇总.更新,有由PS执行 训练相关作业,包含推理计算.梯度计算(正向/反向 ...
- 『TensorFlow』分布式训练_其二_单机多GPU并行&GPU模式设定
建议比对『MXNet』第七弹_多GPU并行程序设计 一.tensorflow GPU设置 GPU指定占用 gpu_options = tf.GPUOptions(per_process_gpu_mem ...
- [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架
[源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 目录 [源码解析] 深度学习分布式训练框架 horovod (5) --- 融合框架 0x00 摘要 0x01 架构图 ...
- [源码解析] TensorFlow 之 分布式变量
[源码解析] TensorFlow 之 分布式变量 目录 [源码解析] TensorFlow 之 分布式变量 1. MirroredVariable 1.1 定义 1.2 相关类 1.2.1 类体系 ...
- 文本分布式表示(二):用tensorflow和word2vec训练词向量
看了几天word2vec的理论,终于是懂了一些.理论部分我推荐以下几篇教程,有博客也有视频: 1.<word2vec中的数学原理>:http://www.cnblogs.com/pegho ...
- tensorflow分布式训练
https://blog.csdn.net/hjimce/article/details/61197190 tensorflow分布式训练 https://cloud.tencent.com/dev ...
- TensorFlow Distribution(分布式中的数据读取和训练)
本文目的 在介绍estimator分布式的时候,官方文档由于版本更新导致与接口不一致.具体是:在estimator分布式当中,使用dataset作为数据输入,在1.12版本中,数据训练只是datase ...
随机推荐
- CSS重要知识概述——Java Web从入门到精通第2章
一.CSS简单规则 CSS样式表包含3部分内容:选择符.属性和属性值 其中选择符包括基本的3种选择器: 1.标记选择器,如<a></a>标签等: 2.类别选择器,用class属 ...
- 【English】五、颜色相关
一.常见颜色 黑色 black 白色 white 蓝色 blue 橙色 orange 黄色 yellow 灰色 gray ...
- DIY手机锂电池万能充
今天翻出来一个诺基亚的旧手机,试了一下,无法开机,应该了电池亏电了.可惜手头没有充电器,无法给手机充电. 活人岂能让尿憋死?回想了一下以前用过的手机万能充的样式(这里暴露年龄了) 根据家中现成的材料, ...
- Linux- 常用命令, Vim编辑器操作
1.Linux命令: ls >查看列表(蓝色为文件夹,白色为文件) ls -a >显示包括隐藏文件的所有文件 ls -l >以列表的形式显示 ls -lh >类似于ls -l ...
- 【java学习】实践中总结--持续更新中
目录: 一些定义 配置环境 相关语法 1.一些定义 java中DO的含义: https://blog.csdn.net/canot/article/details/51698047 DAO 中包含了各 ...
- Spring AOP 五大通知类型
1.前置通知 在目标方法执行之前执行执行的通知. 前置通知方法,可以没有参数,也可以额外接收一个JoinPoint,Spring会自动将该对象传入,代表当前的连接点,通过该对象可以获取目标对象 和 目 ...
- Docker(4):Docker集中化web界面管理平台—Shipyard部署
//关闭防火墙 并禁止自启 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable fir ...
- 《JAVA程序设计》_第七周学习总结
一.学习内容 1.String类--8,1知识 Java专门提供了用来处理字符序列的String类.String类在java.lang包中,由于java.lang包中的类被默认引入,因此程序可以直接使 ...
- Chinese Mahjong UVA - 11210 (暴力+回溯递归)
思路:得到输入得到mj[]的各个牌的数量,还差最后一张牌.直接暴力枚举34张牌就可以了. 当假设得到最后一张牌,则得到了的牌看看是不是可以胡,如果可以胡的话,就假设正确.否者假设下一张牌. 关键还是如 ...
- C# 如何使用配置文件保存应用程序里的配置数据
引言 我不知大家早先是如何保存应用程序配置,以备下次打开时使用的,反正我开始学.Net的时候就去研究序列化,以二进制或XML格式的序列化来保存应用程序配置.这样每次都要建立单独的配置类,并书写读写配置 ...