CANN环境准备
CANN镜像下载
优先下载cann8.0镜像:
- X86架构:
https://paddle-ascend.bj.bcebos.com/cvmodel/docker-image/npu_... - ARM架构:
https://paddle-ascend.bj.bcebos.com/cvmodel/docker-image/padd...
注:本文后续操作均在ARM环境中。
CANN镜像加载
镜像下载完成后,使用
docker load
命令将下载好的镜像导入到昇腾主机上:docker load -i paddle-npu_cann80RC1-ubuntu20-aarch64-gcc84-py39.tar
- 导入成功后,使用
docker images
查看镜像名称与标签:
registry.baidubce.com/device/paddle-npu cann80RC1-ubuntu20-aarch64-gcc84-py39
CANN镜像启动
启动docker镜像的命令如下,用户可根据实际环境修改:
sudo docker run -it --name paddle_test \
-v /home/:/home/ \
-v `pwd`:/workspace \
-w /workspace \
--privileged --network=host --shm-size=128G \
-v /ssd1/dataset:/workspace/dataset \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/dcmi:/usr/local/dcmi \
-e ASCEND_RT_VISIBLE_DEVICES="0,1,2,3,4,5,6,7" \
registry.baidubce.com/device/paddle-npu:cann80RC1-ubuntu20-aarch64-gcc84-py39 /bin/bash
Paddle深度学习框架安装
PaddlePaddle可选择源码编译或者直接下载日构建包安装,因为极少涉及到更改源码的情况,建议直接下载最新的日构建包。
# 下载链接
https://www.paddlepaddle.org.cn/packages/nightly/cpu/paddlepaddle/
# 安装命令
pip install xxxxx.whl
# 查看paddle的版本
python3 -c "import paddle; print(paddle.__version__)"
PaddleCustomDeviece安装
适配层代码同样可以通过源码编译或者下载日构建包安装,但因为需要经常修改代码,建议选择源码编译安装。
日构建包安装
# 下载链接
https://www.paddlepaddle.org.cn/packages/nightly/npu/paddle-custom-npu/
# 安装命令
pip install xxxxx.whl
源码编译安装
# 下载PaddleCustomDevice源码
git clone https://github.com/PaddlePaddle/PaddleCustomDevice
# 进入硬件后端(昇腾NPU)目录
cd PaddleCustomDevice/backends/npu
# 执行编译脚本
bash tools/compile.sh
# 飞浆NPU插件在build/dist路径下,使用pip安装即可
pip install build/dist/paddle_custom_npu*.whl --force-reinstall
更新CANN版本(可选)
CANN包更新流程
当前Docker镜像中预装了CANN8.0.RC1,如果需要安装其它版本的CANN包,可参考以下步骤在自定义路径下安装:
下载新cann包
下载目标版本的cann包,包括toolkit和kernels。
下载链接:
https://www.hiascend.com/developer/download/community/result?...
删除info文件
删除ascend_cann_install.info文件,否则无法指定安装目录。
rm -f /etc/Ascend/ascend_cann_install.info
添加安装包执行权限
给toolkit和kernel软件包添加执行权限,若有权限则忽略。
chmod +x Ascend-cann-toolkit_xxx_linux-aarch64.run
chmod +x Ascend-cann-kernels_xxx_linux-aarch64.run
设置安装目录权限
为即将安装CANN包的目录及其上层目录赋755权限,否则安装失败。
chmod 755 /home/paddle_test/Ascend/
安装新CANN包
注意:
"--install-path"参数为CANN包安装路径,必须填绝对路径;
可使用默认路径:"/usr/local/Ascend/",也可以自定义安装路径,建议使用自定义路径。
# 先安装toolkit
./Ascend-cann-toolkit_8.0.RC3_linux-aarch64.run --full --install-path=/home/paddle_test/Ascend/
# 再安装kernel
./Ascend-cann-kernels-910b_8.0.RC3_linux-aarch64.run --install --install-path=/home/paddle_test/Ascend/
设置环境变量
默认安装路径场景
如果更新的CANN包安装在默认路径,需要重新导入如下环境变量:
source /usr/local/Ascend/ascend-toolkit/set_env.sh
自定义安装路径场景
如果更新的CANN包未安装在默认路径(本文中自定义安装路径为/home/paddle_test/Ascend
),则需要导入如下环境变量:
source 自定义安装路径/ascend-toolkit/set_env.sh
# 由于更新CANN包(安装在自定义目录),安装路径发生改变,PaddlePaddle在编译时需要用ASCEND_CUSTOM_PATH这个环境变量来识别CANN包的安装路径
export ASCEND_CUSTOM_PATH=自定义安装路径
注意:
# 如果重新source不同版本CANN包请重新执行上一节中编译操作:
cd PaddleCustomDevice/backends/npu
bash tools/compile.sh
# 编译成功后重新安装:
pip install build/dist/paddle_custom_npu*.whl --force-reinstall
常见问题
自定义安装路径失败
- 报错信息:
解决方法:参考CANN包更新流程删除ascend_cann_install.info文件。
安装目录权限不足
- 报错信息:
上图中提供了日志文件路径:/var/log/ascend_seclog/ascend_toolkit_install.log,可查看详细日志信息。 - 查看日志:
解决方法:参考CANN包更新流程为安装目录设置755权限。
更新CANN后PaddlePaddle编译失败一
- 报错信息:
解决方法:export ASCEND_CUSTOM_PATH时"自定义安装路径"后不能带"/",重新设置为:
export ASCEND_CUSTOM_PATH=/home/paddle_test/Ascend
更新CANN后PaddlePaddle编译失败二
- 报错信息:
解决方法:
把CANN包默认安装路径下的atb、driver链接到新CANN包安装的自定义路径。ln -s /usr/local/Ascend/atb /真实路径/ ln -s /usr/local/Ascend/driver /真实路径/
基础功能检查
可用硬件后端检查
- 输入检查指令:
python -c "import paddle; print(paddle.device.get_all_custom_device_type())"
- 预期得到如下输出结果:
['npu']
当前安装版本检查
- 输入检查指令:
python -c "import paddle_custom_device;paddle_custom_device.npu.version()"
- 预期得到如下输出结果:
version: 0.0.0
commit: 9bfc65a7f11072699d0c5af160cf7597720531ea
cann: 8.0.RC1
飞桨框架健康检查
- 输入检查指令:
python -c "import paddle; paddle.utils.run_check()"
- 预期得到如下输出结果:
Running verify PaddlePaddle program ...
PaddlePaddle works well on 1 npu.
PaddlePaddle works well on 8 npus.
PaddlePaddle is installed successfully!
Let's start deep learning with PaddlePaddle now.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。