背景 当前对DeepSeek-R1此类带推理think思维链的模型进行模型能力测评缺乏一个较准确的方,MindIE当前不能对DeepSeek报告中提到的几个数据集(AIME 2024、AIME 2025、MATH-500、GPQA等)进行模型效果评测。 Open R1由huggingface出品,是当前最火的DeepSeek-R1全开源复现。我们可以参考Open R1项目的评测方法,基于light
接上一章节内容,将ONNX模型拆分成loop算子部分和非loop算子部分后,分别转换成OM模型,并用for循环替换loop算子计算逻辑,比较OM模型和ONNX模型的推理结果是否一致,验证结果如果一致则证明该方案有效。 onnx模型转om loop算子前面的图-A atc --model=./mode_loop_input2_i_cond.onnx --framework=5 \ --ou
方案背景 当在线推理的速度无法满足客户要求,使用atc工具将onnx转为om模型走离线推理路径时,遇到NPU不支持LOOP算子的问题,本文提供一种解决方案。 本方案的设计思路是,onnx文件分成loop算子和不含loop算子的两部分,把loop算子的子图提取出来,单独推理。 实际操作中可能需要分成3份乃至更多,因此,本方案使用于关键路径上的loop算子,否则工作量会很大。 构造包含loop算子的o
ais_bench提供的python API可供使能基于昇腾硬件的离线模型(.om模型)推理。具体介绍可参考API_GUIDE 下面列举几个常用的API推理场景使用方法。 静态API推理 单个om推理 api_1.py import cv2 import numpy as np from ais_bench.infer.interface import InferSession from ais_
动态BatchSize OM推理 以档位1 2 4 8档为例,设置档位为2,本程序将获取实际模型输入组Batch,每2个输入为一组,进行组Batch。 示例命令: python3 -m ais_bench --model ./inference/om/dynamic_batch_size_det.om --input ./inference/input/ --output ./inference/
推理环境准备 ais_bench推理工具简介 昇腾离线OM模型的推理后端是ACL(Ascend Computing Language),其底层采用C实现,后来在ACL基础上又做了一套Python接口,命名为pyACL,为了方便开发,华为工程师又基于pyacl开发出一款推理工具ais_bench,此工具支持使用命令进行快捷地推理,并测试推理模型的性能(包括吞吐率、时延),同时ais_bench工具也
本章节介绍 ONNX 模型如何转化为 OM 模型,并在昇腾AI处理器上做离线推理。 昇腾张量编译器(Ascend Tensor Compiler,简称ATC)是异构计算架构CANN体系下的模型转换工具, 它可以将开源框架的网络模型或Ascend IR定义的单算子描述文件(json格式)转换为昇腾AI处理器支持的.om格式离线模型。 ATC功能详见:https://www.hiascend.com/
本节介绍 PP-OCRv4 模型如何转化为 ONNX 模型。 环境准备 需要准备 PaddleOCR、Paddle2ONNX 模型转化环境,和 ONNXRuntime 推理环境。 安装 Paddle2ONNX Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式,安装命令如下: python3 -m pip install paddle2onnx 安装 O
性能优化问题定界 在通过分析 profiling 文件找出性能瓶颈后,接下来将介绍相关的优化方法。算子时长主要由计算时间和调度时间两部分构成,下面将分别对计算时间长和调度时间长这两种情况进行探讨。 计算时间长的情况分析与优化 计算时间长可能由以下三种情况导致: 算子运行于 AI_CPU 若底层未对 AI_CORE 提供支持,就必须开发新的算子; 若已有相关支持,计算时间长大概率是由 64 位数
性能调优思路 性能优化是一项系统性工作,建议采用 "分析 - 定位 - 优化" 的流程,通过性能分析工具定位瓶颈后实施针对性优化。 通过 profiling 工具获取算子级性能数据定位性能瓶颈点,主要涉及算子计算时间与调度通信时间。 常用优化策略中,计算时间过长需依靠算子自身优化升级,可收集算子的 shape 和 dtype 向算子开发部门提交工单并跟踪进展;调度过程包含多个环
本节介绍aclnn算子的三种适配场景。 Paddle-API 与 CANN-Kernel 差异剖析及适配策略 对于Paddle-API与CANN-Kernel两者中常见的差别与适配方法如下: Paddle参数缺失或者参数无法直接对应 如果Paddle算子只需要CANN提供的某个参数为默认值的功能,则可通过默认赋值的方式完成 考虑通过计算取得需要参数 CANN参数缺失 CANN算子没有某个Pa
适配代码仓介绍 Paddle 针对除 CPU 和 Nvidia GPU 之外的其他硬件的适配代码,均存于PaddleCustomDevice代码仓 以 NPU 适配代码为例,其路径为PaddleCustomDevice/backends/npu。在此路径下,有两个目录值得重点关注,分别是 kernels 目录(主要用于算子适配)和 tests 目录(主要用于单元测试)。 确认算子原型 CANN
精度对齐说明 精度对齐旨在确保模型在训练一定轮次后,其损失(LOSS)或评分能够与原硬件训练的结果基本相符。 精度对齐标准 下图所示为在原硬件GPU上的训练精度: 迁移到NPU上后要求与GPU训练精度相差在千分之五左右,若精度误差过大则需要通过前向、反向对齐操作定位问题算子。 精度对齐思路 一旦精度出现偏差,首先确认环境变量配置(例如,NPU私有格式环境变量是否关闭export FLAGS_n
本次案例以PaddleOCRv4的模型为例,介绍将模型迁移到NPU上的流程。 迁移过程要保证原模型的功能在新的硬件上不会出现错误,可以借助各种日志辅助定位,此处尤其需要注意的是偶发性错误与长跑时才会出现的错误。 安装PaddleOCR套件 # 下载 PaddleOCR 套件源码 git clone https://github.com/PaddlePaddle/PaddleOCR # 进入 Pad
训练常用环境变量 本节介绍的环境变量建议在训练前提前设置好。 NPU私有格式 0为关闭,建议关闭: export FLAGS_npu_storage_format=0 NPU在线编译 false为关闭,建议小模型关闭,大模型打开: export FLAGS_npu_jit_compile=false aclnn_scale 在大模型场景设置False性能更好,小模型场景设置True性能更好:
CANN环境准备 CANN镜像下载 优先下载cann8.0镜像: X86架构: https://paddle-ascend.bj.bcebos.com/cvmodel/docker-image/npu_cann80rc1_x86_64_gcc84_py39.tar ARM架构: https://paddle-ascend.bj.bcebos.com/cvmodel/docker-image/pa
前言 本文重点介绍Paddle与NPU的适配工作,PaddlePaddle是一个深度学习框架,类似于pytorch;PaddleCustomDeviece是适配层代码,类似于pytorch adapter;模型侧代码根据领域分为PaddleNLP、PaddleMix、PaddleClas、PaddleOCR等。 如果需要运行在线的训练或者推理,可以直接参考模型仓的README,并更改deviec
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号