分布式TensorFlow集群local server使用详解
简介
TensorFlow从0.8版本开始,支持分布式集群,并且自带了local server方便测试。
Local server和分布式服务的接口一样,我们将从local server入手,详细解读分布式机器学习集群的用法。
Local server的最简单用法
TensorFlow官方文档提供了local server的最简单用法,安装TensorFlow后直接在交互式Python终端中执行即可。
注意这里server和client启动在同一个进程了,为什么这么说呢?我们都了解TensorFlow客户端可以用Python或C++编写,本质上就是构建一个可执行的Graph,而Graph需要在Session中执行,因此代码中只要包含Session()的就是客户端,这时通过server.target选择本地刚创建的server来执行op。大家可能会好奇server.target是什么,我们在终端可以输出是'grpc://localhost:38612',一个字符串表示服务端的ip和端口,同时也确认它的协议是Google开源的gRPC。
如果你愿意搭建环境测试,只要一行命令即可docker run -it tobegit3hub/ml-dev bash,其中ml-dev是我开发的机器学习镜像包含大量工具库,当然你也可以使用官方的tensorflow/tensorflow镜像。
启动local server服务
前面提到local server和client在同一个进程,输出结果后服务端和客户端都退出了,实际上服务端应该以daemon的形式提供服务,local server也可以的。
我们编写local_server.py文件,注意这里调用join()是为了避免进程退出,同样会暴露一个grpc的端口。
启动客户端服务
启动local server后,我们可以在本地起一个客户端来调用,注意这里local server的地址是
注意要启动客户端,我们需要开另一个终端进入local server的容器,例如“docker exec -it 100cd4fb5bca bash”。
我们看到constant的字符串已经正常输出,有人发现这与单机版的TensorFlow例子很像,实际上Session的参数不同,并且这个op是在local server进程中执行并返回的,如果使用错误端口就会报RPC请求连接错误。
最后总结
我们总结一下,TensorFlow的local server实现了与分布式server一样的接口,通过了解local server的使用和实现我们就更容易理解分布式TensorFlow的使用了。其中server对象有比较重要的概念就是server.targe,客户端通过targe找到对应的集群,还有两个函数分别是server.start()和server.join(),就是启动服务和避免进程退出的。
感谢作者:https://weibo.com/ttarticle/p/show?id=2309403987407065210809
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)