通过local server理解分布式TensorFlow集群的应用与实现。

​​简介

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(),就是启动服务和避免进程退出的。

本文介绍了分布式TensorFlow集群中的local server,欢迎大家关注,下期将介绍完整分布式集群的部署和应用。​​​​

分布式TensorFlow集群local server使用详解的更多相关文章

  1. 理解和实现分布式TensorFlow集群完整教程

    手把手教你搭建分布式集群,进入生产环境的TensorFlow 分布式TensorFlow简介 前一篇<分布式TensorFlow集群local server使用详解>我们介绍了分布式Ten ...

  2. mongo 3.4分片集群系列之六:详解配置数据库

    这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...

  3. mongo 3.4分片集群系列之五:详解平衡器

    这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...

  4. [spark]-Spark2.x集群搭建与参数详解

    在前面的Spark发展历程和基本概念中介绍了Spark的一些基本概念,熟悉了这些基本概念对于集群的搭建是很有必要的.我们可以了解到每个参数配置的作用是什么.这里将详细介绍Spark集群搭建以及xml参 ...

  5. MySQL集群简介与配置详解

    1. 先了解一下你是否应该用MySQL集群. 减少数据中心结点压力和大数据量处理,采用把MySQL分布,一个或多个application对应一个MySQL数据库.把几个MySQL数据库公用的数据做出共 ...

  6. 生产环境elasticsearch5.0.1和6.3.2集群的部署配置详解

    线上环境elasticsearch5.0.1集群的配置部署 es集群的规划: 硬件: 7台8核.64G内存.2T ssd硬盘加1台8核16G的阿里云服务器 其中一台作为kibana+kafka连接查询 ...

  7. zookeeper集群安装及使用详解

    1. Zookeeper简介 ZooKeeper是一个开源的分布式框架,提供了协调分布式应用的基本服务.它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronizatio ...

  8. 全网最详细的Ceph14.2.5集群部署及配置文件详解,快来看看吧! -- <2>

    部署Ceph集群 Ceph版本选择 Ceph版本来源介绍 Ceph 社区最新版本是 14,而 Ceph 12 是市面用的最广的稳定版本. 第一个 Ceph 版本是 0.1 ,要回溯到 2008 年 1 ...

  9. StreamSets学习系列之StreamSets的集群安装(图文详解)

    不多说,直接上干货! 若是集群安装 需要在对应节点执行相同的操作. 见 StreamSets学习系列之StreamSets支持多种安装方式[Core Tarball.Cloudera Parcel . ...

随机推荐

  1. AJAX之再升级版PJAX

    前几天在一个大神群里提到ajax优化选项卡功能的方法上,有位低调的大神默默得打出:了解一下pjax,好奇心的驱使下,我具体查了一下pjax,不一般啊,ax结合pushState和ajax技术, 不需要 ...

  2. PHP生成唯一的促销/优惠/折扣码,由字母和数字组成。

    首先我们先搞清楚什么是促销/优惠/折扣码?它有什么用作: 每一个电子商务网站,现在有一种或多种类型的优惠/折扣/优惠券系统,给大家分享一下如何在PHP生成唯一的促销/折扣码.主要是实现一个优惠码系统, ...

  3. DAY1-作业

    Python-day1-------> 本节内容: Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据 ...

  4. IIS 设置 FTP 服务器 添加多个账户

    我们有很多童鞋经常开不动IIS自带的FTP如何创建,就算创建了也不会实现多用户,下面我来分享一下我的经验吧: 使用 IIS 设置 FTP 服务器 依次单击“开始”按钮.“控制面板”和“添加或删除程序” ...

  5. IDEA-servlet项目创建web项目

    准备:1. 安装jdk1.82. 安装tomcat9.0(idea只支持4.0  9.0的服务器) 一.创建并设置javaweb工程 1.创建javaweb工程File --> New --&g ...

  6. python 异常处理技巧

  7. python 六种典型的异常

  8. Django框架form表单配合ajax注册

    总结一下,其实form组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 下面是写的登录页面的实例 1:views视图中的代码 # 注册页面 def regi ...

  9. java执行sql语句使用别名时显示Column '***' not found

    java执行sql语句使用别名时显示Column '*' not found 在做一个小项目时遇到个问题,执行sql语句使用别名时总是报sql异常 Column '*' not found,折腾半天终 ...

  10. 一维数组的求平均成绩 Day06

    package com.sxt.arraytest1; /* * 求班里学生的平均成绩,以及成绩的综合 输出每个同学的成绩 */ import java.util.Arrays; import jav ...