文章目录

  • 什么叫distributed tensorflow training,它到底干什么?
    • Cluster
    • master和workers
    • client
  • 最简单的模型Client---Master(worker)代码实现:
    • Master(worker):即当老板又当员工,属于个体户,local就不用接受任务了,来什么任务就执行什么任务
    • Client:build graph,把执行图的任务发给Master:
      • build graph
      • 把执行图的任务发给Master
  • 通用的的模型Client---Master(worker)--Workers代码实现:
    • Master/workers:因为安排任务已经在graph里面了,Master和workers没有区别(master隐含执行了sess.run):
    • Client:build graph,把执行图的任务发给Master:
      • build graph
      • 把执行图的任务发给Master:

什么叫distributed tensorflow training,它到底干什么?

就是把一个graph分成N部分分给N个server去计算(inGraph),或者把N张graph分给N个server去计算(betweenGraph),混合的方式也可以。

Cluster

这个N个server就是Cluster,就是我们中文的“集群”。

master和workers

这N个server里面有一台server叫master(当然也可以兼职worker的工作),其他的N-1个server叫worker,master的本职工作就是:执行Graph,按照Graph分配任务给workers,并负责协调workers之间的交流,整理结果。

client

master是这N个servers对外的负责人,master会和client对接。
啥是client?就是服务器的客户,就是买服务的人,说人话就是写代码,运行主程序的地方,它的工作是:创建Graph(这个图里包含了任务分配),并把创建好的Graph发送给master,master完成任务后把结果发给client。

最简单的模型Client—Master(worker)代码实现:

Master(worker):即当老板又当员工,属于个体户,local就不用接受任务了,来什么任务就执行什么任务

import tensorflow as tf
server=tf.train.Server.create_local_server()
server.join()

执行完毕会有一个该server的IP标识:grpc://172.16.100.2:12222

Client:build graph,把执行图的任务发给Master:

build graph

import tensorflow as tf
import numpy as np# create data
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1 + 0.3### create tensorflow structure start ###
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
biases = tf.Variable(tf.zeros([1]))
y = Weights*x_data + biases
loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
### create tensorflow structure end ###

把执行图的任务发给Master

server_target="grpc://172.16.100.2:12222"  #master
# create datax_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1 + 0.3with tf.Session(server_target) as sess:sess.run(init)for step in range(1000):sess.run(train)if step % 20 == 0:print(step, sess.run(Weights), sess.run(biases))

通用的的模型Client—Master(worker)–Workers代码实现:

Master/workers:因为安排任务已经在graph里面了,Master和workers没有区别(master隐含执行了sess.run):

tf.train.Server(cluster, job_name=“canshu”, task_index=0)描述了当前主机需要执行的任务,就是当前主机接受的任务:
每一个workers都被/job:job_id/task:task_id给唯一确定了。

# 172.16.100.2:12222主机:工种为canshu的,第0个task
import tensorflow as tf
cluster=tf.train.ClusterSpec({"canshu": ["172.16.100.2:12222",# /job:canshu/task:0 运行的主机"172.16.100.3:12222",# /job:canshu/task:1 运行的主机],"gongzuo": ["172.16.100.4:12222",  # /job:gongzuo/task:0 运行的主机"172.16.100.5:12222"   # /job:gongzuo/task:1 运行的主机]})
server = tf.train.Server(cluster, job_name="canshu", task_index=0)
server.join()# 172.16.100.3:12222主机:工种为canshu的,第1个task
import tensorflow as tf
cluster=tf.train.ClusterSpec({"canshu": ["172.16.100.2:12222",# /job:canshu/task:0 运行的主机"172.16.100.3:12222",# /job:canshu/task:1 运行的主机],"gongzuo": ["172.16.100.4:12222",  # /job:gongzuo/task:0 运行的主机"172.16.100.5:12222"   # /job:gongzuo/task:1 运行的主机]})
server = tf.train.Server(cluster, job_name="canshu", task_index=1)
server.join()# 172.16.100.4:12222主机:工种为gongzuo的,第0个task
import tensorflow as tf
cluster=tf.train.ClusterSpec({"canshu": ["172.16.100.2:12222",# /job:canshu/task:0 运行的主机"172.16.100.3:12222",# /job:canshu/task:1 运行的主机],"gongzuo": ["172.16.100.4:12222",  # /job:gongzuo/task:0 运行的主机"172.16.100.5:12222"   # /job:gongzuo/task:1 运行的主机]})
server = tf.train.Server(cluster, job_name="gongzuo", task_index=0)
server.join()# 172.16.100.5:12222主机:工种为gongzuo的,第1个task
import tensorflow as tf
cluster=tf.train.ClusterSpec({"canshu": ["172.16.100.2:12222",# /job:canshu/task:0 运行的主机"172.16.100.3:12222",# /job:canshu/task:1 运行的主机],"gongzuo": ["172.16.100.4:12222",  # /job:gongzuo/task:0 运行的主机"172.16.100.5:12222"   # /job:gongzuo/task:1 运行的主机]})
server = tf.train.Server(cluster, job_name="gongzuo", task_index=1)
server.join()

Client:build graph,把执行图的任务发给Master:

build graph

import tensorflow as tf
import numpy as np# create data
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1 + 0.3### create tensorflow structure start ###
starttime=datetime.now()
with tf.device("/job:canshu/task:0"):Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))with tf.device("/job:canshu/task:1"):biases = tf.Variable(tf.zeros([1]))with tf.device("/job:gongzuo/task:0"):y = Weights*x_data + biasesloss = tf.reduce_mean(tf.square(y-y_data))with tf.device("/job:gongzuo/task:1"):optimizer = tf.train.GradientDescentOptimizer(0.5)train = optimizer.minimize(loss)init = tf.global_variables_initializer()

把执行图的任务发给Master:

server_target="grpc://172.16.100.2:12222"  #master
with tf.Session(server_target) as sess:sess.run(init)for step in range(1000):sess.run(train)if step % 20 == 0:print(step, sess.run(Weights), sess.run(biases))

tensorflow学习:分布式tensorflow使用,代码实现inGraph方式相关推荐

  1. [深度学习] 分布式Tensorflow 2.0 介绍(二)

    [深度学习] 分布式模式介绍(一) [深度学习] 分布式Tensorflow 2.0介绍(二) [深度学习] 分布式Pytorch 1.0介绍(三) [深度学习] 分布式Horovod介绍(四) 一 ...

  2. [深度学习] 分布式Horovod介绍(四)

    [深度学习] 分布式模式介绍(一) [深度学习] 分布式Tensorflow介绍(二) [深度学习] 分布式Pytorch 1.0介绍(三) [深度学习] 分布式Horovod介绍(四) 实际应用中, ...

  3. [深度学习] 分布式Pytorch介绍(三)

    [深度学习] 分布式模式介绍(一) [深度学习] 分布式Tensorflow介绍(二) [深度学习] 分布式Pytorch介绍(三) [深度学习] 分布式Horovod介绍(四)  一  Pytorc ...

  4. [深度学习] 分布式模式介绍(一)

    [深度学习] 分布式模式介绍(一) [深度学习] 分布式Tensorflow介绍(二) [深度学习] 分布式Pytorch 1.0介绍(三) [深度学习] 分布式Horovod介绍(四) 一  分布式 ...

  5. 学习笔记TF061:分布式TensorFlow,分布式原理、最佳实践

    分布式TensorFlow由高性能gRPC库底层技术支持.Martin Abadi.Ashish Agarwal.Paul Barham论文<TensorFlow:Large-Scale Mac ...

  6. 【深度学习】初识tensorflow之分布式训练

    情况一.单机单卡 单机单卡是最普通的情况,当然也是最简单的,示例代码如下: #coding=utf-8 #单机单卡 #对于单机单卡,可以把参数和计算都定义再gpu上,不过如果参数模型比较大,显存不足等 ...

  7. TensorFlow 学习指南 四、分布式

    原文:LearningTensorFlow.com 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 自定义函数 Conway 的生命游戏是一个有趣的计算机科学模拟,它在地图上发生 ...

  8. 吴恩达深度学习代码_吴恩达深度学习笔记(58)-深度学习框架Tensorflow

    TensorFlow 有很多很棒的深度学习编程框架,其中一个是TensorFlow,很期待帮助你开始学习使用TensorFlow,我想在这个笔记中向你展示TensorFlow程序的基本结构,然后让你自 ...

  9. 2_初学者快速掌握主流深度学习框架Tensorflow、Keras、Pytorch学习代码(20181211)

    初学者快速掌握主流深度学习框架Tensorflow.Keras.Pytorch学习代码 一.TensorFlow 1.资源地址: 2.资源介绍: 3.配置环境: 4.资源目录: 二.Keras 1.资 ...

最新文章

  1. 用python做一个图片验证码
  2. 介绍linux下Source Insight强大代码编辑器sublime_text_3
  3. thinkphp读写mysql的枷锁_thinkphp5 数据库配置读写分离
  4. opencv随机数的产生
  5. (转)利用WPF的ListView进行大数据量异步加载
  6. linux怎么开启httpd服务公钥,在Apache httpd服务器上部署SSL证书
  7. easyui关于validatebox实现多重规则验证的实践
  8. NSCTF-Reverse02 超级详细且简单的办法搞定
  9. linux 目录为空 删不掉,空文件夹删不掉怎么办 空文件夹删不掉解决方法
  10. Ubuntu 报错 malloc(): unsorted double linked list corrupted
  11. Vue组件化开发--脚手架的安装使用、目录结构说明
  12. Beautiful Soup的安装
  13. 内网ip如何传输文件
  14. 一个有下雨效果的注册界面(html+css+原生javascript)
  15. FFMPEG批量绿幕色度抠像BAT脚本实现
  16. (二)IJCAI 国际人工智能联合会议
  17. SAP BP屏幕增强页签
  18. 微小宝公众号排行榜_8月 | 广东高校团学系统微信公众号影响力排行榜
  19. 通信工程交换传输实习报告
  20. 621. 任务调度器

热门文章

  1. pycharm mysql安装_PyCharm安装连接MySQL
  2. mysql 安装软件无法启动不了_Mysql 安装服务无法启动解决方案与使用的一般使用指令...
  3. php 扩展 mysql_PHP链接MySQL的常用扩展函数
  4. 阶乘之和计算_利用MULTINOMIAL函数计算参数和的阶乘与各参数阶乘乘积的比 值
  5. mysql 树表删除无效节点
  6. 查看redhat版本信息
  7. python特殊符号请求参数_python-参数化-(3)(excel中特殊标识字符替换数据)
  8. u盘无法复制文件进去_U盘无法复制超过4GB的大文件怎么办?
  9. php json csv,比JSON更简单,随便记数据的CSV介绍,以及PHP解析方法-csv文件怎么打开...
  10. html 中写样式,在html文档中如何定义内部样式表