昇腾社区首页
中文
注册

构建训练&推理容器镜像(Debian系列)

本章节以在容器镜像Ubuntu 20.04上为例,制作包含CANN软件包Toolkit/NNAE、Kernels和PyTorch框架的CANN训练&推理容器镜像。

可以参考本节内容定制修改Dockerfile,自定义制作CANN容器镜像。

  1. 执行如下命令,在任意目录(如“/home”)新建ascend-cann文件夹。
    1
    mkdir ascend-cann
    
  2. 执行如下命令,进入ascend-cann目录。
    1
    cd ascend-cann
    
    请在当前目录准备以下软件包。
    表1 所需软件或文件

    软件或文件

    说明

    获取方法

    Toolkit或NNAE

    ToolKit和NNAE根据业务场景选其一安装。

    参见准备软件包

    Kernels(可选)

    二进制算子包,可以节省算子编译时间,根据业务场景可选安装。

    torch-*.whl

    torch包

    参考《Ascend Extension for PyTorch 配置与安装》中的“安装PyTorch框架”章节获取Python3.7.5对应的torch 1.11.0软件包。

    因为示例脚本中默认安装Python3.7.5,支持用户自定义修改dockerfile脚本中安装的Python版本和所需torch包。

    torch_npu-*.whl

    torch_npu插件包

    参考《Ascend Extension for PyTorch 配置与安装》中的“安装torch_npu插件”章节《Ascend Extension for PyTorch 配置与安装》中的“安装torch_npu插件”章节获取Python3.7.5对应的torch_npu 1.11.0软件包。

    因为示例脚本中默认安装Python3.7.5,支持用户自定义修改dockerfile脚本中安装的Python版本和所需torch_npu包。

    apex-*.whl

    apex软件包

    参考《Ascend Extension for PyTorch 配置与安装》中的“(可选)安装APEX模块”章节获取

  3. 执行vi Dockerfile命令新建Dockerfile文件,添加如下内容。用户可以根据操作系统类型和待安装的软件包,自行修改脚本中的加粗字体信息。
    ARG BASE=$BASE
    FROM $BASE
    
    WORKDIR /tmp
    COPY . ./
    
    ENV LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH
    ENV PATH=/usr/local/python3.7.5/bin:$PATH
    
    # 设置驱动路径环境变量
    ARG ASCEND_BASE=/usr/local/Ascend
    ENV LD_LIBRARY_PATH=\
    $ASCEND_BASE/driver/lib64:\
    $ASCEND_BASE/driver/lib64/common:\
    $ASCEND_BASE/driver/lib64/driver:\
    $ASCEND_BASE/driver/tools/hccn_tool/:/lib64:\
    $LD_LIBRARY_PATH
    
    SHELL ["/bin/bash","-c"]
    
    # 1 环境准备
    RUN apt update && \
        apt install -y gcc g++ make cmake libsqlite3-dev zlib1g-dev libssl-dev libffi-dev libbz2-dev liblzma-dev wget && \
        wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz --no-check-certificate && \
        tar -zxvf Python-3.7.5.tgz && \
        cd Python-3.7.5 && \
        ./configure --prefix=/usr/local/python3.7.5 --enable-loadable-sqlite-extensions --enable-shared && \
        make -j16 && make install && \
        cd /tmp && \
        mkdir ~/.pip && \
        echo -e '[global]\nindex-url = https://mirrors.huaweicloud.com/repository/pypi/simple\ntrusted-host = mirrors.huaweicloud.com' >> ~/.pip/pip.conf && \
        pip3 install pip==23.0.1
    
    # 2 安装CANN,以toolkit包为例,请自行替换为待安装的软件包
    ARG CANN_PKG=Ascend-cann-toolkit_*.run
    ARG KERNEL_PKG=Ascend-cann-kernels-*.run
    RUN chmod +x $CANN_PKG && \
        ./$CANN_PKG --quiet --install --install-path=$ASCEND_BASE --install-for-all && \
        chmod +x $KERNEL_PKG && \
        ./$KERNEL_PKG --quiet --install --install-for-all && \
        pip3 install attrs && \
        pip3 install numpy && \
        pip3 install decorator && \
        pip3 install sympy && \
        pip3 install cffi && \
        pip3 install pyyaml && \
        pip3 install pathlib2 && \
        pip3 install psutil && \
        pip3 install protobuf && \
        pip3 install scipy && \
        pip3 install requests && \
        pip3 install absl-py
    
    # 3 安装torch,可替换为待安装的AI框架软件包和所需依赖
    RUN pip3 install --upgrade torch-*.whl && \
        pip3 install --upgrade torch_npu*.whl && \
        pip3 install --upgrade apex-*.whl && \
        pip3 install torchvision==0.12.0
    
    # 4 环境清理
    RUN rm -rf /root/.cache/pip && \
        rm -rf ./*

    修改后执行:wq!命令保存文件并退出。

    当前dockerfile脚本会安装最新或指定版本的依赖,若安装报错或更多版本要求请参考依赖列表安装。

  4. 在当前目录执行以下命令构建镜像。
    1
    docker build -t {image_name}:{new_tag} --build-arg BASE={image_name}:{tag} .
    

    注意不要遗漏命令结尾的“.”,命令示例如下所示。

    1
    docker build -t ascend-cann:8.0.RC3-ubuntu-pt --build-arg BASE=ubuntu:focal .
    
    表2 命令参数说明

    参数

    说明

    {image_name}:{new_tag}

    此次构建的镜像名称与标签,建议将{image_name}:{new_tag}命名为“软件包:软件包版本-容器OS-框架类型”(例如“ascend-cann:8.0.RC3-ubuntu-pt”)

    --build-arg

    指定dockerfile文件内的参数

    {image_name}:{tag}

    {image_name}:{tag}安装前准备的OS基础容器镜像