Kubernetes在版本1.6后正式加入了Nvidia GPU的调度功能,支持在Kubernetes上运行运行和管理基于GPU的应用。而在2017年9月12日,阿里云发布了新的异构计算类型GN5,基于P100 nvidia GPU, 提供灵活强悍的异构计算模型,从基础设施到部署环境全面升级,可有效提升矩阵运算、视频识别、机器学习、搜索排序等处理计算效率。当Kubernetes和GPU在阿里云上相遇,会有什么样美好的事情发生呢?
在阿里云的GN5上部署一套支持GPU的Kubernetes集群是非常简单的,利用ROS模板一键部署,将阿里云强大的计算能力便捷的输送到您的手中。不出10分钟,您就可以开始在阿里云的Kubernetes集群上开始您的Kubernetes+GPU+TensorFlow的深度学习之旅了。
我需要申请按量付费的GPU计算型gn5,请帮忙开通,谢谢。
当审批通过后,您就可以在 ECS控制台 的 按量付费 的计费方式下查看GPU节点是否可用。
目前仅支持华北2(北京),华东2(上海)和华南1(深圳)创建Kubernetes的GPU集群。
在本文中, 我们提供了部署单Master节点,并可以配置worker的节点数,同时可以按需扩容和缩容,创建和销毁集群也是非常简单的。
2. 填写参数并单击 创建
3. 单击 创建, 启动部署
这样,部署请求已经成功提交。 可以单击 进入事件列表 实时监控部署过程
4. 点击概览查看,部署完成后的输出结果
通过输出结果中返回的信息,可以对 Kubernetes 集群进行管理:
5. 通过通过 kubectl 连接 Kubernetes 集群 , 并且通过命令查看GPU节点
kubectl describe node {node-name}
Name: cn-beijing.i-{name}
Role:
...
Addresses:
InternalIP: 192.168.2.74
Capacity:
alpha.kubernetes.io/nvidia-gpu: 1
cpu: 4
memory: 30717616Ki
pods: 110
Allocatable:
alpha.kubernetes.io/nvidia-gpu: 1
cpu: 4
memory: 30615216Ki
pods: 110
...
可以看到总共的和可分配的GPU数量都为1。
最后我们部署一个基于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服务的密码,您可以按照您的需要修改
1. 按照文档介绍的方式连接Kubernetes Web UI, 点击 CREATE 创建应用
2. 单击 Upload a YAML or JSON file。选择刚才创建的 jupyter.yml 文件
3. 待部署成功后, 在 Kubernetes Web UI 上定位到 default 命名空间,选择 Services。
可以看到刚刚创建的 jupyter-svc 的 jupyter 服务的外部负载均衡地址(External endpoints)
4. 点击外部负载均衡的地址,您就可以直接访问到Jupyter服务, 通过web Terminal内执行nvidia-smi
命令查看容器内GPU设备状况。我们可以看到当前的容器里已经分配了一块Tesla P100 的GPU卡。
这样,您就可以正式开始自己的深度学习之旅
利用阿里云容器服务的Kubernetes+GPU部署方案,您无需操心复杂Nvidia驱动和Kubernetes集群配置,一键部署,不出十分钟就可以轻松获得阿里云强大的异构计算能力和Kubernetes的GPU应用部署调度能力。这样您就可以专心的构建和运行自己的深度学习应用了。欢迎您尝试和体验。
后续我们会提供通过阿里云容器服务直接和部署Kubernetes+GPU的能力,敬请期待哦!
了解更多阿里云容器服务内容, 请访问https://www.aliyun.com/product/containerservice