请按照表1所示,获取对应操作系统的软件包,并准备镜像所需的Dockerfile文件与脚本文件。
断点续训会使用到基础训练镜像,该镜像的制作可参考使使用Dockerfile构建容器镜像(PyTorch)章节进行操作。
软件包 |
是否必选 |
说明 |
获取方法 |
---|---|---|---|
mindx_elastic-0.0.1-py3-none-linux_{arch}.whl |
否 使用优雅容错模式、Pod级别重调度功能时,必须安装该whl包。 |
集群调度组件断点续训whl包,arch为CPU架构,可选AArch64或x86_64。 |
说明:
用户通过获取链接得到的是Ascend-mindxdl-elastic_{version}_linux-{arch}.zip压缩包,需要通过解压后,获得相应的whl软件包。 |
mindio_ttp-1.0.0-cp3x-cp3x-linux_{arch}.whl |
是 |
集群调度组件断点续训whl包,arch为CPU架构,可选AArch64或x86_64。 当前可支持Python 3.7、Python 3.8、Python 3.9和Python 3.10,软件包名中x表示7、8、9和10,请根据实际情况选择对应软件包。 |
说明:
用户通过获取链接得到的是Ascend-mindxdl-mindio_{version}_linux-{arch}.zip压缩包,需要通过解压后,再根据实际的Python版本,获得相应的whl软件包。 |
megatron_npu源码 |
否 训练模型为GPT-3时,必须安装该软件。 |
Megatron-LM是一个功能强大的大型Transformer套件,昇腾基于开源的Megatron-LM,提供插件megatron-npu进行适配,当前只支持源码安装。 |
说明:
参考README中的“准备环境”章节,根据实际情况安装megatron_npu。 |
Dockerfile |
是 |
制作镜像需要。 |
为了防止软件包在传递过程中或存储期间被恶意篡改,下载软件包时需下载对应的数字签名文件用于完整性验证。
在软件包下载之后,请参考《OpenPGP签名验证指南》,对从Support网站下载的软件包进行PGP数字签名校验。如果校验失败,请不要使用该软件包,先联系华为技术支持工程师解决。
使用软件包安装/升级之前,也需要按上述过程先验证软件包的数字签名,确保软件包未被篡改。
运营商客户请访问:https://support.huawei.com/carrier/digitalSignatureAction
企业客户请访问:https://support.huawei.com/enterprise/zh/tool/pgp-verify-TL1000000054
软件包名称中{version}表示版本号,{arch}表示CPU架构。
以Ubuntu操作系统为例。
vi Dockerfile
docker build -t [OPTIONS] 镜像名_系统架构:镜像tag .
docker build -t test_train_arm64:v1.0 .
命令解释如表2所示。
参数 |
说明 |
---|---|
-t |
指定镜像名称。 |
OPTIONS |
“--disable-content-trust”选项:忽略校验,默认开启。出于安全考虑,这里推荐设置关闭。 |
镜像名_系统架构:镜像tag |
镜像名称与标签,请用户根据实际情况写入。 |
当出现“Successfully built xxx”表示镜像构建成功。
docker images
显示示例。
REPOSITORY TAG IMAGE ID CREATED SIZE test_train_arm64 v1.0 d82746acd7f0 27 minutes ago 749MB
FROM 基础训练镜像
ARG MINDX_ELASTIC_PKG=mindx_elastic-0.0.1-py3-none-linux_aarch64.whl
ARG MINDIO_TTP_PKG=mindio_ttp-{version}-cp3x-cp3x-linux_aarch64.whl
ARG MEGATRON_NPU_PATH=megatron_npu
WORKDIR /tmp
COPY . ./
ENV http_proxy xxx
ENV https_proxy xxx
# DL无损失断点续训适配脚本
RUN pip3 install $MINDX_ELASTIC_PKG
RUN pip3 install $MINDIO_TTP_PKG
# 可选,使用优雅容错、Pod级别重调度时必须配置以下命令
RUN sed -i '/import logging/i import mindx_elastic.api' $(pip3 show torch | grep Location | awk -F ' ' '{print $2}')/torch/distributed/run.py
# 安装megatron_npu
RUN cp -r megatron_npu /root && \
cd /root/megatron_npu && \
pip install -e . && \
pip install -r requirements.txt && \
cd /tmp
# 配置megatron_npu的环境变量
ENV PYTHONPATH=$PYTHONPATH:/root/megatron_npu
# 增加安装任务调度依赖库
RUN pip install apscheduler
# 如果需要对安装文件的目录权限进行限制,可以在此处根据Python的安装路径进行更改。推荐的程序目录和文件权限为550,例如chmod 550 -R mindx_elastic安装路径
ENV http_proxy ""
ENV https_proxy ""
RUN rm -f /tmp/$MINDX_ELASTIC_PKG
RUN rm -f /tmp/$MINDIO_TTP_PKG
FROM 基础训练镜像
ARG MINDX_ELASTIC_PKG=mindx_elastic-0.0.1-py3-none-linux_x86_64.whl
ARG MINDIO_TTP_PKG=mindio_ttp-{version}-cp3x-cp3x-linux_x86_64.whl
ARG MEGATRON_NPU_PATH=megatron_npu
WORKDIR /tmp
COPY . ./
ENV http_proxy xxx
ENV https_proxy xxx
# DL无损失断点续训适配脚本
RUN pip3 install $MINDX_ELASTIC_PKG
RUN pip3 install $MINDIO_TTP_PKG
# 可选,使用优雅容错、Pod级别重调度时必须配置以下命令
RUN sed -i '/import logging/i import mindx_elastic.api' $(pip3 show torch | grep Location | awk -F ' ' '{print $2}')/torch/distributed/run.py
# 安装megatron_npu
RUN cp -r megatron_npu /root && \
cd /root/megatron_npu && \
pip install -e . && \
pip install -r requirements.txt && \
cd /tmp
# 配置megatron_npu的环境变量
ENV PYTHONPATH=$PYTHONPATH:/root/megatron_npu
# 增加安装任务调度依赖库
RUN pip install apscheduler
# 如果需要对安装文件的目录权限进行限制,可以在此处根据Python的安装路径进行更改。推荐的程序目录和文件权限为550,例如chmod 550 -R mindx_elastic安装路径
ENV http_proxy ""
ENV https_proxy ""
RUN rm -f /tmp/$MINDX_ELASTIC_PKG
RUN rm -f /tmp/$MINDIO_TTP_PKG
为了使Dockerfile更加安全,用户可以根据业务在其中定义HEALTHCHECK检查。通过在容器内部运行HEALTHCHECK [OPTIONS] CMD命令来检查容器的运行状况。