1、知识点

"""
单机多卡:一台服务器上多台设备(GPU)
参数服务器:更新参数,保存参数
工作服务器:主要功能是去计算更新参数的模式:1、同步模型更新2、异步模型更新
工作服务器会默认一个机器作为老大,创建会话tensorflow设备命名规则:/job:ps/task:0   job:ps,服务器类型   task:0,服务器第几台/job:worker/task:0/cpu:0/job:worker/task:0/gpu:0/job:worker/task:0/gpu:1设备使用:1、对集群当中的一些ps,worker进行指定2、创建对应的服务, ps:创建ps服务  join()worker创建worker服务,运行模型,程序,初始化会话等等指定一个默认的worker去做3、worker使用设备:with tf.device("/job:worker/task:0/gup:0"):计算操作4、分布式使用设备:tf.train.replica_device_setter(worker_device=worker_device,cluster=cluster)作用:通过此函数协调不同设备上的初始化操作worker_device:为指定设备, “/job:worker/task:0/cpu:0” or "/job:worker/task:0/gpu:0"cluster:集群描述对象
API:1、分布式会话函数:MonitoredTrainingSession(master="",is_chief=True,checkpoint_dir=None,   hooks=None,save_checkpoint_secs=600,save_summaries_steps=USE_DEFAULT,save_summaries_secs=USE_DEFAULT,config=None)参数:master:指定运行会话协议IP和端口(用于分布式) "grpc://192.168.0.1:2000"is_chief:是否为主worker(用于分布式)如果True,它将负责初始化和恢复基础的TensorFlow会话。如果False,它将等待一位负责人初始化或恢复TensorFlow会话。checkpoint_dir:检查点文件目录,同时也是events目录config:会话运行的配置项, tf.ConfigProto(log_device_placement=True)hooks:可选SessionRunHook对象列表should_stop():是否异常停止run():跟session一样可以运行op2、tf.train.SessionRunHookHook to extend calls to MonitoredSession.run()1、begin():在会话之前,做初始化工作2、before_run(run_context)在每次调用run()之前调用,以添加run()中的参数。ARGS:run_context:一个SessionRunContext对象,包含会话运行信息return:一个SessionRunArgs对象,例如:tf.train.SessionRunArgs(loss)3、after_run(run_context,run_values)在每次调用run()后调用,一般用于运行之后的结果处理该run_values参数包含所请求的操作/张量的结果 before_run()。该run_context参数是相同的一个发送到before_run呼叫。ARGS:run_context:一个SessionRunContext对象run_values一个SessionRunValues对象, run_values.results注:再添加钩子类的时候,继承SessionRunHook3、tf.train.StopAtStepHook(last_step=5000)指定执行的训练轮数也就是max_step,超过了就会抛出异常tf.train.NanTensorHook(loss)判断指定Tensor是否为NaN,为NaN则结束注:在使用钩子的时候需要定义一个全局步数:global_step = tf.contrib.framework.get_or_create_global_step()
"""

2、代码

import tensorflow as tfFLAGS = tf.app.flags.FLAGStf.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()# 1、指定集群描述对象, ps , workercluster = tf.train.ClusterSpec({"ps": ["10.211.55.3:2223"], "worker": ["192.168.65.44:2222"]})# 2、创建不同的服务, ps, workerserver = 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/"# 3、可以指定设备取运行
        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)# 4、创建分布式会话
        with tf.train.MonitoredTrainingSession(master= "grpc://192.168.65.44:2222", # 指定主workeris_chief= (FLAGS.task_index == 0),# 判断是否是主workerconfig=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()

3、分布式架构图

转载于:https://www.cnblogs.com/ywjfx/p/10940027.html

tensorflow分布式运行相关推荐

  1. tensowflow 训练 远程提交_一文说清楚Tensorflow分布式训练必备知识

    Note: 原文发表于我的知乎专栏:算法工程师的自我修养,欢迎关注! Methods that scale with computation are the future of AI. -Rich S ...

  2. 阿里云高性能AI服务 -- 基于Docker和EGS一键创建高性能Tensorflow分布式训练

    一. 概述 Tensorflow是目前使用最为广泛的深度学习框架之一,但是目前搭建分布式多机多卡训练比较困难,而且Tensorflow原生的分布式的性能很差,特别在云计算虚拟化环境下并行的挑战更大. ...

  3. 阿里云深度学习实验室(DL-Lab) -- 基于Docker和EGS一键创建高性能Tensorflow分布式训练

    原文链接:点击打开链接 摘要: ## 一. 概述 Tensorflow是目前使用最为广泛的深度学习框架之一,但是目前搭建分布式多机多卡训练比较困难,而且Tensorflow原生的分布式的性能很差. 为 ...

  4. oracle job 每月前十天运行_Tensorflow源码解析7 -- TensorFlow分布式运行时

    1 概述 TensorFlow架构设计精巧,在后端运行时这一层,除了提供本地运行时外,还提供了分布式运行时.通过分布式训练,在多台机器上并行执行,大大提高了训练速度.前端用户通过session.run ...

  5. TensorFlow分布式(多GPU和多服务器)详解

    本文介绍有关 TensorFlow 分布式的两个实际用例,分别是数据并行(将数据分布到多个 GPU 上)和多服务器分配. 玩转分布式TensorFlow:多个GPU和一个CPU 展示一个数据并行的例子 ...

  6. 白话tensorflow分布式部署和开发

    2019独角兽企业重金招聘Python工程师标准>>> 白话tensorflow分布式部署和开发 博客分类: 深度学习 关于tensorflow的分布式训练和部署, 官方有个英文的文 ...

  7. TensorFlow 分布式

    一.简介 使用单台机器或者单个GPU/CPU来进行模型训练,训练速度会受资源的影响,因为毕竟单个的设备的计算能力和存储能力具有一定的上限的,针对这个问题,TensorFlow支持分布式模型运算,支持多 ...

  8. tensorflow 启动多个session_Tensorflow源码解析7 -- TensorFlow分布式运行时

    1 概述 TensorFlow架构设计精巧,在后端运行时这一层,除了提供本地运行时外,还提供了分布式运行时.通过分布式训练,在多台机器上并行执行,大大提高了训练速度.前端用户通过session.run ...

  9. 深度学习(五十五)tensorflow分布式训练

    tensorflow分布式训练 博客:http://blog.csdn.net/hjimce 微博:黄锦池-hjimce   qq:1393852684 情况一.单机单卡 单机单卡是最普通的情况,当然 ...

  10. TensorFlow分布式全套(原理,部署,实例)

    TF的实现分为了单机实现和分布式实现,在分布式实现中,需要实现的是对client,master,worker process不在同一台机器上时的支持.数据量很大的情况下,单机跑深度学习程序,过于耗时, ...

最新文章

  1. SQL Server游标的使用【转】
  2. 鼠标滑过某一个图标时,提示讯息
  3. idea maven中的profiles是干什么的
  4. Linux网络协议栈(四)——链路层(2)
  5. Linux minicom串口通讯
  6. github 创建文件夹
  7. 在实时操作系统里随便写代码都能硬实时吗?
  8. 浮点数不能全等比较吗php,汇编语言FCOM指令:比较浮点数值
  9. 账号管理工具_新媒体账号管理工具,自媒体运营神器,管理多个账号很简单
  10. 毕设题目:Matlab元胞自动机人员疏散
  11. 面对疫情,大学生如何保持良好的心理状态
  12. python正则匹配数字_python——正则匹配数字
  13. 计算机思维在化学上的应用,【科学思维】化隐性为显性思想在化学中的应用
  14. 重新发现Oracle太美之root.sh
  15. C语言求输入一个非负数,返回它组成数字之和
  16. [待续]联想ThinkPadE420升级之路:英睿达(Crucial)MX500+XP开启AHCI模式+64位win10
  17. 使用vagrant搭建三台虚拟机环境
  18. 小人再狡猾也斗不过老江湖,辨别小人就看这三个地方,说得真准
  19. Java --- Xstream使用
  20. 利用最小二乘法做线性回归

热门文章

  1. 大学c语言作业网站,西北农林科技大学c语言作业
  2. 【数据库原理实验(openGauss)】交互式SQL语句
  3. Mysql binlog 的写入机制
  4. Hive找出所有科目成绩都大于某一学科平均成绩的学生
  5. 深度剖析“GCC编译器编译过程”
  6. css布局:多列等高布局
  7. 解决 react-router 中 history is 'undefined' 的问题
  8. 一.Nginx的特性和一些知识点
  9. red hat linux 6.4 DNS配置(怎么不让发表?)
  10. openssl学习笔记--CA及https网站证书配置