RecSDK构建镜像(使用Dockerfile)
前提
- 物理机上已经安装好对应CANN版本的驱动和固件
- 物理机上已经安装docker,并且docker网络可用
- 准备基础OS镜像:在物理机上使用命令
- debian: x86架构:
docker pull debian:12 - openeuler: arm架构:
wget https://mirrors.huaweicloud.com/openeuler/openEuler-22.03-LTS-SP4/docker_img/aarch64/openEuler-docker.aarch64.tar.xz && docker load -i openEuler-docker.aarch64.tar.xz - centos: x86架构:
docker pull --platform=amd64 swr.cn-south-1.myhuaweicloud.com/ascendhub/centos:7.6.1810
- debian: x86架构:
版本配套说明
当前Rec SDK Torch支持两种版本配套:
| 配套版本 | PyTorch | torch_npu | fbgemm_gpu |
|---|---|---|---|
| 配套版本1 | 2.6.0 | 2.6.0 | 1.1.0 |
| 配套版本2 | 2.7.1 | 2.7.1 | 1.2.0 |
当前Dockerfile中默认配置下载PyTorch 2.6.0和fbgemm_gpu 1.1.0+cpu版本的软件包,用户可以根据需要,对Dockerfile中对应版本下载命令进行修改。
若需制作PyTorch 2.7.1版本配套的镜像,请参见后续制作PyTorch 2.7.1版本镜像章节。
构建步骤
Step1:新建build_images目录。
Step2:在build_images目录下准备CANN包。用户可以从昇腾社区下载8.5.0版本的toolkit包与算子包。用户也可根据实际情况选择其他版本CANN包。
CANN 8.5.0及之后版本,算子包名称存在变化,下载算子包时注意下载对应名称软件包。
| 版本/包名 | CANN 8.5.0之前 | CANN 8.5.0及之后 |
|---|---|---|
| toolkit包名称 | Ascend-cann-toolkit_{version}_linux-{arch}.run | Ascend-cann-toolkit_{version}_linux-{arch}.run |
| 算子包名称 | Ascend-cann-kernels-{version}_linux-{arch}.run | Ascend-cann-{chip_type}-ops_{version}_linux-{arch}.run |
注意
- 当前Dockerfile中,适配的是CANN 8.5.0及之后版本的算子包名称。
- 如需安装CANN 8.5.0之前版本CANN包,需将Dockerfile中KERNEL_PKG的值修改为:
Ascend-cann-kernels*.run。
安装CANN包需要两个文件,分别是
- version.info(驱动版本文件)
- ascend_install.info(固件驱动安装文件)
可将物理机上相应的文件拷贝到build_images目录。物理机安装驱动与固件后,version.info默认安装路径为/usr/local/Ascend/driver/version.info;
ascend_install.info默认安装路径为/etc/ascend_install.info。
Step3:根据基础OS镜像将Dockerfile_centos、Dockerfile_debian或Dockerfile_openeuler移动到build_images目录中,并运行下面命令构建镜像。构建镜像的步骤在Dockerfile中有详细的说明,注释部分是安装CANN包与torchrec相关包的操作。
# 服务器能访问外网
docker build -t recsdk_torch_base:v1.0-[x86|arm] -f Dockerfile_[centos|debian|openeuler] .
# 服务器配置代理访问外网
docker build -t recsdk_torch_base:v1.0-[x86|arm] -f Dockerfile_[centos|debian|openeuler] --build-arg http_proxy=http://your_proxy --build-arg https_proxy=https://your_proxy .
注意:
- 制作镜像时需确保服务器能访问外网,否则需要配置代理。
- 运行命令前注意修改Dockerfile中的基础镜像名。
启动容器
创建启动脚本run_docker.sh,参考如下:
#!/bin/bash
container_name=$1
image_name=$2
docker run \
-it \
--name "${container_name}" \
--shm-size="300g" \
-m 300g \
-e ASCEND_VISIBLE_DEVICES=0-7 \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/ascend_install.info:/etc/ascend_install.info:ro \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \
"${image_name}" \
/bin/bash
部分参数说明:
- -m 300g:设置容器内使用内存大小,可根据实际情况进行配置。
- -e ASCEND_VISIBLE_DEVICES=0-7:将服务器上编号为device0-device7的NPU设备挂载到容器内,可根据实际情况进行配置。
执行如下命令新建容器:
bash run_docker.sh 容器名 {镜像名称}:{版本名称}
安装RecSDK相关的包
请参见安装部署进行源码的编译和安装。
制作PyTorch 2.7.1版本镜像
可参考以下两种方式制作PyTorch 2.7.1版本的镜像环境。
方式一:修改Dockerfile后重新制作镜像
基于当前已有的Dockerfile,修改部分内容后编译镜像。
-
修改PyTorch、fbgemm_gpu软件的下载链接。下载链接如下:
软件版本 基于Python版本 下载链接 PyTorch 2.7.1 (X86) 3.11 https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl PyTorch 2.7.1 (ARM) 3.11 https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl fbgemm_gpu 1.2.0 (X86) 3.11 https://download.pytorch.org/whl/cpu/fbgemm_gpu-1.2.0%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl fbgemm_gpu 1.2.0 (ARM) 3.11 https://download.pytorch.org/whl/cpu/fbgemm_gpu-1.2.0%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl -
修改安装PyTorch、fbgemm_gpu、torch_npu包安装时的包名
修改前 修改后 torch-2.6.0+cpu-*.whl torch-2.7.1+cpu-*.whl fbgemm_gpu-1.1.0+cpu-*.whl fbgemm_gpu-1.2.0+cpu-*.whl torch-npu==2.6.0 torch-npu==2.7.1 -
请参见构建步骤章节制作镜像
方式二:升级已有镜像中的软件版本
基于当前已有的镜像,升级其中的PyTorch版本,fbgemm_gpu版本,torch_npu版本至PyTorch 2.7.1对应版本。
-
升级PyTorch版本
pip3 install torch==2.7.1+cpu -i https://download.pytorch.org/whl/cpu -
升级fbgemm_gpu版本
pip3 install fbgemm_gpu==1.2.0+cpu -i https://download.pytorch.org/whl/cpu -
升级torch_npu版本
pip3 install torch-npu==2.7.1