TensorFlow 分布式实践
此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 tfdef main() : with tf.device("/job:ps/task:0/cpu:0"): a = tf.Variable(1) b = tf.Variable(1) with tf.device("/job:worker/task:0/gpu:1"): c = a + 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 分布式实践的更多相关文章
- TensorFlow分布式实践
大数据时代,基于单机的建模很难满足企业不断增长的数据量级的需求,开发者需要使用分布式的开发方式,在集群上进行建模.而单机和分布式的开发代码有一定的区别,本文就将为开发者们介绍,基于TensorFlow ...
- tensorflow分布式训练
https://blog.csdn.net/hjimce/article/details/61197190 tensorflow分布式训练 https://cloud.tencent.com/dev ...
- [源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑
[源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑 目录 [源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑 1. 总述 2. 接口 2.1 ...
- 基于Python玩转人工智能最火框架 TensorFlow应用实践
慕K网-299元-基于Python玩转人工智能最火框架 TensorFlow应用实践 需要联系我,QQ:1844912514
- 【原创 深度学习与TensorFlow 动手实践系列 - 4】第四课:卷积神经网络 - 高级篇
[原创 深度学习与TensorFlow 动手实践系列 - 4]第四课:卷积神经网络 - 高级篇 提纲: 1. AlexNet:现代神经网络起源 2. VGG:AlexNet增强版 3. GoogleN ...
- 【原创 深度学习与TensorFlow 动手实践系列 - 3】第三课:卷积神经网络 - 基础篇
[原创 深度学习与TensorFlow 动手实践系列 - 3]第三课:卷积神经网络 - 基础篇 提纲: 1. 链式反向梯度传到 2. 卷积神经网络 - 卷积层 3. 卷积神经网络 - 功能层 4. 实 ...
- Python玩转人工智能最火框架 TensorFlow应用实践 ☝☝☝
Python玩转人工智能最火框架 TensorFlow应用实践 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 全民人工智能时代,不甘心只做一个旁观者,那就现在 ...
- java 分布式实践
java 分布式实践 spring boot cloud实践 开源的全链路跟踪很多,比如 Spring Cloud Sleuth + Zipkin,国内有美团的 CAT 等等. 其目的就是当一个请求经 ...
- 基于Python玩转人工智能最火框架 TensorFlow应用实践✍✍✍
基于Python玩转人工智能最火框架 TensorFlow应用实践 随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.而在昨天机器之心发起 ...
随机推荐
- 细细探究MySQL Group Replicaiton — 配置维护故障处理全集(转)
如果转载,请注明博文来源: www.cnblogs.com/xinysu/ ,版权归 博客园 苏家小萝卜 所有.望各位支持!
- Java中Collections类的排序sort函数两种用法
java中的Colletions类主要实现列表List的排序功能.根据函数参数的传递,具体的排序可以分为 : 1. 自然排序(natural ordering). 函数原型:sort(List< ...
- xtrabackup全库还原+binlog日志还原
1.场景 mysql数据库误删某个库.误删表或者误删除数据 如下模拟图:备份策略定为每天凌晨进行全库备份,在B时间点进行了误操作以后,有两种恢复场景,一种是恢复到B时间点误操作前,一种是恢复到C时间点 ...
- 邮件收取客户端LumiSoft类库接收yahoo邮件的问题。
//开始循环取邮件数据 m_pImap.Fetch( false, IMAP_t_SeqSet.Parse("1:*"), new IMAP_t_Fetch_i[]{ new IM ...
- SEO--提高权重
搜索引擎提交入口:将新网站提交收录 SEO优化三要素:标题 关键词 描述 外链(友情链接) 目的:提高权重 注意事项: 1.和内容相近的网站交换 2.链接交换形式多样 单向链接:别人指向我或我指向别人 ...
- [pat]1045 Favorite Color Stripe
1.用一个数组里面存储喜爱数字的值来区分数字是不是喜爱,以及值的大小顺序,用vector循环删除a数组中不是喜爱的元素,这里it=erase()之后it自动指向下一个元素,由于循环每次还要自增1,所以 ...
- iOS UI布局-定时器
定时器是比较常用的一个UI控件,在付款.抢购时,经常会使用到.提取成一个通用的方法 /** * 倒计时GCD通用方法 * 通常用的计时器都是用NSTimer,但是NSTimer在线程很吃紧的时候效果不 ...
- vue滚动事件销毁,填坑
eg:富文本的头部固定,当滚轮大于200时(举例)固定在浏览器头部,距离大于富文本时,头部消失 效果: 在富文本下面加一个空div 这么写: mounted() { $(window).scroll( ...
- 巧用CurrentThread.Name来统一标识日志记录(完结篇)
▄︻┻┳═一Agenda: ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录 ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(续) ▄︻┻┳═一巧用Cur ...
- 34.js----JS 开发者必须知道的十个 ES6 新特性
JS 开发者必须知道的十个 ES6 新特性 这是为忙碌的开发者准备的ES6中最棒的十个特性(无特定顺序): 默认参数 模版表达式 多行字符串 拆包表达式 改进的对象表达式 箭头函数 =&> ...