利用 Kubernetes+GPU 方案构建 Tensorflow 应用
Kubernetes 在版本 1.6 后正式加入了 Nvidia GPU 的调度功能,支持在 Kubernetes 上运行和管理基于 GPU 的应用。
而在 2017 年 9 月 12 日,阿里云发布了新的异构计算类型 GN5,基于 P100 nvidia GPU,提供灵活强悍的异构计算模型,从基础设施到部署环境全面升级,可有效提升矩阵运算、视频识别、机器学习、搜索排序等处理计算效率。
在阿里云的 GN5 上部署一套支持 GPU 的Kubernetes集群是非常简单的,利用 ROS 模板一键部署,将阿里云强大的计算能力便捷的输送到您的手中。不出 10
分钟,您就可以开始在阿里云的 Kubernetes 集群上开始您的 Kubernetes+GPU+TensorFlow 的深度学习之旅了。
前提准备
- 登录 容器服务管理控制台、ROS 管理控制台 和 RAM 管理控制台 开通相应的服务。
- 所创建的资源均为按量付费,根据阿里云的计费要求,请确保您的现金账户余额不少于 100 元。
- 目前,按量付费的异构计算 GN5 需要申请工单开通,请登录阿里云账号后,按照如下内容提交 ECS 工单。
我需要申请按量付费的GPU计算型gn5,请帮忙开通,谢谢。
当审批通过后,您就可以在ECS控制台实例列表页面中,单击 创建实例,选择按量付费 页签,单击选择其他实例规格查看 GPU 节点是否可用。


使用限制
目前仅支持华北2(北京)、华东2(上海)和华南1(深圳)创建 Kubernetes 的 GPU 集群。
集群部署
在本文中, 我们提供了部署单 Master 节点,并可以配置 worker 节点数的部署方式,同时可以按需扩容和缩容,创建和销毁集群也非常简单。
部署GPU应用
最后我们部署一个基于 GPU 的 TensorFlow Jupyter 应用来做一下简单的测试,以下为我们的 Jupyter 的部署配置文件jupyter.yml。
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: jupyter
spec:
replicas: 1
template:
metadata:
labels:
k8s-app: jupyter
spec:
containers:
- name: jupyter
image: registry-vpc.cn-beijing.aliyuncs.com/tensorflow-samples/jupyter:1.1.0-devel-gpu
imagePullPolicy: IfNotPresent
env:
- name: PASSWORD
value: mypassw0rd
resources:
limits:
alpha.kubernetes.io/nvidia-gpu: 1
volumeMounts:
- mountPath: /usr/local/nvidia
name: nvidia
volumes:
- hostPath:
path: /var/lib/nvidia-docker/volumes/nvidia_driver/375.39
name: nvidia
---
apiVersion: v1
kind: Service
metadata:
name: jupyter-svc
spec:
ports:
- port: 80
targetPort: 8888
name: jupyter
selector:
k8s-app: jupyter
type: LoadBalancer
Deployment配置:
alpha.kubernetes.io/nvidia-gpu
指定调用 Nvidia GPU 的数量。type=LoadBalancer
指定使用阿里云的负载均衡访问内部服务和负载均衡。- 为了能让 GPU 容器运行起来,需要将 Nvidia 驱动和 CUDA 库文件指定到容器中。这里需要使用 hostPath,在阿里云上您只需要将 hostPath
指定到/var/lib/nvidia-docker/volumes/nvidia_driver/375.39
即可,并不需要指定多个 bin 和 lib 目录。 - 环境变量
PASSWORD
指定了访问 Jupyter 服务的密码,您可以按照您的需要修改。
创建应用
发布者:佚, 佚名,转转请注明出处:https://www.cms2.cn/aliyun/csk/5165.html