引言
随着人工智能技术的飞速发展,深度神经网络 (DNN) 模型被广泛应用到各种业务场景下,部署在许多移动端应用上。实际应用时,推理时间 (latency) 是评估模型是否能用、好用的关键指标之一。然而针对巨大的模型设计空间,实测各种设计模型的推理时间成本过高,而现有技术缺乏对部署硬件平台优化策略的理解以及对灵活多变模型架构的泛化性,所以无法做到准确的模型推理时间预测。
在神经结构搜索 (NAS) 、模型剪枝等任务中,如何快速且准确地获取模型在部署后的推理时间是一个十分关键的问题。传统方法对硬件效率的评估大多是基于 FLOPS 来预测的,准确率比较差,原因在于其部署链路过长,且涉及到部署框架、硬件优化特性等问题,这构成了一个十分复杂的系统。此外,众多新出现的设备,如 VPU 、 NPU 等也并未将内核信息开源,对用户呈现黑盒模式。
为此,微软亚洲研究院异构计算组的研究员们提出并开发了一种框架 nn-Meter ,在硬件内核信息处于黑盒的情况下,对模型推理时间实现更准确的预测。该框架核心思想是将模型图划分为若干内核 (kernel) ,即设备上的执行单元,分别针对各个内核进行训练拟合,通过内核级预测实现对整体模型图推理时间的预测,预测准确率远超过传统方法。该框架的两个核心技术是内核检测、自适应采样。其具体实现原理与逻辑是什么?本文打算一探究竟。
1. 整体介绍
nn-Meter 整体框架如下图所示:
根据公开论文中的实验结果,nn-Meter 在移动端 CPU 、移动端 GPU 、 Intel VPU 上针对几种经典神经网络模型组成的数据集的预测精度远超过传统方法。特别是移动端 CPU 、移动端 GPU 上的数据集预测中,在 10% 容忍误差范围内预测准确率不低于 94% 。
对于一个神经网络模型,为了准确获取其推理时间,需要将其部署在后端设备上进行实测。nn-Meter 为了实现预测,首先将神经网络模型导入并转换成自身的 nnmeter-ir 。在 nnmeter-ir 的基础上,通过内核检测,将模型划分成若干 kernel ,所依赖的规则是在后端设备上通过若干测试样例检测出来的。然