四、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 ...
随机推荐
- Jmeter调用自定义jar包
一. 场景 在测试过程中, 可能需要调用第三方jar包来生成测试数据或者使用java工具类来实现业务场景, 普遍的做法是手动调用jar包, 再把这些值赋给jmeter中的某个参数, 以满足业务测试需求 ...
- LeetCode的刷题利器(伪装到老板都无法diss你没有工作)
在工程效率大行其道的今天,如果不会写点代码以后也不容易在测试圈混下去.今天给大家推荐一个LeetCode的刷题利器,可以伪装到连你老板在这里走过去都无法确认你是在干活呢,还是在干活呢. LeetCod ...
- C# -- 使用Ping检查网络是否正常
C# -- 使用Ping检查网络是否正常 需引用命名空间: using System.Net.NetworkInformation; 1. 代码实现 try { List<string> ...
- matlab导入txt数据画图
因为最近需要观察txt保存的一堆数据,则需要使用这些数据画图.强大的matlab分分钟解决了. 实例数据:data.txt 步骤: ①打开matlab -> HOME(主页) -> Imp ...
- 初窥css---盒子以及盒子扩展
盒子以及盒子扩展 盒子 盒子是用来实现将网页区域化的一个非常重要的工具,盒子使得网页各部分十分清晰的被分开,对于程序员十分友好(...),并且使得网页更加容易维护. 盒子的常用属性 宽和高这两个属性就 ...
- java的环境变量配置失败(java.exe、javaw.exe、javaws.exe优先级问题冲突)
前言:首先安装了intelliJ Idea 其次安装了JDK 1.8 配置完三个系统变量后,java和javac执行不通过 配置过程 1.我的电脑(右键)--->属性---->高级---& ...
- [题解] P2513 [HAOI2009]逆序对数列
动态规划,卡常数 题目地址 设\(F[X][Y]\)代表长度为\(X\)的序列,存在\(Y\)组逆序对的方案数量. 考虑\(F[X][i]\)向\(F[X+1][i]\)转移: 把数字\(X+1\)添 ...
- 一键发布部署vs插件[AntDeploy],让net开发者更幸福
一键发布工具(ant deploy tool) 插件下载地址: https://marketplace.visualstudio.com/items?itemName=nainaigu.AntDepl ...
- 手动安装Package Control
手动下载一个package control的包:https://github.com/wbond/package_control 然后Download ZIP后,解压,将解压后的文件夹重命名为 Pac ...
- linux查看目录下各个文件大小的命令
linux查看目录下各个文件大小的命令 由于需要经常查看各个文件的具体大小 ,所以这里记一下. 命令如下: du -h --max-depth=1