文档中心>TI-ONE 训练平台>实践教程>自定义训练镜像规范

自定义训练镜像规范

最近更新时间:2024-08-22 15:58:11

我的收藏
若平台内置镜像不满足您的需求,您也可以使用自定义镜像创建训练任务和 Notebook 实例,以下是自定义镜像的 Dockerfile 示例:

基本镜像规范

若想要自定义镜像能在 任务式建模 启动训练任务,要求镜像安装 openssh-server 组件,示例如下:
# 基础镜像请自行修改
FROM ubuntu:20.04

# 安装 openssh-server
RUN apt-get update && apt-get install -y openssh-server && apt-get clean && mkdir -p /var/run/sshd
说明:
若基础镜像是 centos 系统的话,使用 yum/dnf 进行包管理,请自行调整安装命令。

Notebook 镜像规范

若想要自定义镜像能在 Notebook 启动实例,除了要满足上述基本镜像规范以外,还要求安装 JupyterLab 组件,并设置相应的 /opt/dl/run 启动脚本,示例如下:
# 基础镜像请自行修改
FROM ubuntu:20.04

# 安装 openssh-server
RUN apt-get update && apt-get install -y openssh-server && apt-get clean && mkdir -p /var/run/sshd

# 安装 python3、pip3
RUN apt-get update && apt-get install -y python3.8 python3.8-distutils curl && \\
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && \\
python3.8 get-pip.py && rm -f get-pip.py

# 安装 jupyterlab
RUN pip3 install jupyterlab

# 配置 /opt/dl/run 启动脚本
RUN mkdir -p /opt/dl && echo "cd /home/tione/notebook && jupyter lab --allow-root --no-browser --ip=0.0.0.0 --port=8888 --notebook-dir=/home/tione/notebook --NotebookApp.allow_origin='*' --NotebookApp.token=''" > /opt/dl/run && chmod a+x /opt/dl/run
说明:
若基础镜像已经包含了对应的包,请自行跳过对应安装命令。
这里 /home/tione/notebook 是 Notebook 默认的磁盘挂载路径,镜像中是否有该路径不影响平台中使用。

完整自定义镜像 Dockerfile 示例

以下是一个基于 NVIDIA 的 PyTorch 镜像构建支持创建训练任务和 Notebook 实例的完整自定义镜像示例,推荐直接基于此示例制作自定义镜像:
说明:
请尽量在镜像中使用 tencent 源,如下文所示,其他源可能出现访问慢的情况。
# [推荐] 使用 NVIDIA 的 PyTorch 镜像作为基础镜像,以兼容较新的开源库和 GPU 卡类型
FROM nvcr.io/nvidia/pytorch:23.07-py3

# [推荐] 修改软件源(若在腾讯云使用推荐用内网源)
# [腾讯外网软件源] mirrors.tencent.com
# [腾讯云内网软件源] mirrors.tencentyun.com
ENV TENCENT_MIRRORS="mirrors.tencentyun.com"
RUN sed -i "s/archive.ubuntu.com/${TENCENT_MIRRORS}/g" /etc/apt/sources.list && \\
sed -i "s/security.ubuntu.com/${TENCENT_MIRRORS}/g" /etc/apt/sources.list && \\
pip config set global.index-url http://${TENCENT_MIRRORS}/pypi/simple && \\
pip config set global.no-cache-dir true && \\
pip config set global.trusted-host ${TENCENT_MIRRORS}

# [推荐] 若使用 NVIDIA 的 PyTorch 镜像,推荐删除默认的 NVIDIA 源,以加快 pip 包查询和安装速度
RUN rm /etc/xdg/pip/pip.conf /etc/pip.conf /root/.pip/pip.conf /root/.config/pip/pip.conf && pip config unset global.extra-index-url

# [基本镜像规范] 安装 openssh-server
RUN apt-get update && apt-get install -y openssh-server && apt-get clean && mkdir -p /var/run/sshd

# [Notebook 镜像规范] 配置 /opt/dl/run 启动入口
RUN mkdir -p /opt/dl && echo "cd /home/tione/notebook && jupyter lab --allow-root --no-browser --ip=0.0.0.0 --port=8888 --notebook-dir=/home/tione/notebook --NotebookApp.allow_origin='*' --NotebookApp.token=''" > /opt/dl/run && chmod a+x /opt/dl/run

# [推荐] 使用tini作为entrypoint,方便回收僵尸进程
RUN apt-get update && apt-get install -y tini && apt-get clean
ENTRYPOINT ["/usr/bin/tini", "-g", "--"]

# [可选 - 使用 HCC-GPU 实例时推荐安装] TCCL RDMA 通信优化
# (若使用 NVIDIA 的 PyTorch 镜像,需要删除 /opt/hpcx/nccl_rdma_sharp_plugin/lib 中预装的 NCCL 插件)
RUN wget https://taco-1251783334.cos.ap-shanghai.myqcloud.com/nccl/nccl-rdma-sharp-plugins_1.2_amd64.deb && \\
dpkg -i nccl-rdma-sharp-plugins_1.2_amd64.deb && rm -f nccl-rdma-sharp-plugins_1.2_amd64.deb && \\
rm -rf /opt/hpcx/nccl_rdma_sharp_plugin/lib/*

# [可选] 安装 Tikit (不含大数据组件)
RUN pip install tencentcloud-sdk-python==3.0.955 coscmd==1.8.6.31 && \\
pip install --no-dependencies -U tikit

# [自定义] 安装需要的依赖库
RUN pip3 install accelerate==0.21.0 bitsandbytes==0.40.2 datasets==2.14.1 deepspeed==0.10.0 evaluate==0.4.0 peft==0.4.0 protobuf==3.20.3 scipy==1.10.1 sentencepiece==0.1.99 transformers==4.31.0
说明:
推荐自定义镜像统一使用腾讯云的软件源,以支持更快的安装速度,上述示例已包含配置方法。若要配置其他软件源,可进一步参考:腾讯云软件源加速软件包下载和更新
若需要使用 HCC-GPU 型机型进行多机训练,推荐镜像安装 TCCL 插件以优化腾讯云星脉网络下的 RDMA 通信,上述示例已包含配置方法。若要使用别的安装方式,可进一步参考:GPU 型实例安装 TCCL 说明
推荐 Notebook 镜像中安装 Tikit 以方便地提交训练任务,上述示例已包含最简安装方法,若需要使用大数据组件要完整安装 Tikit,可进一步参考:Tikit 的安装与初始化