AlphaGo,每个实验1000个节点,每个节点4个GPU,4000 GPU。Siri,每个实验2个节点,8个GPU。AI研究,依赖海量数据计算,离性能计算资源。更大集群运行模型,把周级训练时间缩短到天级小时级。Kubernetes,应用最广泛容器集群管理工具,分布式TensorFlow监控、调度生命周期管理。容器集群自动化部署、扩容、运维开源平台,提供任务调度、监控、失败重启。TensorFlow、Kubernetes都是谷歌公司开源。https://kubernetes.io/ 。谷歌云平台化解决方案。https://cloud.google.com/ 。

分布式TensorFlow在Kubernetes运行。

部署、运行。安装Kubernetes。Minikube创建本地Kubernetes集群。Mac 先安装VirtualBox虚拟机。https://www.virtualbox.org/ 。Minikube Go语言编写,发布形式独立二进制文件,下载入到对应目录。命令:

curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.14.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

客户端kubectl,kubectl命令行与集群交互。安装:

curl -Lo kubectl http://storage.googleapis.com/kubernetes-release/release/v1.5.1/bin/darwin/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/

Minikube启动Kubernetes集群:

minikube start

Docker Hub最新镜像tensorflow/tensorflow(1.0版本) https://hub.docker.com/r/tensorflow/tensorflow/ 。配置参数服务器部署(deployment)文件,命名tf-ps-deployment.json:

{"apiVersion": "extensions/v1beta1","kind": "Deployment","metadata": {"name": "tensorflow-ps2"},"spec": {"replicas": 2,"template": {"metadata": {"labels": {"name": "tensorflow-ps2","role": "ps"}}},"spec": {"containers": [{"name": "ps","image": "tensorflow/tensorflow","ports": [{"containerPort": 2222}]}]}}
}

配置参数服务器服务(Service)文件,命名tf-ps-service.json:

{"apiVersion": "v1","kind": "Service","spec": {"ports": [{"port": 2222,"targetPort": 2222}],"selector": {"name": "tensorflow-ps2"}},"metadata": {"labels": {"name": "tensorflow","role": "service"}},"name": "tensorflow-ps2-service"
}

配置计算服务器部置文件,命名tf-worker-deployment.json:

{"apiVersion": "extensions/v1beta1","kind": "Deployment","metadata": {"name": "tensorflow-worker2"},"spec": {"replicas": 2,"template": {"metadata": {"labels": {"name": "tensorflow-worker2","role": "worker"}}},"spec": {"containers": [{"name": "worker","image": "tensorflow/tensorflow","ports": [{"containerPort": 2222}]}]}}
}

配置计算服务器服务文件,命名tf-worker-servic.json:

{"apiVersion": "v1","kind": "Service","spec": {"ports": [{"port": 2222,"targetPort": 2222}],"selector": {"name": "tensorflow-worker2"}},"metadata": {"labels": {"name": "tensorflow-worker2","role": "service"}},"name": "tensorflow-wk2-service"
}

执行命令:

kubectl create -f tf-ps-deployment.json
kubectl create -f tf-ps-service.json
kubectl create -f tf-worker-deployment.json
kubectl create -f tf-worker-service.json

运行 kubectl get pod,查看参数服务器和计算服务器全部创建完成。
进入每个服务器(Pod),部署mnist_replica.py文件。运行命令查看ps_host、worker_host IP地址。

kubectl describe service tensorflow-ps2-service
kubectl describe service tensorflow-wk2-service

打开4个终端,分别进入4个Pod。

kubectl exec -ti tensorflow-ps2-3073558082-3b08h /bin/bash
kubectl exec -ti tensorflow-ps2-3073558082-4x3j2 /bin/bash
kubectl exec -ti tensorflow-worker2-3070479207-k6z8f /bin/bash
kubectl exec -ti tensorflow-worker2-3070479207-6hvsk /bin/bash

mnist_replica.py部署到4个Pod。

curl https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/tools/dist_test/python/mnist_replica.py -o mnist_replica.py

在参数服务器容器执行:

python mnist_replica.py --ps_hosts=172.17.0.16:2222,172.17.0.17:2222 --worker_bosts=172.17.0.3:2222,172.17.0.8:2222 --job_name="ps" --task_index=0
python mnist_replica.py --ps_hosts=172.17.0.16:2222,172.17.0.17:2222 --worker_bosts=172.17.0.3:2222,172.17.0.8:2222 --job_name="ps" --task_index=1

在计算服务器容器执行:

python mnist_replica.py --ps_hosts=172.17.0.16:2222,172.17.0.17:2222 --worker_bosts=172.17.0.3:2222,172.17.0.8:2222 --job_name="worker" --task_index=0
python mnist_replica.py --ps_hosts=172.17.0.16:2222,172.17.0.17:2222 --worker_bosts=172.17.0.3:2222,172.17.0.8:2222 --job_name="worker" --task_index=1

把需要执行的源代码入训练数据、测试数据放在持久卷(persistent volume),在多个Pod间共享,避免在每一个Pod分别部署。
TensorFlow GPU Docker集群部署,Nvidia提供nvidia-docker方式,利用宿主机GPU设备,映射到容器。https://github.com/NVIDIA/nvidia-docker 。

训练好模型,打包制作环境独立镜像,方便测试人员部署一致环境,对不同版本模型做标记、比较不同模型准确率,从整体降低测试、部署上线工作复杂性。

参考资料:
《TensorFlow技术解析与实战》

欢迎推荐上海机器学习工作机会,我的微信:qingxingfengzi

学习笔记TF064:TensorFlow Kubernetes相关推荐

  1. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记--使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  2. 深度学习笔记:Tensorflow手写mnist数字识别

    文章出处:深度学习笔记11:利用numpy搭建一个卷积神经网络 免费视频课程:Hellobi Live | 从数据分析师到机器学习(深度学习)工程师的进阶之路 上一讲笔者和大家一起学习了如何使用 Te ...

  3. TensorFlow学习笔记——《TensorFlow技术解析与实战》

    著名历史学家斯塔夫里阿诺斯在<全球通史>中,曾以15世纪的航海在"物理上"连通"各大洲"作为标志将人类历史划分为两个阶段.在我正在写作的<互联 ...

  4. 学习笔记CB013: TensorFlow、TensorBoard、seq2seq

    2019独角兽企业重金招聘Python工程师标准>>> tensorflow基于图结构深度学习框架,内部通过session实现图和计算内核交互. tensorflow基本数学运算用法 ...

  5. 学习笔记TF066:TensorFlow移动端应用,iOS、Android系统实践

    TensorFlow对Android.iOS.树莓派都提供移动端支持. 移动端应用原理.移动端.嵌入式设备应用深度学习方式,一模型运行在云端服务器,向服务器发送请求,接收服务器响应:二在本地运行模型, ...

  6. TensorFlow Lite学习笔记

    TensorFlow Lite学习笔记 目录 TensorFlow Lite学习笔记 Tensorflow LIte Demo 模型固化freeze_graph和模型优化optimize_for_in ...

  7. Kubernetes学习笔记-未整理

    Kubernetes学习笔记 标签:Kubernetes 学习笔记 原文:https://github.com/wtysos11/NoteBook/blob/master/微服务/Kubernetes ...

  8. docker,k8s学习笔记汇总

    整理了下博客里关于docker和k8s的文章,方便查看 docker学习笔记(一)docker入门 docker学习笔记(二)创建自己的镜像 docker学习笔记(三)docker中的网络 docke ...

  9. TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络

    TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnote ...

最新文章

  1. Nmap扫描教程之网络基础服务DHCP服务类
  2. php和python对比-PHP、Python和Javascript的装饰器模式对比
  3. html在线转移,HTML5迁移
  4. 用matlab定义2020年元旦是星期三,如何用matlab实现某年某月某日是星期几的问题,...
  5. 曲线均匀分布_R——概率统计与模拟(三) 变换均匀分布对特定分布进行抽样
  6. P1247 取火柴游戏
  7. 100个数学家如何集体越狱??
  8. UE4与WEB服务器交互(json)
  9. 华为方舟编译器是黑科技?
  10. Respond.js让IE6-8支持CSS3 Media Query
  11. 将机器学习模型部署为REST API
  12. [CF1110E]Magic Stones
  13. 基于java客户关系管理系统
  14. 计算机网络:家庭无线网组建方案
  15. PageAdmin CMS网站建设教程:自定义字段如何关联栏目表
  16. maven工程报错:One or more constraints have not been satisfied
  17. pytorch之数据:pack_padded_sequence()与pad_packed_sequence()
  18. 通道和色彩调整——冷色调图片
  19. 前端测试 -- sinon.js
  20. Camera sensor 基本知识

热门文章

  1. ASP.NET Web API 实现客户端Basic(基本)认证 之简单实现
  2. Silverlight实用窍门系列:52.Silverlight中的MVVM框架极速入门(以MVVM Light Toolkit为例)...
  3. Cortex-M0 LPC11U 中断向量
  4. 记录一次frp失效bug
  5. java获取焦点的组件_JAVA组件焦点的特性:获取组件时其顶层组件必须为可见的...
  6. vsftp匿名访问目录_vsftp 使用匿名帐号登陆
  7. 数据库选型绕不开“CAP定理”是什么
  8. chrome动态ip python_简单python代码实现模拟浏览器操作
  9. poj1523(割点)
  10. HDU1042(高精度模拟乘法)