此wiki主要介绍分布式环境使用的一些条件,一直所要注意的内容;

确保在此之前阅读过TensorFlow for distributed

1.集群描述

当前tensorflow 的版本(0.8.0),并没有提供统一的资源管理器,所以若要启动处理节点需要手动完成,并且要每个节点一份完整的集群描述,目的是让该节点能够找到其他的节点

例如:启动Server的命令如下

python ./tensorflow/tools/dist_test/server/grpc_tensorflow_server.py  --cluster_spec='ps|10.100.208.23:22222,worker|10.100.208.23:22223;10.100.208.23:22224'  --job_name=ps --task_index=0

--cluster_spec:描述集群的所有Server的ip:port,并形成一个dictionary,上边的命令最后形成

"ps":[0.100.208.23:22222]

"worker":[10.100.208.23:22223;10.100.208.23:22224]

--job_name --task_index  : 通过这两个参数能够确定,这个当前进程使用dictionary里的哪个ip:port.

NOTE:实际上"ps","worker"并不含有什么实际意义,在启动server时可以自行指定名称,以便后续业务代码识别即可。

2.进行计算:

进行分布式计算可以将某些计算分派给某个Server的某个资源(cpu,gpu)来执行。

例如

1
2
3
4
5
6
7
8
9
10
11
12
13
import tensorflow as tf
 
def main() :
        with tf.device("/job:ps/task:0/cpu:0"):
                = tf.Variable(1)
                = tf.Variable(1)
        with tf.device("/job:worker/task:0/gpu:1"):
                = + b
        with tf.Session("grpc://localhost:22223",config=tf.ConfigProto(allow_soft_placement=True,log_device_placement=True)) as sess:
                result = sess.run(c)
                print(result)
if __name__ == '__main__':
    main()

其中 两个变量a,b的声明工作在ps进程的cpu0上完成; a+b的操作在worker进程的gpu1上完成

NOTE:若要指定运行的device,必须使用源码编译后的启动方式

bazel-bin/tensorflow/core/distributed_runtime/rpc/grpc_tensorflow_server

NOTE:如果在不同的进程里生命的变量进行运算可能会报错

tensorflow.python.framework.errors.FailedPreconditionError: Attempting to use uninitialized value

需要先初始化变量

sess.run(tf.initialize_all_variables())

具体可参考 https://www.tensorflow.org/versions/r0.8/how_tos/variable_scope/index.html#sharing-variables

NOTE:创建tf.Session时,需要制定到worker地址否则会报错

tensorflow.python.framework.errors.InternalError: Blas SGEMM launch failed

并且导致进程退出

TensorFlow 分布式实践的更多相关文章

  1. TensorFlow分布式实践

    大数据时代,基于单机的建模很难满足企业不断增长的数据量级的需求,开发者需要使用分布式的开发方式,在集群上进行建模.而单机和分布式的开发代码有一定的区别,本文就将为开发者们介绍,基于TensorFlow ...

  2. tensorflow分布式训练

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

  3. [源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑

    [源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑 目录 [源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑 1. 总述 2. 接口 2.1 ...

  4. 基于Python玩转人工智能最火框架 TensorFlow应用实践

    慕K网-299元-基于Python玩转人工智能最火框架 TensorFlow应用实践 需要联系我,QQ:1844912514

  5. 【原创 深度学习与TensorFlow 动手实践系列 - 4】第四课:卷积神经网络 - 高级篇

    [原创 深度学习与TensorFlow 动手实践系列 - 4]第四课:卷积神经网络 - 高级篇 提纲: 1. AlexNet:现代神经网络起源 2. VGG:AlexNet增强版 3. GoogleN ...

  6. 【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇

    [原创 深度学习与TensorFlow 动手实践系列 - 3]第三课:卷积神经网络 - 基础篇 提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实 ...

  7. Python玩转人工智能最火框架 TensorFlow应用实践 ☝☝☝

    Python玩转人工智能最火框架 TensorFlow应用实践 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 全民人工智能时代,不甘心只做一个旁观者,那就现在 ...

  8. java 分布式实践

    java 分布式实践 spring boot cloud实践 开源的全链路跟踪很多,比如 Spring Cloud Sleuth + Zipkin,国内有美团的 CAT 等等. 其目的就是当一个请求经 ...

  9. 基于Python玩转人工智能最火框架 TensorFlow应用实践✍✍✍

    基于Python玩转人工智能最火框架  TensorFlow应用实践 随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.而在昨天机器之心发起 ...

随机推荐

  1. 萌新接触前端的第二课——CSS

    前端知识——CSS CSS(英文全称:Cascading Style Sheets) 中文名层叠样式表,是一种用来表现HTML或XML等文件样式的计算机语言.CSS不仅可以静态地修饰网页,还可以配合各 ...

  2. Emmagee——开源Android性能测试工具

    工具:Emmagee作者:孔庆云 网易(杭州)质量保证部 开源地址:https://github.com/NetEase/Emmagee Wiki:https://github.com/NetEase ...

  3. Python 数据结构 链表

    什么是时间复杂度 时间频度:一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才知道.但是我们不可能也没有必要对每一个算法都进行上机测试,只需要知道那个算法花费的时间多,那个算法花费得 ...

  4. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(六)RTP音视频传输解析层之音视频数据传输格式

    一.差异 本地音视频数据格式和用来传输的音视频数据格式存在些许差异,由于音视频数据流到达客户端时,需要考虑数据流的数据边界.分包.组包顺序等问题,所以传输中的音视频数据往往会多一些字节. 举个例子,有 ...

  5. maven 详解二

    转自 http://www.cnblogs.com/whgk/p/7121336.html 前一节我们明白了maven是个什么玩意,这一节就来讲讲他的一个重要的应用场景,也就是通过maven将一个ss ...

  6. 工具方法 获取远程IP

    java-code: public String getRemoteIP(HttpServletRequest request) { String clientIp = request.getHead ...

  7. 在屏幕拖拽3D物体移动

    3D物体的拖拽不同于2D的.因为3D物体有x,y,z当然.实际拖拽还是在XZ平面.只是多了几个转换 using UnityEngine; using System.Collections; publi ...

  8. KMP模板(bin)

    KMP模板 主要是kuangbin的模板,之后加了一点我的习惯和理解. kmpN() 作用:构造next数组 参数:模式串,模式串长度 kmpC() 作用:返回模式串在主串中出现的次数(可重复) 参数 ...

  9. jQuery-切换事件2

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. 解析img图片没找到onerror事件

    本篇文章主要介绍了img图片没找到onerror事件 Stack overflow at line: 0 需要的朋友可以过来参考下,希望对大家有所帮助 打开网页时提示 Stack overflow a ...