飞桨x昇腾生态适配方案:01_基础环境准备

简介: 本指南详细介绍在ARM环境中准备CANN环境、安装Paddle深度学习框架及PaddleCustomDevice的过程。首先下载并加载CANN镜像,启动Docker容器;接着通过日构建包或源码编译安装PaddlePaddle和PaddleCustomDevice;可选更新CANN版本时需注意环境变量配置与路径设置。最后提供基础功能检查方法,包括硬件后端、版本验证及框架健康检查,确保环境搭建成功。

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?module=cann&cann=8.0.0.alpha003

删除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

常见问题

自定义安装路径失败

  • 报错信息:
    01_自定义安装路径失败.png

  • 解决方法:参考CANN包更新流程删除ascend_cann_install.info文件。

    安装目录权限不足

  • 报错信息:
    02_安装目录权限不足.png

上图中提供了日志文件路径:/var/log/ascend_seclog/ascend_toolkit_install.log,可查看详细日志信息。

  • 查看日志:
    03_查看详细日志信息.png

  • 解决方法:参考CANN包更新流程为安装目录设置755权限。

    更新CANN后PaddlePaddle编译失败一

  • 报错信息:
    04_更新CANN后PaddlePaddle编译失败一.png

  • 解决方法:export ASCEND_CUSTOM_PATH时"自定义安装路径"后不能带"/",重新设置为:export ASCEND_CUSTOM_PATH=/home/paddle_test/Ascend

    更新CANN后PaddlePaddle编译失败二

  • 报错信息:
    05_更新CANN后PaddlePaddle编译失败二.png

  • 解决方法:
    把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.
目录
相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
飞桨x昇腾生态适配方案:00_整体方案介绍
本文详细介绍PaddlePaddle与NPU的适配工作,涵盖训练与推理支持、性能优化及离线推理方案。PaddleCustomDevice作为适配层,支持主流模型(详见飞桨-昇腾模型列表),多数性能媲美V100,部分调优模型接近0.8*A800。硬件适配主要针对A2芯片,A1兼容但310系列建议离线推理。提供常用模型仓链接及整体方案导览,包括环境准备、算子适配、性能调优和Paddle转ONNX/OM等内容。
925 0
vllm+vllm-ascend本地部署QwQ-32B
本指南介绍如何下载、安装和启动基于Ascend的vLLM模型。首先,可通过华为镜像或Hugging Face下载预训练模型;其次,安装vllm-ascend,支持通过基础镜像(如`quay.io/ascend/vllm-ascend:v0.7.3-dev`)或源码编译方式完成;最后,使用OpenAI兼容接口启动模型,例如运行`vllm serve`命令,设置模型路径、并行规模等参数。适用于大模型推理场景,需注意显存需求(如QwQ-32B需70G以上)。
4987 17
|
10月前
|
机器学习/深度学习 监控 算法
基于YOLOv8的智能鼠类目标检测系统 | 室内外老鼠自动识别与追踪【含完整训练源码+部署教程】
在城市环境、食品工厂、仓储物流以及实验室等场景中,老鼠(鼠类)检测需求逐渐增加。传统的红外检测或人工排查手段存在成本高、误报多、实时性差的问题。本项目结合深度学习中的YOLOv8目标检测算法,训练了专门用于识别“老鼠”目标的模型,可快速部署至视频监控系统、摄像头终端、图像分析平台等环境中,真正实现实时、高效、准确的鼠类识别,为智能化鼠害防控系统提供核心技术支撑。
基于YOLOv8的智能鼠类目标检测系统 | 室内外老鼠自动识别与追踪【含完整训练源码+部署教程】
|
11月前
|
机器学习/深度学习 存储 移动开发
Chunked-Prefills 分块预填充机制详解
为解决传统静态或迭代调度中存在的资源浪费与延迟问题,Sarathi-Serve 提出了 chunked-prefills 和 stall-free scheduling 机制,通过将长 prompt 拆分为多个小块,并与 decode 请求混合调度,从而实现高吞吐与低延迟的平衡。
2939 2
Chunked-Prefills 分块预填充机制详解
|
API Python
飞桨x昇腾生态适配方案:13_API离线推理
ais_bench 提供了基于昇腾硬件的 Python API,用于离线模型(.om模型)推理。支持静态与动态API场景,如单个或多个OM模型推理。通过 `InferSession` 类加载模型并执行推理,可灵活处理输入输出形状转换。示例代码涵盖图片读取、形状调整、多模型串联推理及资源释放等操作,满足多样化推理需求。
909 26
|
Python
飞桨x昇腾生态适配方案:15_loop算子缺失(下):for循环替换loop
本章节基于上一内容,将ONNX模型拆分为loop算子部分与非loop算子部分,分别转换为OM模型。通过使用for循环替换loop算子的计算逻辑,构造子图执行流程,并编写OM模型推理脚本进行验证。同时,编写ONNX模型推理脚本对比两者推理结果,确保一致性。实验结果表明,拆分后的OM模型与原始ONNX模型推理结果一致,证明方案可行。
543 27
|
存储 算法
飞桨x昇腾生态适配方案:09_Paddle转ONNX
本节主要介绍如何将 PP-OCRv4 模型转化为 ONNX 模型,包括环境准备、模型下载、训练模型转 inference 模型及最终转为 ONNX 格式的过程。首先需安装 Paddle2ONNX 和 ONNXRuntime,接着下载并解压训练模型。通过 `export_model.py` 脚本将训练模型转化为 inference 模型,生成包含结构和参数的文件。最后使用 Paddle2ONNX 工具完成到 ONNX 格式的转换,并可选地使用 onnxslim 进行模型优化。各步骤均提供详细命令与参数说明,便于实际操作与部署。
1098 9
|
存储 文字识别 文件存储
飞桨x昇腾生态适配方案:03_模型训练迁移
本案例以PaddleOCRv4模型为例,详细介绍了将模型迁移到NPU的完整流程。迁移过程中需确保模型功能在新硬件上无误,重点关注偶发性错误及长时间运行时可能出现的问题,并通过日志辅助定位问题。文档涵盖环境搭建、数据集准备、模型配置、训练启动及常见问题排查等内容。例如,通过设置环境变量排查缺失算子,处理Paddle版本兼容性问题,以及解决进程残留等。适合希望将OCR模型部署到NPU的开发者参考。
643 0
|
文字识别 算法 API
飞桨x昇腾生态适配方案:04_模型精度对齐
本文详细介绍了模型在不同硬件(如GPU与NPU)间迁移时的精度对齐方法,包括前向和反向对齐的具体步骤。前向对齐通过模块化对比计算结果(如平均值、最大最小值等),确保误差在合理范围内;反向对齐则聚焦于梯度差异,利用二分法定位问题算子。同时,文章结合PPHGNet_small和MultiHead等具体模块代码,说明了如何打印输出并分析中间结果。此外,还探讨了私有格式、梯度异常及特殊shape等可能影响精度的因素,并提出相应解决策略。整体流程清晰,为跨硬件模型迁移提供了实用指导。
745 10
|
数据采集 Web App开发 数据挖掘
飞桨x昇腾生态适配方案:07_性能数据分析
本文介绍了性能调优的全流程,包括分析、定位与优化。通过 profiling 工具采集算子级性能数据,定位计算与调度通信瓶颈。针对计算时间过长问题,可通过升级算子或提交工单解决;调度优化则关注重复编译,关闭在线编译或使用 aclnn 算子可提升效率。数据采集使用 paddlepaddle 的 profiler 工具,结合 msprof 解析生成的性能数据,重点分析 op_statistic_*.csv 和 op_summary_*.csv 文件,通过关键字段(如 Ratio、Total Time、Task Duration 和 Task Wait Time)量化性能瓶颈并实施优化策略。
476 10