飞桨x昇腾生态适配方案:00_整体方案介绍

简介: 本文详细介绍PaddlePaddle与NPU的适配工作,涵盖训练与推理支持、性能优化及离线推理方案。PaddleCustomDevice作为适配层,支持主流模型(详见飞桨-昇腾模型列表),多数性能媲美V100,部分调优模型接近0.8*A800。硬件适配主要针对A2芯片,A1兼容但310系列建议离线推理。提供常用模型仓链接及整体方案导览,包括环境准备、算子适配、性能调优和Paddle转ONNX/OM等内容。

前言

  • 本文重点介绍Paddle与NPU的适配工作,PaddlePaddle是一个深度学习框架,类似于pytorch;PaddleCustomDeviece是适配层代码,类似于pytorch adapter;模型侧代码根据领域分为PaddleNLP、PaddleMix、PaddleClas、PaddleOCR等。
  • 如果需要运行在线的训练或者推理,可以直接参考模型仓的README,并更改deviece为NPU即可。当前已经支持了大部分主流模型且在持续增加中,具体的模型列表可参照飞桨-昇腾模型支持列表,大部分模型的性能基本持平V100,少部分专项调优模型可以达到0.8*A800(主要是大模型,多模态)。
  • 如果在线推理性能较差且只需要推理的场景,统一建议使用离线场景,Paddle2ONNX工具转化为ONNX,并使用atc转换为OM,具体可参照Paddle转OM以及离线推理章节内容。

    硬件适配说明

  • 当前的适配工作主要针对A2芯片,以下所有内容如果没有特殊说明都只针对A2芯片;
  • A1芯片在大部分情况下没有问题,且使用方式与A2相同,如遇到类似项目可自行使用相同方式进行验证,遇到问题单点支撑;
  • 310系列芯片没有进行过适配,建议直接走离线推理路径。

    常用Paddle模型仓

  • NLP代码仓PaddleNLP:https://github.com/PaddlePaddle/PaddleNLP
  • 多模态代码仓PaddleMIX:https://github.com/PaddlePaddle/PaddleMIX
  • 小模型总体仓库PaddleX:https://github.com/PaddlePaddle/PaddleX
  • 其余仓库可查看Paddle主页面:https://github.com/PaddlePaddle

整体方案导览

目录
相关文章
|
7月前
|
API Python
飞桨x昇腾生态适配方案:13_API离线推理
ais_bench 提供了基于昇腾硬件的 Python API,用于离线模型(.om模型)推理。支持静态与动态API场景,如单个或多个OM模型推理。通过 `InferSession` 类加载模型并执行推理,可灵活处理输入输出形状转换。示例代码涵盖图片读取、形状调整、多模型串联推理及资源释放等操作,满足多样化推理需求。
492 26
|
7月前
|
机器学习/深度学习 Docker 容器
飞桨x昇腾生态适配方案:01_基础环境准备
本指南详细介绍在ARM环境中准备CANN环境、安装Paddle深度学习框架及PaddleCustomDevice的过程。首先下载并加载CANN镜像,启动Docker容器;接着通过日构建包或源码编译安装PaddlePaddle和PaddleCustomDevice;可选更新CANN版本时需注意环境变量配置与路径设置。最后提供基础功能检查方法,包括硬件后端、版本验证及框架健康检查,确保环境搭建成功。
451 0
|
7月前
|
存储 算法
飞桨x昇腾生态适配方案:09_Paddle转ONNX
本节主要介绍如何将 PP-OCRv4 模型转化为 ONNX 模型,包括环境准备、模型下载、训练模型转 inference 模型及最终转为 ONNX 格式的过程。首先需安装 Paddle2ONNX 和 ONNXRuntime,接着下载并解压训练模型。通过 `export_model.py` 脚本将训练模型转化为 inference 模型,生成包含结构和参数的文件。最后使用 Paddle2ONNX 工具完成到 ONNX 格式的转换,并可选地使用 onnxslim 进行模型优化。各步骤均提供详细命令与参数说明,便于实际操作与部署。
324 9
|
7月前
|
人工智能 测试技术 API
飞桨x昇腾生态适配方案:11_静态OM推理
昇腾AI推理工具`ais_bench`基于ACL开发,支持命令行快速推理与性能测试(吞吐率、时延等),并提供相关API。用户需下载适配环境的`aclruntime`和`ais_bench`的whl包后通过pip安装。设置环境变量后,可通过多种场景使用工具:纯推理(默认输入全0数据)、调试模式(获取详细参数与耗时信息)、文件/文件夹输入(指定Numpy文件或目录)、以及多Device并行推理。例如,BERT模型需按顺序传入三个文件夹对应其输入参数。工具输出包括吞吐率、耗时等关键指标,助力高效模型性能评估。
563 0
|
10月前
|
JSON 文字识别 测试技术
Qwen2.5-VL Cookbook来啦!手把手教你怎么用好视觉理解模型!
今天,Qwen团队发布了一系列展示 Qwen2.5-VL 用例的Notebook,包含本地模型和 API 的使用。
3061 22
|
7月前
|
编解码 人工智能 API
飞桨x昇腾生态适配方案:12_动态OM推理
本文介绍了基于Ascend AI平台的OM模型动态推理方法,包括动态BatchSize、动态分辨率、动态维度及动态Shape四种场景,支持固定模式与自动设置模式。通过`ais_bench`工具实现推理,提供示例命令及输出结果说明,并解决常见问题(如环境变量未设置、输入与模型不匹配等)。此外,还提供了API推理指南及参考链接,帮助用户深入了解ONNX离线推理流程、性能优化案例及工具使用方法。
580 0
|
7月前
|
编解码 人工智能 JSON
飞桨x昇腾生态适配方案:10_ONNX转OM
本章节主要介绍如何将ONNX模型转化为昇腾AI处理器支持的OM模型,并进行离线推理。通过昇腾张量编译器(ATC),可实现静态OM、动态BatchSize、动态分辨率、动态维度及动态shape等多种模型转换。文中详细说明了ATC工具的使用方法、参数配置、命令格式以及常见问题解决方法,同时提供了具体示例和可视化工具辅助输入参数确认,帮助用户高效完成模型转换与部署。
1143 0
|
7月前
|
API 调度 AI芯片
飞桨x昇腾生态适配方案:08_性能调优方法
本文主要探讨性能优化中的问题定界与解决方法,针对计算时间和调度时间两方面展开分析。对于计算时间长的问题,可能源于算子运行在 AI_CPU 或使用较慢的 aclop 算子,可通过数据类型转换、切换至 aclnn 算子或优化底层算子来改善。调度时间长则常因算子运行在 CPU、重复编译或通讯耗时过多引起,可采取算子适配优化、减少编译次数及避免冗余 copy 操作等手段解决。此外,文章还介绍了适配层优化策略,包括未注册算子排查、重复编译优化以及通过更换算子、调整数据类型和引入融合算子提升性能。
180 10
飞桨x昇腾生态适配方案:08_性能调优方法
|
7月前
|
Python
飞桨x昇腾生态适配方案:15_loop算子缺失(下):for循环替换loop
本章节基于上一内容,将ONNX模型拆分为loop算子部分与非loop算子部分,分别转换为OM模型。通过使用for循环替换loop算子的计算逻辑,构造子图执行流程,并编写OM模型推理脚本进行验证。同时,编写ONNX模型推理脚本对比两者推理结果,确保一致性。实验结果表明,拆分后的OM模型与原始ONNX模型推理结果一致,证明方案可行。
290 27
|
7月前
|
数据采集 Web App开发 数据挖掘
飞桨x昇腾生态适配方案:07_性能数据分析
本文介绍了性能调优的全流程,包括分析、定位与优化。通过 profiling 工具采集算子级性能数据,定位计算与调度通信瓶颈。针对计算时间过长问题,可通过升级算子或提交工单解决;调度优化则关注重复编译,关闭在线编译或使用 aclnn 算子可提升效率。数据采集使用 paddlepaddle 的 profiler 工具,结合 msprof 解析生成的性能数据,重点分析 op_statistic_*.csv 和 op_summary_*.csv 文件,通过关键字段(如 Ratio、Total Time、Task Duration 和 Task Wait Time)量化性能瓶颈并实施优化策略。
295 10