实时性能评估框架nn-Meter解读

PyTorch自定义Faster R-CNN实战:小目标缺陷检测全链路优化 Faster R-CNN作为经典两阶段目标检测框架,其核心价值在于高精度定位与强可解释性,但原生设计面向COCO等通用场景,难以直接适配工业质检、医疗影像等小目标密集、纹理特异的垂直领域。关键原理在于RPN锚框机制与特征金字塔的协同响应——当目标尺寸集中于32×32量级或存在亚像素级判据时,预设anchor将导致正样本匹配率骤降,进而引发mAP崩塌。技术价值体现在通过anchor尺寸重设、损失函数动态加权、学习率分层微调等手段,实现backbone语义迁移与RPN空间敏感性的双重校准。典型应用场景包括PCB 阅读详情

引言

随着人工智能技术的飞速发展,深度神经网络 (DNN) 模型被广泛应用到各种业务场景下,部署在许多移动端应用上。实际应用时,推理时间 (latency) 是评估模型是否能用、好用的关键指标之一。然而针对巨大的模型设计空间,实测各种设计模型的推理时间成本过高,而现有技术缺乏对部署硬件平台优化策略的理解以及对灵活多变模型架构的泛化性,所以无法做到准确的模型推理时间预测。

在神经结构搜索 (NAS) 、模型剪枝等任务中,如何快速且准确地获取模型在部署后的推理时间是一个十分关键的问题。传统方法对硬件效率的评估大多是基于 FLOPS 来预测的,准确率比较差,原因在于其部署链路过长,且涉及到部署框架、硬件优化特性等问题,这构成了一个十分复杂的系统。此外,众多新出现的设备,如 VPU 、 NPU 等也并未将内核信息开源,对用户呈现黑盒模式。

为此,微软亚洲研究院异构计算组的研究员们提出并开发了一种框架 nn-Meter ,在硬件内核信息处于黑盒的情况下,对模型推理时间实现更准确的预测。该框架核心思想是将模型图划分为若干内核 (kernel) ,即设备上的执行单元,分别针对各个内核进行训练拟合,通过内核级预测实现对整体模型图推理时间的预测,预测准确率远超过传统方法。该框架的两个核心技术是内核检测、自适应采样。其具体实现原理与逻辑是什么?本文打算一探究竟。

1. 整体介绍

nn-Meter 整体框架如下图所示:

eb1ff9d051fffa38cf7cc4bdb87dd588.png

根据公开论文中的实验结果,nn-Meter 在移动端 CPU 、移动端 GPU 、 Intel VPU 上针对几种经典神经网络模型组成的数据集的预测精度远超过传统方法。特别是移动端 CPU 、移动端 GPU 上的数据集预测中,在 10% 容忍误差范围内预测准确率不低于 94% 。

c40badae00eb1cba6578b4a9483dd045.png

对于一个神经网络模型,为了准确获取其推理时间,需要将其部署在后端设备上进行实测。nn-Meter 为了实现预测,首先将神经网络模型导入并转换成自身的 nnmeter-ir 。在 nnmeter-ir 的基础上,通过内核检测,将模型划分成若干 kernel ,所依赖的规则是在后端设备上通过若干测试样例检测出来的。然后针对不同类型的 kernel , 使用自适应数据采样方法分别生成若干 kernel 样本,将 kernel 样本放在后端设备上实测推理时间后,以 kernel 样本的特征为输入,对应的实测推理时间为输出,使用随机森林算法进行拟合,得到若干针对单个 kernel 的预测模型,以 .pkl 格式存储。之后将各个 .pkl 格式的模型组装成整体的预测器,实现整体推理时间的预测。

为了评估预测结果, nn-Meter 针对多种经典神经网络,在结构、层数不变的前提下修改其算子特征(例如 conv 算子的输入特征图尺寸 HW 、输入通道数 CIN 、输出通道数 COUT 、卷积核尺寸 KERNEL_SIZE 、 卷积步长 STRIDES,详见此处),得到多个不同的模型,分别部署在后端设备上进行实测后,构建数据集,用于评估预测器的预测准确率。

其中的关键技术点包括:

  • nnmeter-ir 导入

  • 后端的注册与连接

  • 融合规则检测

  • 自适应数据采样及训练

  • 预测器的组装与预测

笔者通过实际使用,认为该框架优点如下:

  • 可扩展性强。 通过基类派生并注册导入的方式定义了接口,便于用户添加自定义的后端、算子、内核、预测器。

  • 通用性好。 可以对不在数据集中的其他大型网络进行延迟预测,理论上也可以扩展对 Transformer 的支持

  • 调试方便。 框架由纯 Python 实现,便于用户断点调试。

该框架的不足在于:

  • 无法评估硬件平台中 cache 或 memory 对推理时间的影响。 虽然进行了内核级预测,但将硬件平台作为一个黑盒,内部具体架构或者模块未知。

  • 不能用于无编译器的边缘设备。 推理时间由编译器和硬件架构共同决定,编译器的优化级别不同,推理时间也会有较大差异。

2. 关键技术点及注册接口原理介绍

(1) nnmeter-ir导入

nn-Meter 实现了对不同前端框架的支持。其将导入的 Frozen Pb 模型或 onnx 模型统一转换为内置的 nnmeter-ir 格式,而后进行后续处理。

nnmeter-ir 格式在内存中是一个字典、列表的嵌套式结构,可以保存为 json 格式文件进行查看,如下所示:

{
    "input_im_0": {
        "inbounds": [],
        "attr": {
            "name": "input_im_0",
            "type": "Placeholder",
            "output_shape": [
                [
                    1,
                    224,
                    224,
                    3
                ]
            ],
            "attr": {
                "shape": [
                    1,
                    224,
                    224,
                    3
                ]
            },
            "input_shape": []
        },
        "outbounds": [
            "conv1.conv/Conv2D"
        ]
    },
    "conv1.conv/Conv2D": {
// ………………………………………………

其导入逻辑调用位于 nn_meter/ir_converter/utils.py ,将不同的前端模型统一化为 nnmeter-ir 。用户可通过如下命令将两种模型导入成 nnmeter-ir 。

nn-meter get_ir --tensorflow <path/to/pb/model> -o <path/to/output/json>
nn-meter get_ir --onnx <path/to/onnx/model> -o <path/to/output/json>

(2) 后端的注册与连接

后端的命名包括设备和运行时两部分, nn-Meter 除了调试使用的后端之外,默认提供了三种后端,分别是部署在移动 CPU 上的 tflite_cpu 、部署在移动 GPU 上的 tflite_gpu 、部署在 VPU 上的 openvino_vpu 。这三种后端可以通过如下命令进行查看。

nn-meter --list-backends

以 tflite_cpu 为例,通过断点调试逐级深入,可梳理出后端的调用逻辑如下图所示:

8e46e0fb133c813ebe97a677f5d69c57.png

nn-Meter 内置后端 tflite_cpu 所实现的 profile ,本质上是将模型通过 adb 方式推到移动设备上,并在 shell 里使用可执行程序 benchmark_model 进行实测,将实测结果字符串进行正则匹配解析,获取实测推理时间的平均值 (avg) 和标准差 (std) 。

profile 相关的核心代码详见 nn_meter/builder/backends/tflite/tflite_profiler.py ,字符串进行正则匹配解析的核心代码详见 nn_meter/builder/backends/tflite/cpu.py。

(3) 融合规则检测

融合规则检测所依赖的核心公式为论文中公式 (1) , 为阈值系数,配置文件中默认将其设置为 0.5 。

即假如两个算子融合后的 latency 比各自的 latency 之和要小,且二者间差距大于一定阈值,就认为两个算子确实发生了融合,形成一个 kernel。

配置文件中定义若干种算子组合,一种算子组合称为一个 test case 。假如该 test case 符合该公式,则成为一个检测到的合法 kernel。

代码中对应的部分在 nn_meter/builder/backend_meta/fusion_rule_tester/generate_testcase.py 中:

# ………………………………………………
    def test(self):
        secondary_op_lat = min(lat for op, lat in self.latency.items() if op != 'block' or op != self.false_case)
        return self.latency[self.false_case].avg - self.latency['block'].avg > self.eps * secondary_op_lat.avg
# ………………………………………………

事实上,此处虽然疑似将 误写成 ,但实则基本没有影响,因为 对应的 和 对应的 取值一致。

(4) 自适应数据采样及训练

由于某些内核所具有的数据采样空间巨大,例如 conv-bn-relu 。因此, nn-Meter 通过迭代采样对最有益的配置进行采样。

自适应数据采样主要采集两方面的数据。首先是目前模型设计空间中考虑的内核配置参数,通过计算当前设计空间的配置参数取值概率分布,进而根据此概率分布进行采样。第二是某些会触发硬件平台特殊优化的内核配置参数。

训练时针对各种内核首先生成前端模型格式,而后编译为后端所支持的模型格式,使用后端实现的 profile 和 parse 进行 latency 实测。而后以内核配置为输入,实测 latency 为输出,进行随机森林训练拟合。

nn-Meter 也验证出, conv 系列的 kernel 其实可以都用 conv-bn-relu 训练出的内核预测模型进行预测。

(5) 预测器的组装与预测

内核预测模型训练出来后, nn-Meter 使用 yaml 格式的配置文件将其组织起来组成预测器。配置文件如下图所示:

name: cortexA76cpu_tflite21
version: 2.0
category: cpu
package_location: /home/john/Projects/nn-meter/user/predictors/cortexA76cpu_tflite21
kernel_predictors:
    - conv-bn-relu
    - dwconv-bn-relu
    - fc
    - global-avgpool
    - hswish
    - relu
    - se
    - split
    - add
    - addrelu
    - maxpool
    - avgpool
    - bn
    - bnrelu
    - channelshuffle
    - concat

nn-Meter 导入新的前端模型后,首先根据融合规则将其拆分为若干 kernel ,而后根据内核预测模型分别预测各个 kernel 的 latency ,最后将计算图上最长 kernel 链路的 latency 累加起来,即为整体模型的预测 latency。

3. 总结

nn-Meter 框架通过内核级预测实现了对整体模型图推理时间的预测。该框架还可以作为一个精确的预测工具,在自研芯片的设计中实现端到端预测。进而可扩展为硬件模拟仿真器,在自研芯片的设计过程中起指导作用。

本文针对 nn-Meter 框架的关键技术点和可扩展注册接口进行了梳理分析,受限于笔者知识水平,文中可能会存在某些理解身上的偏差,欢迎各位大佬进行交流,共同进步。



2662269c1e4dfc284b56815ecc6484b9.png

YOLO11转CoreML完全指南:手把手教你如何将YOLO11转换为CoreML格式,并在iOS上测试。 本文将详细介绍如何将YOLO11目标检测模型转换为CoreML格式,并部署到iOS设备上。主要内容包括:环境准备与工具安装(Python环境配置、必要库安装、Xcode环境搭建);YOLO11模型获取与理解(模型概述、预训练模型下载、网络结构解析);模型转换过程(CoreML格式介绍、转换工具使用、输入输出处理);以及iOS端部署与优化(CoreML模型集成、预处理实现、性能优化技巧)。文章提供了完整的代码示例和关键步骤说明,帮助开发者实现高效的移动端目标检测应用。 阅读详情

相关推荐

【信息科学与工程学】【运营科学】第二篇 C4信息与通信网络运营 (C4) ——数据中心网络运营01

这是运营的物理和逻辑对象。C4.11xx 传输资源:光纤、微波、卫星链路;频谱资源(Sub-6GHz, 毫米波)。C4.12xx 节点资源:核心路由器、交换机、基站(gNB)、数据中心服务器。C4.13xx 虚拟化资源:由NFV生成的虚拟网络功能(VNF)、容器、虚拟机和网络切片实例。这是实现智能、灵活运营的核心技术集。C4.21xx 软件定义与虚拟化:软件定义网络 (SDN):控制平面与数据平面分离,实现集中、可编程的网络控制。网络功能虚拟化 (NFV):将传统专用硬件设备的功能以软件形式运行在通用硬件上

weixin_49199313的博客 1450

安装和初步使用 nn-Meter

安装和初步使用 nn-Meter

程永强 875

【信息科学与工程学】【安全领域】第八十七篇 网络空间安全中的数学物理约束01

密码学基础(对称加密/公钥加密/哈希/数字签名)密码分析学(差分分析/线性分析/侧信道)安全协议与形式化验证(认证协议/TLS/密钥交换)访问控制与身份认证(Bell-LaPadula/BIBA/RBAC/ABAC)网络安全与攻防对抗(DDoS/入侵检测/攻防博弈)恶意代码分析(传播动力学/图论模型)隐私保护(差分隐私/同态加密/多方计算)可信计算与硬件安全(TPM/侧信道/故障注入)风险评估与漏洞管理(CVSS/攻击图/贝叶斯网络)信息论安全(完善保密性/熵/信息泄露量化)约束:侧信道攻击中的功耗模型(R

weixin_49199313的博客 556

安装和使用 nn-Meter

安装和使用 nn-Meter

程永强 783

【信息科学与工程学】【通信工程】第一百九十二篇 交换机体系结构01

编号类型领域问题详细的数学分析参数列表(表达式 / 范围 / 边界 / 测量)关联知识1.1算法-架构路由查找LPM 在多口线速下的时延界字符串集 + Trie 的偏序格:路由表 = 前缀集合 P⊂{0,1}^≤32,LPM 是找 p∈P 使 p 是 d 的最长前缀。TCAM 等价于并行匹配,复杂度 O(1);SRAM 软实现(DIR-24-8 等)≈ 多阶 Trie,期望比较次数 = 树深 = O(W),W=32/128。 优化理论:TCAM 占用 vs SRAM 的 knapsack:min ∑w

weixin_49199313的博客 513

【信息科学与工程学】【通信工程】第三百零六篇 IPv6/SRv6服务链中的学科知识01

序号数据类型 (主类)数据类型 (子类)示例/说明存储/表示方式备注/应用场景2246生物信息型DNA序列ATGC碱基序列FASTA格式基因组2247生物信息型RNA序列AUGC碱基序列FASTA转录组2248生物信息型蛋白质序列氨基酸序列FASTA蛋白组2249生物信息型基因注释GFF/GTF文件Gene annotation功能2250生物信息型变异数据VCF文件Variant call formatSNP/INDEL2251生物信息型表达矩阵基因×样本Expression matrix (FPKM/T

weixin_49199313的博客 90

【亲测免费】 nn-Meter 开源项目使用教程

nn-Meter 开源项目使用教程 一、项目目录结构及介绍 nn-Meter 是一个用于深度学习模型在多样化边缘设备上进行精确推理延迟预测的工具包。以下是基于其GitHub仓库微软nn-Meter的基本目录结构概述: nn-Meter/ ├── LICENSE # 许可证文件 ├── README.md # 项目说明文件 ├── requ...

gitblog_01146的博客 769

【信息科学与工程学】【产品体系】计算机科学与自动化——第一百八十九篇 操作系统内核(微内核/宏内核)函数与算法02

宏内核(Linux)更多典型内核函数/算法,从编号271开始,覆盖中断管理、热插拔、PCI、ACPI、固件、崩溃转储、kexec、休眠、watchdog、RTC、hwmon、LED、backlight、input子系统、remoteproc等更多领域。编号类型领域内核类型内核中的函数/算法/模块/模组模块的调用关系模块/函数/算法逐步推理思考的数学表达式及参数列表及参数数值设计模块的C/C++/其他代码关联知识271中断管理中断描述符宏内核 / (中断子系统核心)驱动申请中断 → → → 分配irq_

weixin_49199313的博客 109

TransFuser:基于Transformer的多模态传感器融合技术彻底革新端到端自动驾驶

TransFuser是一项突破性的自动驾驶技术,它基于Transformer架构实现视觉与激光雷达数据的高效融合,为端到端自动驾驶提供了全新的解决方案。作为PAMI'23和CVPR'21收录的创新研究成果,TransFuser通过先进的深度学习方法,解决了传统自动驾驶系统中多传感器数据融合的瓶颈问题,显著提升了系统的环境感知能力和决策可靠性。 ## 技术背景与挑战:自动驾驶感知系统的演进困境

gitblog_00648的博客 281

【信息科学与工程学】【通信工程】第一百九十一篇 路由器体系结构01

编号类型领域问题详细的数学分析参数列表(表达式 / 数值范围 / 边界 / 测量)关联知识1路由控制平面 · 图论 / 优化最短路径 / 最优下一跳如何计算?收敛边界?图模型​ G=(V,E),w:E→R+; SPF = Dijkstra O(∥E∥log∥V∥);BGP 策略用稳定路径问题 SPP(NP-hard),用博弈/不动点分析。收敛界:失效检测 tdetect​+tspf​+tupdate​,收敛时间 τ≤thold​+4RTT(BGP)。可用 Lyapunov​ 分析路由震荡。V: 节点数(10

weixin_49199313的博客 394

基于Parser解析的车辆ReID项目全解析:从工程化配置到模型实战

在深度学习项目中,配置管理是工程实践的核心环节,它直接影响着实验的可复现性、团队协作效率和模型迭代速度。其原理在于通过一套统一的配置解析系统,将模型结构、超参数、数据路径等所有可变因素从代码中分离出来,实现配置与逻辑的解耦。这种工程化方法的技术价值在于,它使得研究者能够像调整实验参数一样灵活地管理整个项目,无需深入代码即可进行大规模的超参数搜索和模型对比。在计算机视觉领域,尤其是在车辆重识别(ReID)这类复杂任务中,一个设计良好的配置系统能显著降低项目维护成本,并加速从研究到部署的流程。车辆ReID技术旨

weixin_33896726的博客 418

用 Ultralytics YOLO 定义计算机视觉项目目标:问题陈述、SMART 目标与任务建模的完整指南

在启动一个计算机视觉项目时,最关键的环节往往不是选模型或调参数,而是**先把问题定义清楚**:写出点名核心问题、范围、利益相关方与约束的问题陈述,设定可量化、有时限的 SMART 目标,并把问题映射到决定模型、数据集与部署决策的计算机视觉任务上。本指南以"高速公路车辆测速"为例逐步演示这一流程,阅读后你将能够独立完成项目目标的定义、任务与模型选型、数据集策略与部署路径的取舍。完整流程的宏观梳理可参

gitblog_00020的博客 533

摔倒检测数据集fall-dataset.rar深度解析与工程化落地指南

摔倒检测是智能养老与远程监护中的关键行为识别任务,其本质是融合人体姿态估计、时序动作分析与场景上下文理解的多模态问题。传统目标检测方法常因标注噪声、图像质量退化(如低分辨率、光照不均、运动模糊)及语义歧义而失效。fall-dataset.rar作为典型真实场景数据集,集中体现了数据采集非标准化、标注不一致、遮挡严重等共性挑战,成为检验模型鲁棒性与工程落地能力的重要基准。本文围绕该数据集展开系统性数据清洗、YOLOv8定制化训练与边缘部署实践,覆盖元数据重建、光照均衡、运动模糊增强、标注一致性审计、ancho

weixin_33928137的博客 504

推荐文章:深度学习推理延迟预测利器 —— nn-Meter

推荐文章:深度学习推理延迟预测利器 —— nn-Meter 在边缘计算和移动设备日益增长的今天,深度神经网络(DNN)模型的部署面临着严峻的挑战。一个至关重要的考量因素便是推理延迟——这直接关系到应用响应速度和用户体验。为了解决这一痛点,微软推出了一项革新性的工具——nn-Meter,一款能够高精度预测DNN模型在多种边缘设备上推理时间的高效系统。 项目介绍 nn-Meter通过其核心理念实现了突...

gitblog_00277的博客 931

Python库 | nn_meter-1.0-py3-none-any.whl

资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:nn_meter-1.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.youkuaiyun.com/article/details/101784059

告别QXDM:在Android Studio中调试与验证高通NV读写功能的完整流程

本文详细介绍了在Android Studio中调试与验证高通NV分区读写功能的完整流程,替代传统的QXDM工具。通过JNI接口层、HAL服务层和Diag通信层的架构设计,开发者可以在熟悉的IDE环境中高效完成NV操作,包括环境配置、错误处理和性能优化等关键实践。

weixin_27013291的博客 261

nn-Meter 使用教程

nn-Meter 使用教程 项目介绍 nn-Meter 是一个深度学习模型推理延迟预测工具包,旨在准确建模和预测多样边缘设备上的延迟。它由微软研究院开发,支持多种模型格式和硬件平台,适用于希望在不实际部署到设备的情况下获取深度神经网络(DNN)推理延迟的用户。 项目快速启动 安装 首先,确保你已经安装了 Python 3。然后,通过 pip 安装 nn-Meter: pip install nn-...

gitblog_00900的博客 611

STM32F4与LAN8720硬件连接避坑指南:从原理图到RMII信号完整性的实战解析

本文深入解析了STM32F4与LAN8720以太网连接的硬件设计要点与常见陷阱。重点剖析了电源上电时序、复位电路设计、RMII接口配置等关键环节,并提供了从原理图设计到PCB布局、信号完整性调试的完整实战指南,帮助硬件工程师规避设计风险,确保以太网通信的长期稳定运行。

weixin_29189003的博客 211

Towards Accurate Latency Prediction of Deep-Learning Model Inference on Diverse Edge Devices

nn-Meter: Towards Accurate Latency Prediction of Deep-Learning Model Inference on Diverse Edge Devices nn-Meter:精准预测深度学习模型在边缘设备上的推理延迟

程永强 1097

django drf 框架知识点(一)——serializer序列化器_用法全解

【django drf】序列化器:别名设置,全部参数序列化,自定义字段,只读只写,部分更新

qq_59344127的博客 1338

国税局发票查验中英文验证码识别最新版,识别率99.9%

采用深度学习进行发票查验验证码模型的训练,在我电脑上模型训练的环境如下: 显卡:RTX 2080TI tensorflow-gpu:2.5.3 1 训练集和测试集的准备 发票查验的验证码分为4种类型,分别为黑色、红色、黄色、蓝色,经过我的测试,采用4个模型的效果最好,每个模型对应识别一种类型的验证码。 首先我们4种类型的验证码都准备10万张。 00黑色类型的验证码: 01红色类型的验证码: 02黄色类型的验证码: 03蓝色类型的验证码: 验证码图像图像准备好后,对其进行标记,也就是对验证码重命名:

Keras深度学习 83万+
上一篇: 算子融合技术演进与Apollo方案浅析
下一篇: 高性能计算的内存模型研究
Linux基金会AI&Data基金会
博客等级 码龄6年 100粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux基金会AI&Data基金会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值