镜像管理

深度学习平台支持使用Dockerfile的方式定制运行环境,Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像,并最终创建一个你需要的新的镜像。

创建镜像

在深度学习平台控制台的右侧,找到“镜像”。点击“新建镜像”按钮。 图片 在镜像新建的页面,输入dockerfile、镜像名称、镜像备注等信息,点击“确定新建”。 图片 创建完成的镜像需要几十秒的时间初始化,当镜像的状态显示为“正常”的时候,镜像就可以被使用了。 图片 当然,如果您在dockerfile中输入的内容有问题,镜像会提示初始化失败,您可以点击状态后面的提示按钮,查看详细的日志信息。 图片

使用镜像

在创建任务的时候,您可以选择镜像的版本,从而控制任务的运行环境。 图片

基础镜像

美团云深度学习平台使用Docker容器实现虚拟化,您可以选取不同的基础镜像以获得不同的运行环境。 深度学习平台提供的基础镜像如下:

镜像名称 TensorFlow CUDA cuDNN OS MPI RDMA
mos-tensorflow1.1.0-cudnn5-cuda8.0-centos7 1.1.0 /usr/local/cuda-8.0 /usr/local/cudnn-5 CentOS 7 N Y
mos-tensorflow1.1.0-cudnn6-cuda8.0-centos7 1.1.0 /usr/local/cuda-8.0 /usr/local/cudnn-6 CentOS 7 N Y
mos-tensorflow1.2.1-cudnn5-cuda8.0-centos7 1.2.1 /usr/local/cuda-8.0 /usr/local/cudnn-5 CentOS 7 N Y
mos-tensorflow1.2.1-cudnn6-cuda8.0-centos7 1.2.1 /usr/local/cuda-8.0 /usr/local/cudnn-6 CentOS 7 N Y
mos-tensorflow1.3.1-cudnn6-cuda8.0-centos7 1.3.1 /usr/local/cuda-8.0 /usr/local/cudnn-6 CentOS 7 Y Y
mos-tensorflow1.4.0-cudnn6-cuda8.0-centos7(公测) 1.4.0 /usr/local/cuda-8.0 /usr/local/cudnn-6 CentOS 7 Y Y

关于Python

所有镜像的Python默认版本为Python2(2.7.14),GPU和CPU对应的python路径为

资源 变量 Python路径
CPU MOS_CPU_PYTHON /usr/local/cpu/python/bin/python
GPU MOS_CPU_PYTHON /usr/local/gpu/python/bin/python

此外,基础镜像中,我们还默认为用户安装了Python3(3.6.3),如果您期望使用Python3,则需要在dockerfile中,使用ENV命令,修改一下变量MOS_DEFAULT_PYTHON_VERSION的值

ENV MOS_DEFAULT_PYTHON_VERSION 3

Python3的GPU和CPU对应的Python路径为

资源 变量 Python路径
CPU MOS_CPU_PYTHON /usr/local/cpu/python/bin/python3
GPU MOS_CPU_PYTHON /usr/local/gpu/python/bin/python3

以安装tflearn为例

在Python2环境中

From mos-tensorflow1.3.1-cudnn6-cuda8.0-centos7

RUN ${MOS_GPU_PYTHON}/bin/pip install tflearn && ${MOS_CPU_PYTHON}/bin/pip install tflearn

或者

From mos-tensorflow1.3.1-cudnn6-cuda8.0-centos7

RUN /usr/local/gpu/python/bin/pip install tflearn && /usr/local/cpu/python/bin/pip install tflearn

在Python3环境中

From mos-tensorflow1.3.1-cudnn6-cuda8.0-centos7

ENV MOS_DEFAULT_PYTHON_VERSION 3

RUN ${MOS_GPU_PYTHON}/bin/pip3 install tflearn && ${MOS_CPU_PYTHON}/bin/pip3 install tflearn

或者

From mos-tensorflow1.3.1-cudnn6-cuda8.0-centos7

ENV MOS_DEFAULT_PYTHON_VERSION 3

RUN /usr/local/gpu/python/bin/pip3 install tflearn && /usr/local/cpu/python/bin/pip3 install tflearn

命令详解

From

From <image>

FROM指定构建镜像的基础源镜像,在深度学习平台中暂时不支持从Docker的公共库中pull镜像下来,这就意味着,您指定的基础源镜像必须是基础镜像中的一个。 FROM必须是 Dockerfile 中非注释行的第一个指令,即一个 Dockerfile 从FROM语句开始。 在美团云深度学习平台的镜像功能中,FROM不可以在一个Dockerfile中出现多次,如果一个Dockerfile中出现多个FROM则会报错。

RUN

RUN "executable", "param1", "param2"

每条RUN指令将在当前镜像基础上执行指定命令,并提交为新的镜像,后续的RUN都在之前RUN提交后的镜像为基础。

ENV

ENV <key> <value>       # 只能设置一个变量
ENV <key>=<value> ...   # 允许一次设置多个变量

指定一个环境变量,会被后续RUN指令使用,可以在容器内被脚本或者程序调用。

镜像有以下的保留参数:

参数名 说明
MOS_TENSORFLOW_VERSION 镜像安装的 tensorflow 版本
MOS_CUDA_VERSION 镜像cuda 版本
MOS_CUDNN_VERSION 镜像使用的cudnn版本
MOS_DEFAULT_PYTHON_VERSION 默认为3,运行时,根据该参数决定使用python2.7还是python3.6,基础镜像默认是安装的python是2.7.14 和 3.6.3
MOS_CPU_PYTHON 已经预装在 /usr/local/cpu/python,有python2.7 和python3.6,安装了tensorflow以及依赖,运行任务节点不带GPU时,会使用该目录下的python
MOS_GPU_PYTHON 已经预装在 /usr/local/gpu/python,有python2.7 和python3.6,安装了tensorflow以及依赖,运行任务节点带GPU时,会使用该目录下的python
MOS_CPU_PYTHON2 预留给用户,如果用户想在image里面安装别的版本python2,运行时非GPU 任务使用该python。安装完成后,需要设置MOS_CPU_PYTHON2 环境变量(ENV MOS_CPU_PYTHON2 PATH)
MOS_GPU_PYTHON2 预留给用户,如果用户想在image里面安装别的版本python2,运行时GPU 任务使用该python。安装完成后,需要设置MOS_GPU_PYTHON2 环境变量(ENV MOS_GPU_PYTHON2 PATH)
MOS_CPU_PYTHON3 预留给用户,如果用户想在image里面安装别的版本python3,运行时非GPU 任务使用该python3。安装完成后,需要设置MOS_CPU_PYTHON3 环境变量(ENV MOS_GPU_PYTHON3 PATH)
MOS_GPU_PYTHON3 预留给用户,如果用户想在image里面安装别的版本python3,运行时GPU 任务使用该python3。安装完成后,需要设置MOS_GPU_PYTHON3 环境变量(ENV MOS_GPU_PYTHON3 PATH)