昇腾 NPU 安装说明¶
飞桨框架 NPU 版支持昇腾 NPU 的训练和推理,提供两种安装方式:
通过飞桨官网发布的 wheel 包安装
通过源代码编译安装得到 wheel 包
昇腾 NPU 系统要求¶
要求类型 | 要求内容 |
---|---|
芯片型号 | 昇腾 910B |
操作系统 | Linux 操作系统,包括 Ubuntu、KylinV10 等 |
注意:develop 分支仅支持『昇腾 910B』芯片,如需『昇腾 910』芯片的支持请切换到 release/2.6 分支。查看芯片类型请参考如下命令:
# 系统环境下运行如下命令,如果有设备列表输出,则表示当前为『昇腾 910』芯片
lspci | grep d801
# 系统环境下运行如下命令,如果有设备列表输出,则表示当前为『昇腾 910B』芯片
lspci | grep d802
运行环境准备¶
您可以基于 docker、pip、源码等不同方式准备飞桨开发环境
基于 Docker 的方式(推荐)¶
我们推荐使用飞桨官方发布的昇腾 NPU 开发镜像,该镜像预装有昇腾基础软件开发平台(CANN)和飞桨 3.0 版本的 SDK。
# 拉取镜像
docker pull ccr-2vdh3abv-pub.cnc.bj.baidubce.com/device/paddle-npu:3.0.0-cann800-ubuntu20-npu-910b-x86_64-gcc84-py310 # X86 架构
docker pull ccr-2vdh3abv-pub.cnc.bj.baidubce.com/device/paddle-npu:3.0.0-cann800-ubuntu20-npu-910b-aarch64-gcc84-py310 # ARM 架构
# 考如下命令启动容器,ASCEND_RT_VISIBLE_DEVICES 可指定可见的 NPU 卡号
docker run -it --name paddle-npu-dev -v $(pwd):/work \
--privileged --network=host --shm-size=128G -w=/work \
-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" \
ccr-2vdh3abv-pub.cnc.bj.baidubce.com/device/paddle-npu:3.0.0-cann800-ubuntu20-npu-910b-$(uname -m)-gcc84-py310 /bin/bash
选项说明及可调整参数¶
① --name paddle-npu-dev
¶
作用:指定容器名称。
可调整:
用户可改为其他名称,例如
paddle-npu-test
,方便区分不同实验。
② -v $(pwd):/work
¶
作用:挂载本地目录到容器内
/work
目录。可调整:
可以修改
$(pwd)
为实际路径,例如-v /data/projects:/work
,让容器访问宿主机的数据。
③ --shm-size=128G
¶
作用:设置共享内存大小,影响数据处理和计算效率。
可调整:
若内存有限,可降低,如
--shm-size=32G
,但可能影响大规模训练。若训练任务需要更大共享内存,可提高,如
--shm-size=256G
。
# 检查容器内是否可以正常识别昇腾 NPU 设备
npu-smi info
# 预期得到类似如下的结果
+------------------------------------------------------------------------------------------------+
| npu-smi 23.0.3 Version: 23.0.3 |
+---------------------------+---------------+----------------------------------------------------+
| NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page)|
| Chip | Bus-Id | AICore(%) Memory-Usage(MB) HBM-Usage(MB) |
+===========================+===============+====================================================+
| 0 910B2C | OK | 89.9 53 0 / 0 |
| 0 | 0000:5A:00.0 | 0 0 / 0 3317 / 65536 |
+===========================+===============+====================================================+
| 1 910B2C | OK | 93.8 53 0 / 0 |
| 0 | 0000:29:00.0 | 0 0 / 0 3316 / 65536 |
+===========================+===============+====================================================+
+---------------------------+---------------+----------------------------------------------------+
| NPU Chip | Process id | Process name | Process memory(MB) |
+===========================+===============+====================================================+
| No running processes found in NPU 0 |
+===========================+===============+====================================================+
| No running processes found in NPU 1 |
+===========================+===============+====================================================+
基于 pip 安装的方式¶
# 先安装飞桨 CPU 安装包
python -m pip install paddlepaddle==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
# 再安装飞桨 NPU 插件包
python -m pip install paddle-custom-npu==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/npu/
基于源码编译的方式¶
# 下载 PaddleCustomDevice 源码
git clone https://github.com/PaddlePaddle/PaddleCustomDevice -b release/3.0.0
# 进入硬件后端(昇腾 NPU)目录
cd PaddleCustomDevice/backends/npu
# 先安装飞桨 CPU 安装包
python -m pip install paddlepaddle==3.0.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
# 执行编译脚本 - submodule 在编译时会按需下载
bash tools/compile.sh
# 飞桨 NPU 插件包在 build/dist 路径下,使用 pip 安装即可
python -m pip install build/dist/paddle_custom_npu*.whl
基础功能检查¶
输入如下命令进行飞桨基础健康功能的检查。
# 检查当前安装版本
python -c "import paddle_custom_device; paddle_custom_device.npu.version()"
# 预期得到如下输出结果
version: 3.0.0
commit: e6e31bd475e38c18d2c39d58fad903bd16b3ca0d
custom_op commit: e6e31bd475e38c18d2c39d58fad903bd16b3ca0d
cann: 8.0.0
# 飞桨基础健康检查
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.
常见问题解决¶
CANN-8.0.x 系列 对 numpy 和 opencv 部分版本不支持,建议安装指定版本
python -m pip install numpy==1.26.4
python -m pip install opencv-python==3.4.18.65
arm 机器上需要设置环境变量(x86 环境无需设置)
# 解决 libgomp 在 arm 机器上报错
# "libgomp cannot allocate memory in static TLS block"
export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1:$LD_PRELOAD