昇腾910(NPU)安装paddlepaddle【自用版】

前期说明

硬件配置:
系统:EulerOS 2.0 (SP8)
驱动:23.0.rc2
在这里插入图片描述
参考文章:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/hardware_support/npu/install_cn.html#wheel


飞桨自定义接入硬件后端(昇腾 NPU)

系统要求

芯片类型CANN 版本驱动版本
昇腾 910CANN 7.0.123.0.2

注意

  • release/2.6 分支仅支持 昇腾 910 芯片。
  • 如需支持 昇腾 910B 芯片,请切换到 develop 分支。
  • 查看芯片类型命令:
    # 昇腾 910
    lspci | grep d801  ##驱动显示910B是910芯片
    # 昇腾 910B
    lspci | grep d802  ##驱动显示910B1-4才是910B芯片
    

在这里插入图片描述


环境准备与源码同步

1. 拉取开发环境镜像

docker pull registry.baidubce.com/device/paddle-npu:cann701-ubuntu20-x86_64-gcc84-py39
docker pull registry.baidubce.com/device/paddle-npu:cann701-ubuntu20-aarch64-gcc84-py39

2. 启动容器

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" \
    registry.baidubce.com/device/paddle-npu:cann701-ubuntu20-$(uname -m)-gcc84-py39 /bin/bash

3. 克隆源码

git clone https://github.com/PaddlePaddle/PaddleCustomDevice -b release/2.6
cd PaddleCustomDevice

PaddlePaddle 安装与运行

源码编译安装

  1. 进入昇腾 NPU 后端目录

    cd backends/npu
    
  2. 安装 PaddlePaddle CPU 版本

    开发镜像中默认不包含飞桨安装包:

    pip install paddlepaddle==2.6.1 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
    

    注意:这下载特别慢,要么你开代理,要么自己翻墙去下载。
    在这里插入图片描述
    下载地址:https://files.pythonhosted.org/packages/8c/fa/5ca56c034e64a5a59864acff43dbd34480f80b0f1b4209d43e07225b3028/paddlepaddle-2.6.1-cp39-cp39-manylinux2014_aarch64.whl

  3. 编译选项配置

    export WITH_TESTING=OFF  # 是否打开单元测试,默认为 ON
    
  4. 执行编译脚本

    bash tools/compile.sh
    

注意:出现Cmake报错
在这里插入图片描述
解决方法:

添加整个仓库到安全目录
git config --global --add safe.directory /work/padd/PaddleCustomDevice

添加 Paddle 子模块到安全目录(重要!)
git config --global --add safe.directory /work/padd/PaddleCustomDevice/Paddle

进入 npu 后端重新编译
cd /work/padd/PaddleCustomDevice/backends/npu
bash tools/compile.sh
  1. 安装编译产物
    pip install build/dist/paddle_custom_npu*.whl
    

基础功能检查

  1. 列出可用硬件后端

    python -c "import paddle; print(paddle.device.get_all_custom_device_type())"
    

    预期输出

    ['npu']
    
  2. 检查当前安装版本

    python -c "import paddle_custom_device; paddle_custom_device.npu.version()"
    

    预期输出

    version: 2.6.1
    commit: 79cd4ebe805a9a3c6bc7817a7ec2e1fee32ebe8e
    cann: 7.0.1
    
  3. 飞桨健康检查

    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. 运行训练示例

python tests/test_LeNet_MNIST.py

预期输出(训练部分)

Epoch [1/2], Iter [01/14], reader_cost: 2.81928 s, batch_cost: 97.57224 s, ips: 41.97915 samples/s, eta: 0:45:32
Epoch [1/2], Iter [02/14], reader_cost: 1.41005 s, batch_cost: 48.79607 s, ips: 83.94119 samples/s, eta: 0:21:57
... ...
Epoch [2/2], Iter [14/14], reader_cost: 0.29687 s, batch_cost: 0.31025 s, ips: 13202.09133 samples/s, eta: 0:00:00
Epoch ID: 2, Epoch time: 4.88396 s, reader_cost: 4.15624 s, batch_cost: 4.34355 s, avg ips: 11741.29245 samples/s
Eval - Epoch ID: 2, Top1 accurary:: 0.86462, Top5 accurary:: 0.99133

2. 运行推理示例

python inference_example.py

预期输出(推理部分)

I0509 12:13:58.880553  9291 program_interpreter.cc:212] New Executor is Running.
I0509 12:13:58.911787  9291 analysis_predictor.cc:1658] CustomDevice is enabled
... ...
I0509 12:13:58.913389  9291 ir_params_sync_among_devices_pass.cc:144] Sync params from CPU to npu:0
--- Running analysis [adjust_cudnn_workspace_size_pass]
--- Running analysis [inference_op_replace_pass]
--- Running analysis [ir_graph_to_program_pass]
I0509 12:13:58.917276  9291 analysis_predictor.cc:1838] ======= optimize end =======
I0509 12:13:58.917372  9291 naive_executor.cc:200] ---  skip [feed], feed -> inputs
I0509 12:13:58.917668  9291 naive_executor.cc:200] ---  skip [save_infer_model/scale_0.tmp_0], fetch -> fetch
Output data size is 10
Output data shape is (1, 10)

环境变量

主题变量名称类型说明默认值
调试CUSTOM_DEVICE_BLACK_LISTString在黑名单内的算子会异构到 CPU 上运行""
FLAGS_npu_check_nan_infBool是否开启所有 NPU 算子输入输出检查False
FLAGS_npu_blocking_runBool是否开启强制同步执行所有 NPU 算子False
性能分析FLAGS_npu_profiling_dirString设置 Profiling 数据保存目录"ascend_profiling"
FLAGS_npu_profiling_dtypesUint64指定需要采集的 Profiling 数据类型runtime.cc
FLAGS_npu_profiling_metricsUint64设置 AI Core 性能指标采集项runtime.cc
性能加速FLAGS_npu_storage_formatBool是否开启 Conv/BN 等算子的计算加速False

附录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值