本章节以在容器镜像openEuler 20.03上为例,制作包含CANN软件包Toolkit/NNAE、Kernels和PyTorch框架的CANN训练&推理容器镜像。
可以参考本节内容定制修改Dockerfile,自定义制作CANN容器镜像。
mkdir ascend-cann
cd ascend-cann
软件或文件 |
说明 |
获取方法 |
---|---|---|
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 软件安装指南》中的“(可选)安装扩展模块”章节获取Python3.7.5对应的torch_npu 1.11.0软件包。 因为示例脚本中默认安装Python3.7.5,支持用户自定义修改dockerfile脚本中安装的Python版本和所需torch_npu包。 |
apex-*.whl |
apex软件包 |
参考《Ascend Extension for PyTorch 软件安装指南》中的“安装APEX模块”章节获取 |
ARG BASE=$BASE FROM $BASE WORKDIR /tmp COPY . ./ # 设置驱动路径环境变量 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 yum install -y python3-pip && \ yum install -y shadow-utils && \ ln -s /usr/lib64/libpython3.7m.so.1.0 /usr/lib64/libpython3.7m.so && \ 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!命令保存文件并退出。
docker build -t {image_name}:{new_tag} --build-arg BASE={image_name}:{tag} .
注意不要遗漏命令结尾的“.”,命令示例如下所示。
docker build -t ascend-cann:8.0.RC2-openEuler-pt --build-arg BASE=openeuler-20.03-lts-sp2:latest .
参数 |
说明 |
---|---|
{image_name}:{new_tag} |
此次构建的镜像名称与标签,建议将{image_name}:{new_tag}命名为“软件包:软件包版本-容器OS-框架类型”(例如“ascend-cann:8.0.RC2-openEuler-pt”) |
--build-arg |
指定dockerfile文件内的参数 |
{image_name}:{tag} |
{image_name}:{tag}为安装前准备的OS基础容器镜像 |