制作PyTorch框架镜像

前提条件

请按照表1所示,获取对应操作系统的软件包,并准备镜像所需的Dockerfile文件与脚本文件。

断点续训会使用到基础训练镜像,该镜像的制作可参考使用Dockerfile构建容器镜像(PyTorch)章节进行操作。

表1 所需软件

软件包

是否必选

说明

获取方法

mindx_elastic-{version}-py3-none-linux_{arch}.whl

使用优雅容错模式、Pod级别重调度或者进程级别重调度功能时,必须安装该whl包。

集群调度组件断点续训whl包,arch为CPU架构,可选AArch64x86_64

获取链接

说明:
  • 用户通过获取链接得到的是Elastic Agent压缩包,需要通过解压后,获得相应的whl软件包。
  • 自6.0.0.SPC1版本起,删除Elastic Agent path相关说明。

mindio_ttp-{version}-cp3x-cp3x-linux_{arch}.whl

集群调度组件断点续训whl包,arch为CPU架构,可选AArch64x86_64

当前可支持Python 3.7、Python 3.8、Python 3.9、Python 3.10、Python 3.11,软件包名中x表示7、8、9和10、11,请根据实际情况选择对应软件包。

获取链接

说明:

用户通过获取链接得到的是MindIO压缩包,需要通过解压后,再根据实际的Python版本,获得相应的whl软件包。

Dockerfile

制作镜像需要。

参见Dockerfile编写示例

MindSpeed源码

训练模型为LLaMA2时,必须安装该软件。

-

获取链接

为了防止软件包在传递过程中或存储期间被恶意篡改,下载软件包时需下载对应的数字签名文件用于完整性验证。

在软件包下载之后,请参考《OpenPGP签名验证指南》,对从Support网站下载的软件包进行PGP数字签名校验。如果校验失败,请不要使用该软件包,先联系华为技术支持工程师解决。

使用软件包安装/升级之前,也需要按上述过程先验证软件包的数字签名,确保软件包未被篡改。

运营商客户请访问:https://support.huawei.com/carrier/digitalSignatureAction

企业客户请访问:https://support.huawei.com/enterprise/zh/tool/pgp-verify-TL1000000054

软件包名称中{version}表示版本号,{arch}表示CPU架构。

操作步骤

以Ubuntu操作系统为例。

  1. root用户登录服务器。
  2. 将准备好的MindSpeed源码、“mindx_elastic-6.0.0-py3-none-linux_{arch}.whl”“mindio_ttp-1.0.0-cp3x-cp3x-linux_{arch}.whl”上传到服务器任意目录(如“/home/test”)。
  3. 执行以下步骤准备Dockerfile文件。

    1. 进入软件包所在目录,执行以下命令创建Dockerfile文件(文件名示例“Dockerfile”)。
      vi Dockerfile
    2. 请参见Dockerfile编写示例,将内容写入Dockerfile文件后执行:wq命令保存内容。

  4. 进入软件包所在目录,执行以下命令,构建容器镜像,注意不要遗漏命令结尾的“.”

    docker build -t  [OPTIONS] 镜像名_系统架构:镜像tag .
    例如:
    docker build -t test_train_arm64:v1.0 .

    命令解释如表2所示。

    表2 命令参数说明

    参数

    说明

    -t

    指定镜像名称。

    OPTIONS

    “--disable-content-trust”选项:忽略校验,默认开启。出于安全考虑,这里推荐设置关闭。

    镜像名_系统架构:镜像tag

    镜像名称与标签,请用户根据实际情况写入。

    当出现“Successfully built xxx”表示镜像构建成功。

  5. 构建完成后,执行以下命令查看镜像信息。

    docker images

    显示示例。

    REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    test_train_arm64          v1.0                d82746acd7f0        27 minutes ago      749MB

Dockerfile编写示例

使用过程中请根据实际情况修改软件包版本及架构。
  • Ubuntu Arm系统Dockerfile示例。
    FROM 基础训练镜像
    ARG MINDX_ELASTIC_PKG=mindx_elastic-6.0.0-py3-none-linux_aarch64.whl
    ARG MINDIO_TTP_PKG=mindio_ttp-1.0.0-cp3x-cp3x-linux_aarch64.whl
    WORKDIR /tmp 
    COPY . ./ 
    
    ENV http_proxy xxx
    ENV https_proxy xxx
     
    # MindCluster无损失断点续训适配脚本
    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
    
    
    # 安装MindSpeed
    RUN cp -r MindSpeed /root && \
             cd /root/MindSpeed && \
             pip install -r requirements.txt && \
             pip install -e . && \
             cd /tmp
    
    # 增加安装任务调度依赖库
    RUN pip install apscheduler
    RUN pip install pyOpenSSL 
    
     
    # 如果需要对安装文件的目录权限进行限制,可以在此处根据Python的安装路径进行更改。推荐的程序目录和文件权限为550,例如chmod 550 -R Elastic Agent安装路径
    
    ENV http_proxy "" 
    ENV https_proxy "" 
    
    RUN rm -f /tmp/$MINDX_ELASTIC_PKG
    RUN rm -f /tmp/$MINDIO_TTP_PKG
  • Ubuntu x86_64系统Dockerfile示例。
    FROM 基础训练镜像
    ARG MINDX_ELASTIC_PKG=mindx_elastic-6.0.0-py3-none-linux_x86_64.whl
    ARG MINDIO_TTP_PKG=mindio_ttp-1.0.0-cp3x-cp3x-linux_x86_64.whl
    WORKDIR /tmp 
    COPY . ./ 
     
    ENV http_proxy xxx
    ENV https_proxy xxx
    
    # MindCluster无损失断点续训适配脚本
    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
    
    # 安装MindSpeed
    RUN cp -r MindSpeed /root && \
             cd /root/MindSpeed && \
             pip install -r requirements.txt && \
             pip install -e . && \
             cd /tmp
    
    # 增加安装任务调度依赖库
    RUN pip install apscheduler
    RUN pip install pyOpenSSL 
    
    # 如果需要对安装文件的目录权限进行限制,可以在此处根据Python的安装路径进行更改。推荐的程序目录和文件权限为550,例如chmod 550 -R Elastic Agent安装路径
     
    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命令来检查容器的运行状况。