学习笔记TF064:TensorFlow Kubernetes
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相关推荐
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)
续集请点击我:tensorflow学习笔记--使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...
- 深度学习笔记:Tensorflow手写mnist数字识别
文章出处:深度学习笔记11:利用numpy搭建一个卷积神经网络 免费视频课程:Hellobi Live | 从数据分析师到机器学习(深度学习)工程师的进阶之路 上一讲笔者和大家一起学习了如何使用 Te ...
- TensorFlow学习笔记——《TensorFlow技术解析与实战》
著名历史学家斯塔夫里阿诺斯在<全球通史>中,曾以15世纪的航海在"物理上"连通"各大洲"作为标志将人类历史划分为两个阶段.在我正在写作的<互联 ...
- 学习笔记CB013: TensorFlow、TensorBoard、seq2seq
2019独角兽企业重金招聘Python工程师标准>>> tensorflow基于图结构深度学习框架,内部通过session实现图和计算内核交互. tensorflow基本数学运算用法 ...
- 学习笔记TF066:TensorFlow移动端应用,iOS、Android系统实践
TensorFlow对Android.iOS.树莓派都提供移动端支持. 移动端应用原理.移动端.嵌入式设备应用深度学习方式,一模型运行在云端服务器,向服务器发送请求,接收服务器响应:二在本地运行模型, ...
- TensorFlow Lite学习笔记
TensorFlow Lite学习笔记 目录 TensorFlow Lite学习笔记 Tensorflow LIte Demo 模型固化freeze_graph和模型优化optimize_for_in ...
- Kubernetes学习笔记-未整理
Kubernetes学习笔记 标签:Kubernetes 学习笔记 原文:https://github.com/wtysos11/NoteBook/blob/master/微服务/Kubernetes ...
- docker,k8s学习笔记汇总
整理了下博客里关于docker和k8s的文章,方便查看 docker学习笔记(一)docker入门 docker学习笔记(二)创建自己的镜像 docker学习笔记(三)docker中的网络 docke ...
- TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络
TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnote ...
最新文章
- Nmap扫描教程之网络基础服务DHCP服务类
- php和python对比-PHP、Python和Javascript的装饰器模式对比
- html在线转移,HTML5迁移
- 用matlab定义2020年元旦是星期三,如何用matlab实现某年某月某日是星期几的问题,...
- 曲线均匀分布_R——概率统计与模拟(三) 变换均匀分布对特定分布进行抽样
- P1247 取火柴游戏
- 100个数学家如何集体越狱??
- UE4与WEB服务器交互(json)
- 华为方舟编译器是黑科技?
- Respond.js让IE6-8支持CSS3 Media Query
- 将机器学习模型部署为REST API
- [CF1110E]Magic Stones
- 基于java客户关系管理系统
- 计算机网络:家庭无线网组建方案
- PageAdmin CMS网站建设教程:自定义字段如何关联栏目表
- maven工程报错:One or more constraints have not been satisfied
- pytorch之数据:pack_padded_sequence()与pad_packed_sequence()
- 通道和色彩调整——冷色调图片
- 前端测试 -- sinon.js
- Camera sensor 基本知识
热门文章
- ASP.NET Web API 实现客户端Basic(基本)认证 之简单实现
- Silverlight实用窍门系列:52.Silverlight中的MVVM框架极速入门(以MVVM Light Toolkit为例)...
- Cortex-M0 LPC11U 中断向量
- 记录一次frp失效bug
- java获取焦点的组件_JAVA组件焦点的特性:获取组件时其顶层组件必须为可见的...
- vsftp匿名访问目录_vsftp 使用匿名帐号登陆
- 数据库选型绕不开“CAP定理”是什么
- chrome动态ip python_简单python代码实现模拟浏览器操作
- poj1523(割点)
- HDU1042(高精度模拟乘法)