设为首页 收藏本站
查看: 1029|回复: 0

[经验分享] 学习笔记TF064:TensorFlow Kubernetes

[复制链接]

尚未签到

发表于 2018-1-4 19:40:33 | 显示全部楼层 |阅读模式
  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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-431652-1-1.html 上篇帖子: Kubernetes 在知乎上的应用 下篇帖子: Kubernetes服务目录的设计
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表