当前位置: 首页 > news >正文

昇腾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

附录

  • 昇腾 NPU 开发文档:CANN 官方文档
  • PaddlePaddle 官方文档:PaddlePaddle 官网
http://www.lryc.cn/news/575915.html

相关文章:

  • LinuxBridge的作用与发展历程:从基础桥接到云原生网络基石
  • 【Linux指南】压缩、网络传输与系统工具
  • 用 pnpm + TurboRepo,构建多项目高效开发体系
  • 人工智能-基础篇-4-人工智能AI、机器学习ML和深度学习DL之间的关系
  • 几种基于Doherty结构的GAN氮化镓功放设计方法介绍
  • Ehcache、Caffeine、Spring Cache、Redis、J2Cache、Memcached 和 Guava Cache 的主要区别
  • 算法-堆排序
  • 飞算科技依托 JavaAI 核心技术,打造企业级智能开发全场景方案
  • AIOps与人工智能的融合:从智能运维到自适应IT生态的革命
  • 【网络】Linux 内核优化实战 - net.ipv4.tcp_rmem 和 net.core.rmem_default 关系
  • MySQL(1)——count()聚合函数
  • V-by-One V1.4协议介绍
  • QT基础知识3——文件操作:QFile类
  • windows11 源码本地部署大模型anythingllm
  • web布局26
  • sqlite如何存储日期
  • 【数据交易】全国数据交易所的发展现状
  • 开源 java android app 开发(十三)绘图定义控件、摇杆控件的制作
  • OpenLayers 拖动旋转和缩放
  • Python打卡训练营-Day44-预训练模型
  • 生成式人工智能实战 | WGAN(Wasserstein Generative Adversarial Network, GAN)
  • Thread Network:物联网时代的低功耗网状网络协议解析
  • 使用 Vcpkg 安装 Qt 时的常见问题与解决方法
  • SQL Server for Linux 如何实现高可用架构
  • Buildroot 2025.05 中文手册【AI高质量翻译】
  • 机器学习基础 多层感知机
  • SpringBoot 防刷 重复提交问题 重复点击问题 注解 RequestParam RequestBody
  • 深度学习框架入门指南:PyTorch 核心实战
  • 临床项目计划框架
  • debian挂载新硬盘后不识别怎么办?