尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
YOLOv11m 部署华为 Atlas 300I Pro
yolo11m.pt部署到Atlas 300I Pro芯片 Ascend 310P3soc_versionAscend310P3的全过程拆成可照抄的步骤装驱动固件 → 装 CANN toolkit 与kernels-310p算子包 → 装 Ultralytics / ais_bench → 导出 ONNX → ATC 编译成.om→ 命令行/Python 推理 → CPU 端解码 NMS。给出两条路线一键导出 / 手工 ATC、完整可运行的预处理与后处理代码、报错排查表和验收清单。本文目录先认清硬件300I Pro 到底是颗什么芯片部署总览软件栈与两条技术路线环境与软件清单开工前先对齐第一步物理安装 驱动固件 npu-smi 验卡第二步安装 CANN toolkit 与 310p 算子内核第三步Python 环境、Ultralytics 与 ais_bench第四步导出模型路线 A 一键 / 路线 B 手工 ATC第五步命令行推理验证ais_bench第六步Python API 服务化含完整前后处理代码第七步性能测试、批量与 INT8 进阶报错排查手册报错原文 → 原因 → 解决01先认清硬件300I Pro 到底是颗什么芯片动手前第一件事是把卡名和芯片名对上。因为整条工具链里编译器认的不是Atlas 300I Pro这个商品名而是芯片的 SoC 版本号。填错一个字符ATC 就会编译失败或生成无法运行的模型。Atlas 300I Pro 是华为面向数据中心和边缘服务器的半高半长单槽推理卡板载的是Ascend 310P3处理器对应编译参数--soc_versionAscend310P3。它的公开规格如下项目Atlas 300I Pro 规格部署时的意义处理器型号Ascend 310P3编译用Ascend310P3决定 soc_version 与算子包AI 算力140 TOPSINT8/ 70 TFLOPSFP16检测模型主力跑 FP16 / INT8内存LPDDR4X 24 GB带宽 204.8 GB/s可同时常驻多个模型或多路视频接口形态PCIe x16 Gen4半高半长单槽注意服务器槽位与挡板高度最大功耗72 W无需独立供电的高密机型友好内置 CPU8 核 1.9 GHz可承担 NMS 等后处理视频/图像H.264/H.265 视频编解码、JPEG 编解码多路视频可用 DVPP 硬解规格来源华为企业业务官网 Atlas 300I Pro 产品页与厂商规格书具体以你采购批次的官方规格书为准。⚠ 最容易搞混的三个型号Atlas 300I非 Pro用的是Ascend310P1Atlas 300I Pro用的是Ascend310P3而Atlas 200I A2 / OrangePi AIPro用的是Ascend310B4 / Ascend310B1。三者的 om 互不通用。本文所有命令一律以Ascend310P3为准。被部署的模型YOLOv11m 长什么样YOLOv11 是 Ultralytics 2024 年 9 月发布的系列其中 mmedium版本在参数量比 YOLOv8m 少约 22% 的情况下精度更高是边缘服务器上精度—速度折中很常用的一档。它的输入输出约定如下后面所有预处理、后处理都围绕这张表写项目值 / 说明权重文件yolo11m.pt约 20.1M 参数COCO 预训练输入张量images: 1×3×640×640NCHWRGB像素归一化到 0~1原始输出默认1×84×84008400 个候选点每点 4 个框坐标 80 类分数COCO激活/精度昇腾上编译为 FP16AI Core 不接受 FP32 卷积后处理置信度过滤 → 坐标解码 → NMS → 还原到原图CPU 端做02部署总览软件栈与两条技术路线先建立一张全景图后面每一步都能在图里找到自己的位置。昇腾推理的软件栈是分层的底层驱动固件管看得见硬件CANN 管能编译、能调用上层工具管怎么喂数据、怎么取结果。硬件Atlas 300I ProAscend 310P3 · 140 TOPS INT8 / 70 TFLOPS FP16 · 24GB LPDDR4XAI CoreFP16/INT8 张量计算 · AI CPU · DVPP 视频图像硬解驱动与固件层NPU 驱动装在 OS · NPU 固件 · MCU 固件刷在卡上验证命令 npu-smi infoCANN 异构计算架构算子库 kernels-310p · 运行时 · 工具source /usr/local/Ascend/ascend-toolkit/set_env.sh 后生效ATC 离线编译器编译期ONNX → .om无需插卡AscendCL / pyACL 运行时推理期加载 om、搬数据、执行推理推理接口层Ultralytics一键加载 · ais_bench命令行 / Python API命令行用于验证跑分Python API 用于服务化你的应用YOLOv11m 目标检测工业质检 / 视频结构化 / 机器人预处理 → NPU 推理 → 解码 NMS → 画框输出编译在主机一次完成运行时在卡上执行NMS 这类动态逻辑通常留在 CPU。从.pt到检测框有两条路线产出物本质相同yolo11m.ptPyTorch 权重路线 A · 一键导出推荐新手export formatascend内部自动写 ONNX 调 ATC路线 B · 手工可控、便于排错导出 ONNXopset17 simplifyom metadatayolo11m_Ascend310P3.om手工 ATC--soc_version310P3yolo11m_310p3.om离线模型在 300I Pro 上推理预处理 → 推理 → NMSais_bench / Ultralytics两条路线产出的 om 等价A 省事B 利于定位转换问题和做精细化编译参数。关键认知编译和推理可以分离 ATC 完全运行在主机端不需要插着昇腾卡。你可以在普通 x86 服务器甚至笔记本Linux上编译 om再把 om 拷到 300I Pro 所在的机器推理。但必须安装对应芯片的算子内核包310P 系列即kernels-310p否则编译报算子缺失。03环境与软件清单开工前先对齐版本配套是昇腾部署里最容易翻车的地方驱动、固件、CANN、算子包四者要在同一条版本线上。下面给出本文使用的一套基线实际请以昇腾官网固件与驱动 / CANN下载页的版本配套表为准不要跨大版本混搭。类别本文基线示例备注硬件Atlas 300I ProAscend 310P3PCIe x16 Gen4 插槽操作系统Ubuntu 22.04 LTSx86_64亦可 openEuler / Kylinaarch64需 root 或 sudoPython3.10建议用 conda 隔离3.8~3.11 均可随 CANN 版本NPU 驱动 固件310p 配套 HDK如 Ascend-hdk-310p-npu-driver/firmware从官网下载与 CANN 配套CANNtoolkit 8.x含 ATC kernels-310p 算子包本文以 8.x 为例9.x 命令一致Ultralytics最新稳定版pip install ultralytics需原生支持 ascend 导出推理工具ais_benchgitee 官方仓库源码安装封装 pyACL其他onnx、onnxslim、opencv-python、numpy导出与前后处理用⚠ 下载渠道与架构选择 驱动/固件/CANN 全部在昇腾社区hiascend.com→ 支持 → 固件与驱动 / 商业版/社区版下载获取。x86 服务器选x86_64包ARM如鲲鹏选aarch64包架构选错直接装不上。04第一步物理安装 驱动固件 npu-smi 验卡4.1 物理安装关机断电把 300I Pro 插入PCIe x16插槽确认金手指插到底、挡板固定。该卡最大功耗 72W由插槽供电注意服务器机箱风道与半高挡板。虚拟机/云主机场景需在平台侧完成 PCIe 直通passthrough否则宿主机以下看不到卡。4.2 安装驱动与固件卡上的软件分三类NPU 驱动装在 OS、NPU 固件、MCU 固件刷在卡上。官网软件包通常提供驱动包和固件包两个.run文件。一般顺序是先装驱动再装固件安装参数一致以官方安装指南为准。bash · 安装驱动与固件x86_64 示例# 1) 添加可执行权限文件名中的版本号以你下载的为准chmod x Ascend-hdk-310p-npu-driver_*_linux-x86_64.runchmod x Ascend-hdk-310p-npu-firmware_*.run# 2) 安装驱动--full 完整安装--install-for-all 让所有用户可用设备./Ascend-hdk-310p-npu-driver_*_linux-x86_64.run --full --install-for-all# 3) 安装固件./Ascend-hdk-310p-npu-firmware_*.run --full# 4) 安装完成后重启使固件与驱动生效reboot提示--install-for-all 的作用 加上它会把设备节点权限对普通用户开放避免后面非 root 用户运行推理时报/dev/davinci0 permission denied。容器部署或多用户环境建议加上。4.3 用 npu-smi 验卡重启后执行npu-smi info这是昇腾版的显卡监视器。能看到卡的型号、芯片、健康状态、固件版本、显存占用就说明驱动固件装好了bash · 验证设备npu-smi info------------------------------------------------------------------------------------ | npu-smi 24.x.x Driver Version: 24.x.x | |------------------------------------------------------------------------------------| | NPU Name | Health | Power | 310P3 | ... | 0 310P3 | OK | 12.8 W | ... | | ... | || ------------------------------------------------------------------------------------✔ 通过标准 能列出一块或多块芯片Name 含 310P3、Health 为 OK且驱动版本号正常显示。若提示command not found或列表为空先不要进入下一步回到驱动安装检查。✘ npu-smi 看不到卡的排查顺序 ①lspci | grep -i accel看 PCIe 是否枚举到设备物理/直通问题② 确认驱动包架构x86/aarch64与系统一致③ 驱动固件是否为同一版本线④ 重装后是否重启⑤ 容器是否加了--device/dev/davinci0等映射。05第二步安装 CANN toolkit 与 310p 算子内核验卡通过后装 CANN。toolkit 提供 ATC 编译器和开发库算子内核包是另一个独立安装包决定了能为哪类芯片编译 om这步漏装是后面No supported Ops kernel报错的头号原因。5.1 安装开发包依赖bash · 系统依赖Ubuntu# 安装 ATC/CANN 依赖的基础库与编译工具sudo apt-get updatesudo apt-get install -y gcc g make cmake \ zlib1g-dev libffi-dev unzip pciutils net-tools5.2 安装 toolkit 与 kernels-310p从昇腾社区下载同一版本的Ascend-cann-toolkit_*.run和Ascend-cann-kernels-310p_*.run依次安装bash · 安装 CANN默认路径 /usr/local/Ascendchmod x Ascend-cann-toolkit_*_linux-x86_64.runchmod x Ascend-cann-kernels-310p_*_linux-x86_64.run# 安装工具包ATC 编译器、库、头文件./Ascend-cann-toolkit_*_linux-x86_64.run --install# 安装 310P 系列算子内核关键./Ascend-cann-kernels-310p_*_linux-x86_64.run --install5.3 配置环境变量并验证 ATCCANN 不会自动进 PATH每个终端都要先source环境脚本。建议写进~/.bashrcbash · 生效环境并验证# 临时生效当前终端source /usr/local/Ascend/ascend-toolkit/set_env.sh# 建议写入 bashrc开机自动生效echo source /usr/local/Ascend/ascend-toolkit/set_env.sh ~/.bashrc# 验证 ATC 是否可用能打印版本号即可atc --version✔ 通过标准atc --version正常打印 CANN 版本而不是 command not found。至此编译 om 的主机环境已就绪——这一步即使没有插卡也能完成。⚠ 内核包和 toolkit 必须同版本kernels-310p要与toolkit版本号严格一致否则可能编译异常。给多类芯片编译时需要分别安装对应的 kernels如 kernels-310b、kernels-310p装哪个就能编哪个。06第三步Python 环境、Ultralytics 与 ais_bench6.1 创建隔离环境bash · conda 环境conda create -n yolo_ascend python3.10 -yconda activate yolo_ascend# 安装 Ultralytics 及导出相关依赖pip install ultralytics onnx onnxslim opencv-python numpy pyyaml6.2 下载 YOLOv11m 权重第一次使用时 Ultralytics 会自动下载也可手动下载yolo11m.pt放到工程目录bash · 工程目录mkdir -p ~/yolo_ascend cd ~/yolo_ascend# 把 yolo11m.pt 放到当前目录无网络时从官网/镜像下载后上传ls# 期望看到yolo11m.pt6.3 安装 ais_bench官方推理工具ais_bench 是昇腾官方的离线推理与基准工具封装了 pyACL提供命令行和 Python API。它需要在已安装并 source 了 CANN 的环境里从源码编译安装bash · 安装 ais_benchgitee 官方仓库# 确保 CANN 环境已生效aclruntime 编译依赖它source /usr/local/Ascend/ascend-toolkit/set_env.sh# 拉取官方工具仓库git clone https://gitee.com/ascend/tools.gitcd tools/ais-bench_workload/tool/ais_bench# 先编译并安装后端 aclruntimepip3 wheel ./backend -vpip3 install ./aclruntime-*.whl# 再编译并安装 ais_bench 本体pip3 wheel ./ -vpip3 install ./ais_bench-*.whl# 验证python -m ais_bench --help✔ 通过标准python -m ais_bench --help能打印出--model / --input / --output等参数说明说明安装成功。⚠ 常见安装问题 编译 aclruntime 报错多半是没 source CANN 环境或 Python 版本与 CANN 不匹配。pip 拉取慢可加国内镜像源报缺wheel时先pip install wheel。07第四步导出模型两条路线二选一路线 AUltralytics 一键导出最省事新版 Ultralytics 原生支持昇腾它先写一个中间 ONNXopset 默认 17、默认 simplify再自动调用 ATC最终产出一个自包含的模型目录。关键是 name 必须填Ascend310P3默认值是 Ascend310B4不改会编错芯片。00_export_ascend.py · 一键导出from ultralytics import YOLO# 加载官方权重也可以换成你自己训练好的 best.ptmodel YOLO(yolo11m.pt)# 导出为昇腾格式name 指定目标芯片为 300I Pro 的 310P3model.export( formatascend, # 目标格式内部自动 ONNX→ATC nameAscend310P3, # ★ 300I Pro 必须是 Ascend310P3 imgsz640, # 静态输入尺寸会被烘焙进 om batch1, # 静态 batch)命令行等价写法bash · CLI 一键导出yolo export modelyolo11m.pt formatascend nameAscend310P3 imgsz640 batch1成功后生成目录结构如下一个目录只放一个 om加载器会自动取目录里唯一的模型yolo11m_ascend_model/ ├── yolo11m_Ascend310P3.om# 编译好的离线模型AI Core 可执行└── metadata.yaml# 类别名、输入尺寸、任务类型等元数据导出参数速查参数默认说明format—固定ascendnameAscend310B4必须改为 Ascend310P3对应 ATC 的 --soc_versionimgsz640静态输入尺寸编译时固定batch1静态 batch多路需提前指定quantize16仅支持 FP16传 32 会报错opset17中间 ONNX 的 opsetCANN 解析器上限 17simplifyTrue用 onnxslim 化简计算图减少转换报错nmsNoneNone原始输出True内嵌 NMSFalseNMS-free 头路线 B手工导出 ONNX 再 ATC便于排错当你需要精细控制编译参数、或排查一键导出的问题时走手工两步。先导出 ONNXbash · 第一步导出 ONNXyolo export modelyolo11m.pt formatonnx \ opset17 simplifyTrue imgsz640 batch1# 产出yolo11m.onnx再用 ATC 编译--framework5表示 ONNX--input_shape必须和导出时的输入名、尺寸一致YOLOv11 的输入名是imagesbash · 第二步ATC 编译 om300I Pro 核心命令atc --model./yolo11m.onnx \ --framework5 \ --output./yolo11m_310p3 \ --soc_versionAscend310P3 \ --input_formatNCHW \ --input_shapeimages:1,3,640,640 \ --precision_modeforce_fp16# 产出yolo11m_310p3.omATC 关键参数解释参数含义本项目取值--model原始模型文件yolo11m.onnx--framework框架类型0Caffe/1MindSpore/3TF/5ONNX5--output输出 om 路径与文件名不带后缀./yolo11m_310p3--soc_version目标芯片必须与实卡一致Ascend310P3--input_format输入排布NCHW--input_shape固定输入节点与形状images:1,3,640,640--precision_mode精度模式force_fp16310P 主力✔ 编译成功标志 日志末尾出现ATC run success当前目录生成yolo11m_310p3.omyolo11m 的 om 通常几十 MB 量级。若中间报算子错误先核对是否装了 kernels-310p、soc_version 是否正确。✘ 高频报错No supported Ops kernel and engine are found for ... Conv2D 原因有两个① 没装Ascend-cann-kernels-310p② 安装的内核系列与 soc_version 不符比如只装了 310b 的内核却编 310P3。装好对应内核包、重新 source 环境后再编译。08第五步命令行推理验证ais_bench在写正式服务之前先用命令行把 om 跑通确认模型本身能推理、输出张量形状正确。ais_bench 接收的是预处理后的 BIN/NPY 数据所以先准备一个生成 BIN 的脚本。8.1 预处理把图片转成 BINYOLOv11 的标准预处理是 letterbox保持长宽比缩放到 640×640边缘用 114 填充→ BGR 转 RGB → HWC 转 CHW → 除以 255。这套预处理必须和后处理的坐标还原严格对应01_gen_bin.py · 生成 ais_bench 输入import os, glob, cv2, numpy as npSIZE 640os.makedirs(input_bins, exist_okTrue)def letterbox_bin(img): h, w img.shape[:2] r min(SIZE / h, SIZE / w) nh, nw int(round(h * r)), int(round(w * r)) img cv2.resize(img, (nw, nh), interpolationcv2.INTER_LINEAR) canvas np.full((SIZE, SIZE, 3), 114, dtypenp.uint8) top, left (SIZE - nh) // 2, (SIZE - nw) // 2 canvas[top:top nh, left:left nw] img# BGR→RGBHWC→CHW归一化到 0~1 x canvas[:, :, ::-1].transpose(2, 0, 1).astype(np.float32) / 255.0return np.ascontiguousarray(x)for p in glob.glob(images/*.jpg): im cv2.imread(p) x letterbox_bin(im) name os.path.splitext(os.path.basename(p))[0] x.tofile(finput_bins/{name}.bin) # 存为 [1,3,640,640] 的二进制print(done)bash · 准备图片并生成 BINmkdir -p images out# 放几张测试图如公交车、行人到 images/ 目录python 01_gen_bin.py8.2 执行命令行推理bash · ais_bench 推理 性能循环# 单目录批量推理--input 为目录时会批量处理python -m ais_bench \ --model./yolo11m_310p3.om \ --input./input_bins \ --output./output \ --output_dirnameyolo# 性能测试循环 100 次取平均时延/吞吐参数以 --help 为准python -m ais_bench \ --model./yolo11m_310p3.om \ --input./input_bins \ --output./output_perf \ --loop 100参数说明--modelom 模型路径--input输入单文件单样本目录批量多输入节点用逗号分隔--output结果保存目录会自动建日期时间子目录--output_dirname自定义结果子目录名--loop循环推理次数用于测时延/吞吐具体参数以本机 --help 为准提示 输出会保存为 BIN 文件形状为1×84×8400。这一步只验证模型能跑、张量正常真正的画框在下一步用 Python 完成。命令行每次都重新初始化模型不适合常驻服务。09第六步Python API 服务化完整可运行生产部署要一次加载、循环推理使用InferSession。下面给出一个从读图、letterbox 预处理、NPU 推理、解码 NMS、坐标还原到画框保存的完整脚本可直接运行路线 A 的用户把 om 路径换成yolo11m_ascend_model/yolo11m_Ascend310P3.om即可。02_infer.py · 完整服务化推理脚本import os, glob, cv2, numpy as npfrom ais_bench.infer.interface import InferSessionMODEL yolo11m_310p3.omSIZE, CONF, IOU 640, 0.25, 0.45DEVICE 0# ---------- 类别名准备 coco.names每行一个类名----------# 也可用 ultralytics 自带# from ultralytics import YOLO; NAMES YOLO(yolo11m.pt).nameswith open(coco.names) as f: NAMES [l.strip() for l in f if l.strip()]# ---------- 预处理letterbox ----------def preprocess(im): h0, w0 im.shape[:2] r min(SIZE / h0, SIZE / w0) nh, nw int(round(h0 * r)), int(round(w0 * r)) imr cv2.resize(im, (nw, nh), interpolationcv2.INTER_LINEAR) canvas np.full((SIZE, SIZE, 3), 114, dtypenp.uint8) top, left (SIZE - nh) // 2, (SIZE - nw) // 2 canvas[top:top nh, left:left nw] imr x canvas[:, :, ::-1].transpose(2, 0, 1).astype(np.float32) / 255.0 x np.ascontiguousarray(x)[None] # [1,3,640,640] return x, (r, left, top)# ---------- 纯 numpy NMS ----------def nms(boxes, scores, thr): x1, y1, x2, y2 boxes[:,0], boxes[:,1], boxes[:,2], boxes[:,3] areas (x2 - x1) * (y2 - y1) order scores.argsort()[::-1] keep [] while order.size 0: i order[0]; keep.append(i) xx1 np.maximum(x1[i], x1[order[1:]]) yy1 np.maximum(y1[i], y1[order[1:]]) xx2 np.minimum(x2[i], x2[order[1:]]) yy2 np.minimum(y2[i], y2[order[1:]]) w np.maximum(0, xx2 - xx1); h np.maximum(0, yy2 - yy1) ovr w * h / (areas[i] areas[order[1:]] - w * h 1e-9) order order[1:][ovr thr] return keep# ---------- 后处理解析 1×84×8400 ----------def postprocess(out, meta, shape0): pred out[0].T # [8400, 84] xywh, cls_all pred[:, :4], pred[:, 4:] cls cls_all.argmax(1) sc cls_all.max(1) m sc CONF xywh, cls, sc xywh[m], cls[m], sc[m] if len(xywh) 0: return [] xy np.empty_like(xywh) xy[:,0] xywh[:,0] - xywh[:,2] / 2 xy[:,1] xywh[:,1] - xywh[:,3] / 2 xy[:,2] xywh[:,0] xywh[:,2] / 2 xy[:,3] xywh[:,1] xywh[:,3] / 2 k nms(xy, sc, IOU) xy, cls, sc xy[k], cls[k], sc[k] r, left, top meta h0, w0 shape0 xy[:, [0, 2]] - left; xy[:, [1, 3]] - top xy / r xy[:, [0, 2]] xy[:, [0, 2]].clip(0, w0 - 1) xy[:, [1, 3]] xy[:, [1, 3]].clip(0, h0 - 1) return [(xy[i], int(cls[i]), float(sc[i])) for i in range(len(xy))]# ---------- 主流程一次加载、循环推理 ----------def main(): sess InferSession(device_idDEVICE, model_pathMODEL) os.makedirs(out, exist_okTrue) for p in sorted(glob.glob(images/*.jpg)): im cv2.imread(p) x, meta preprocess(im) outputs sess.infer(feeds[x], modestatic) # 静态模型 dets postprocess(outputs[0], meta, im.shape[:2]) for box, c, s in dets: x1, y1, x2, y2 map(int, box) cv2.rectangle(im, (x1, y1), (x2, y2), (0, 200, 0), 2) cv2.putText(im, f{NAMES[c]} {s:.2f}, (x1, max(y1 - 6, 14)), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (0, 200, 0), 1) cv2.imwrite(out/ os.path.basename(p), im) print(os.path.basename(p), detections:, len(dets))# 最近一次纯推理耗时ms供性能参考 print(last infer ms:, sess.summary().exec_time_list[-1]) sess.free_resource()if __name__ __main__: main()9.1 关键 API 对照调用作用服务化注意InferSession(device_id, model_path)在指定 NPU 上加载 om进程启动时只加载一次sess.infer(feeds, modestatic)执行推理返回 ndarray 列表feeds 顺序与模型输入顺序一致sess.summary().exec_time_list各次推理耗时ms统计延迟用需多次取平均sess.free_resource()释放设备资源进程退出前调用MultiDeviceSession多卡并行多卡服务器用它做负载均衡为什么推荐预处理/后处理这样切 NPU 上跑主干卷积效率最高而 YOLO 原生后处理里有大量动态 Slice、TopK、NMS直接塞进网络容易触发算子不支持或内存越界。工程上的成熟做法是NPU 跑主干、CPU 做解码与 NMS这也是上面脚本的结构视频取流量大时再把缩放/色域/解码下沉到 DVPP 硬件单元。9.2 最省事直接用 Ultralytics 加载路线 A如果你不需要自己掌控前后处理Ultralytics 能直接加载导出的模型目录API 和普通模型完全一致在装有 CANN runtime 的设备上运行03_predict.py · Ultralytics 直载 omfrom ultralytics import YOLO# 直接加载导出的昇腾模型目录内部走 ais_bench/pyACLam YOLO(yolo11m_ascend_model)results am(images/bus.jpg, devicenpu:0, conf0.25)results[0].show()results[0].save(filenameout/bus_ascend.jpg)10第七步性能测试、批量与 INT8 进阶产线看的是端到端帧率而不是模型纯推理的峰值数字。10.1 怎么测才客观真实端到端耗时 取流解码 预处理 NPU 推理 后处理 数据搬运。小模型上前后处理经常占掉可观比例因此先用ais_bench --loop N测纯 om 推理的平均时延与吞吐作为模型基线再用 02 脚本里exec_time_list统计 NPU 推理耗时用时间戳包住整段管线测端到端需要定位瓶颈算子时用 CANN 自带的msprofProfiling做全链路分析别只看一次冷启动。⚠ 不要直接引用别人的帧率 分辨率、batch、是否含前后处理、几路视频、CANN 版本都会改变帧率。本文不给出未经实测的 FPS 数字请在自己的卡、数据和版本上实测厂商标称的 140 TOPS 是峰值算力不等于应用吞吐。10.2 多路视频与批量手段做法注意固定 shape固定 batch 与 640 输入做静态编译避免动态 shape 的重编译开销凑批处理多路视频按 batch 打包后一次推理需导出时设置 batch1平衡显存与延迟多实例/多卡多进程或 MultiDeviceSession 分摊到多路24GB 显存可常驻多模型流水线并行取流、预处理、推理、后处理分线程隐藏单帧延迟提升吞吐DVPP 硬解视频/JPEG 解码、缩放、色域下沉硬件路数多时收益显著解放 CPU10.3 INT8 量化进阶可选FP16 跑通后若还想进一步提吞吐、降功耗可用昇腾AMCT模型压缩工具做训练后量化PTQ。核心思路准备一批有代表性的校准数据覆盖实际场景几十到几百张做与推理一致的预处理。用 AMCT 生成量化配置对卷积主干插入 INT8 量化因子检测头和输出层建议保留 FP16对精度敏感。重新编译得到量化 om用 ais_bench 做量化前后精度比对mAP。精度达标则上线不达标则扩大校准集、调整量化算法如 IFMR/ARQ或回退为 FP16/混合精度。经验上检测模型的 INT8 速度提升需要以精度可接受为前提量化不是免费的午餐先保证 FP16 端到端跑顺、测准再谈 INT8。AMCT 具体命令随版本变化以昇腾官网对应 CANN 版本的模型压缩工具文档为准。11报错问题可能得报错 / 现象原因解决No supported Ops kernel and engine are found for ... Conv2D未安装目标芯片算子内核或 soc_version 与内核不符安装同版本Ascend-cann-kernels-310p确认 name/soc_version 为 Ascend310P3atc: command not found终端未加载 CANN 环境执行source /usr/local/Ascend/ascend-toolkit/set_env.sh建议写入 bashrc量化 quantize32 / FP32 报错AI Core 卷积只接受 FP16/INT8用默认 force_fp16quantize16敏感层做混合精度不要请求 FP32opset / 解析算子失败ONNX opset 过高或含未化简节点导出时opset17上限并simplifyTrue必要时用 onnxslim/onnxsim 再化简输入 shape 不匹配 / 维度错误ATC 静态 shape 与实际输入不一致固定--input_shapeimages:1,3,640,640BIN 也按该形状生成npu-smi 无设备 / 看不到卡物理、直通、驱动架构或未重启lspci 查枚举核对 x86/aarch64 包同版本线重装后重启/dev/davinci0 permission denied普通用户无设备权限驱动加--install-for-all重装或配置设备用户组检测框全图乱飘 / 无框预处理与训练不一致RGB/BGR、归一化、letterbox严格按 letterboxRGB/255后处理坐标减去 pad 再除以缩放比框位置偏移、贴边未做 letterbox 填充还原坐标先减 (left,top)再除以 r最后 clip 到原图尺寸量化后 mAP 明显下降INT8 对检测头不友好/校准集不具代表性检测头保留 FP16扩大校准集用 ais_bench 逐层比对不达标回退ais_bench 编译 aclruntime 失败未 source CANN 或 Python 版本不匹配先 source set_env.sh用与 CANN 匹配的 Python 3.10先 pip install wheel部署昇腾拼的是对齐而非算力把 YOLOv11m 跑上 Atlas 300I Pro真正花时间的不是模型本身而是一连串对齐芯片型号与 soc_version 对齐、驱动固件与 CANN 版本对齐、预处理与训练对齐、输入形状与编译参数对齐、端到端测试与真实负载对齐。这些对齐做对了140 TOPS 的 FP16 算力就能稳定地变成产线上的帧率做错一个就会卡在某个看似莫名其妙的报错上。
RELATED

相关推荐

从零搭建半导体设备上位机(五):三套 UI 库共存,HandyControl、MaterialDesign、Wu.Wpf 的样式基线

从零搭建半导体设备上位机(五):三套 UI 库共存,HandyControl、MaterialDesign、Wu.Wpf 的样式基线

三套 UI 库共存:HandyControl、MaterialDesign、Wu.Wpf 的样式基线这是「从零搭建半导体设备上位机」系列第5篇。一个 WPF 应用里同时装了 HandyControl、MaterialDesignThemes、Wu.Wpf 三套控件库。这篇讲它们为什么会打架、打架的具体机制是什么,以及怎…

📅 2026/11/6 5:13:30
JOREK, 托卡马克聚变仿真项目介绍

JOREK, 托卡马克聚变仿真项目介绍

文章目录JOREK :托卡马克非线性扩展MHD仿真代码一、JOREK是什么二、数值方法核心特点2.1 离散方案(R-Z 环向傅里叶)2.2 全隐式求解器2.3 混合流体-动理学扩展(近年重点)三、编译、环境与基本使用流程3.1 环境需求3.2 …

📅 2026/11/6 5:13:30
Linux---进程概念--环境变量和地址空间

Linux---进程概念--环境变量和地址空间

内容:1.理解环境变量,熟悉常见环境变量及其指令,getenv/setenv函数(环境变量部分以理解为主)2.理解C内存空间分配规律,了解进程内存映像和应用程序区别,认识地址空间3.了解用户态和硬件交互方法…

📅 2026/11/6 5:13:30
MORE NEWS

更多资讯

📰

光伏逆变器与算力电源融合的光储算一体化供电方案解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

ESP32-S3调试遇GDB与rm报No match?shell通配符和工具链路径才是真坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

ESP32多应用共享Flash:分区表规划与数据隔离实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

光伏储能系统仿真:Simulink中Boost与DAB协调控制详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

智能车竞赛电路设计全复盘:从BUCK电源到电机驱动的实战经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Claude Code终端卡顿根因与Code2AI优化实战

1. 问题不是“卡”,而是终端交互链路的多层阻塞我第一次在 Ubuntu 20.04 上启动claude code cli,输入claude welcome后光标停住、键盘无响应、CtrlC 失效——这不是“卡顿”两个字能概括的现象。它更像一条本该秒级完成的指令流水线,在某个环…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬