CANN环境准备

CANN镜像下载

优先下载cann8.0镜像:

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.

讲道义的遥控器
1 声望0 粉丝