GPU 机器学习开箱使用记录
内容简介
一、 ECI GPU 介绍
二、 ECI GPU 完成
三、 ECI GPU 运用
四、 演示实例
一、 ECI GPU 介绍
ECI GPU 实例为用户容器提供 NVIDIA GPU 资源以加快机器学习等事务的运行。
1. 预装 GPU 驱动:
用户无需安装和保护驱动;
2. 兼容 CRI 接口:
Kubernetes 能够直接对接 ECI GPU 实例进行调度和编排;
3. 一键式布置,开箱即用:
4. 利用官方容器镜像,用户只需要专心于事务功用的开发和完成,无需关心CUDA Toolkit/Tensorflow/MxNet 等工具和结构的搭建和布置。
5. 经过 ECI GPU 实例,用户能够一键式布置和运行经过 GPU 加快的机器学习等事务。
二、 ECI GPU 完成
用户容器若要运用 GPU,与其他实例不同,容器中的进程无法经过内核接口拜访GPU 资源,有必要经过 GPU 驱动库来与 GPU 进行交互。
ECIGPU 的完成计划本质上就是经过 NVIDIA 开源的 libnvidia-container 组件将 ECI 预装的 GPU 驱动的必要动态库文件挂载到用户容器中,从而使得用户容器能够经过 GPU 驱动的动态库文件拜访到GPU资源。
1. containerd 向 runc 下发创立运用GPU的容器指令;
2. runc 创立容器时调用
prestart hook(nvidia- container-runtime-hook);
3. hook 调用 libnvidia-container 将必要的 GPU 驱动动态库挂载到容器上;
4. 创立好容器进程经过挂载的 GPU 驱动动态库拜访并运用 GPU 资源。
一、 ECI GPU运用
ACK/ASK
metadata:
name:gpu-example
annotations:
k8s.allyun.com/eci-use-specs:ecs.gn6v-c8g1.8xlarge
spec:
containers:
-name:tensorflow
image:tensorflow/tensorf1ow:1.14.0-gpu
imagePullPolicy: IfNotPresent
resources;
limits:
nvidia.com/gpu:1
- name: mxnet
1mage:mxnet/python:1.4.1_gpu_cu100_py3
imagePullPolicy:IfNotPresent
resources:
limits:
nvidia.com/gpu:1
二、 演示实例
MNIST
1. 创立容器
apiVersion:v1
kind:Pod
metadata:
name: mnist-gpu-example
annotations:
k8s.aliyun.com/eci-use-specs:ecs.gn5i-c8g1.2xlarge
spec:
containers:
-name:pytorch
image: nvcr.io/nvidia/pytorch:18.05-py3
imagePullPolicy:IfNotPresent
args:["sleep","infinity"]
resources:
limits:
nvidia.com/gpu:1
2. 经过 Kubectl 登录到容器中执行 nvidia-smi 指令承认 GPU 可用;
3. 在 /workspace/examples/mnist 目录下执行 python main.py 开始训练任务。
我有话说: