0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

高效打包边缘人工智能神经网络模型

CEVA 来源:未知 2023-11-09 10:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式设计中常常需要将应用程序打包到有限的片上内存中,现在,将人工智能神经网络模型压缩到有限的存储器中也是如此。对于传统软件,就某些方面而言,做到这一点可谓更具挑战,因为基于神经网络的系统中的工作内存都是“内部循环”的,要求换出到DDR内存,可能会降低性能。另外,在推理过程中重复访问DDR也会增加边缘设备的典型低功耗预算,这一点也同样很难令人满意。更大的片上存储器是解决问题方法之一,但是会增加产品成本。综上所述,最佳解决方案是尽可能高效地将模型打包到可用内存中。

众所周知,在编译人工智能神经网络模型以便在边缘设备上运行时,有一些量化技术可以缩小此模型的大小,如将浮点数据和权重值转换为定点,然后进一步缩小为INT8或更小的值。想象一下,如果还能更进一步会怎样。在本文中,我将介绍几种图优化技术,助您在2MB的二级缓存中安装更多量化模型,但仅仅量化是无法完成安装的。

优化人工智能神经网络图中的缓冲区分配

wKgaomVMQdOAfJPPAACmlCKXd8g725.png

▲图1.一个简单的人工智能图

(Op代表运算符;E代表外部输入;

C代表常数(权重);V代表变量;T代表张量)

人工智能神经网络模型表示为图形并作为图形来管理,其中的运算是通过缓冲区相互连接的节点进行的。这些缓冲区固定分配在内存中,大小在编译图时确定,用于保存图中的中间计算结果或输入和输出。在所有图中,流水关系图是最基本的一种,但更典型的简单图如图1所示。

我们的目标是让编译器优化缓冲区内存总需求。想想简单的人工智能神经网络图中可能的分配序列(图2中的左图)。首先要明白,图中的不同运算需要不同大小的缓冲区,并且在进行下一波处理之前,将不再需要已完成运算的输入缓冲区。读取缓冲区A(此处分配有800K字节),就可以在后续运算中重复使用了,缓冲区B也是如此,依此类推。在左图出现分支时,先将缓冲区A和B分配给了右侧分支,之后则必须为左侧分支分配一个新的缓冲区C。

wKgaomVMQdOAMcq5AABxXZ4kfzw357.jpg

▲图2.说明缓冲区分配的简单图

(右图在左图的基础上,将缓冲区B和C互换

并增加了缓冲区B的大小,得到了改善)

从这个例子中不难看出,一开始就将缓冲区B的大小增加到1000K,稍后再在左侧分支中重复使用B的全部大小,右侧分支中缓冲区C就只需要额外10K内存,如右图所示。左/右内存需求差异明显。左图需要2.5MB (800K+700K+1000K),而修改顺序后的右图只需要 1.81MB(800K+1000K+10K)。

在一般人工智能神经网络图中找出最优排序就是众所周知的0-1背包问题。我们展开了初步测试,研究这种优化如何改善打包到固定大小L2缓存的效果。即使是当下初步阶段,结果也相当不错。我们测试了几种常见网络在2MB和4MB L2缓存中的安装效果。优化前,只有13%的模型可以安装在2MB内存中,38%的模型可以安装在4MB内存中。优化后,66%的模型可以安装在2MB内存中,83%的模型可以安装在4MB内存中。仅这一项优化就值得我们努力,我们的目标是确保更多模型可以完全在片上内存中运行。

通过合并缓冲区优化人工智能神经网络模型

在卷积人工智能神经网络模型中,经过前几层处理后,缓冲区大小通常会缩小。这种结果表明,一开始分配的大缓冲区可以通过与稍后需要的较小缓冲区共享空间得到更高效的利用。图3说明了这种可能性。

wKgaomVMQdSAckvDAABjXjMxhDI560.jpg

▲图3.不同的简单图

(最初为缓冲区A分配的大小可以稍后由左右分支共享,

此处的C缓冲区源自最初的A缓冲区)

我们试着进行优化,看看这种合并对内存总需求有何影响。在一系列无比熟悉的网络中,我们发现缓冲区总大小减小了15%到35%。再次重申一遍,这些改进非常具有吸引力。

要点

我们通过这些优化,运行各种主流卷积人工智能神经网络模型,从检测到分类到细分,再到RNN模型不一而足。大多数情况下,模型完全迁移至了4MB二级缓存,某些情况下,模型迁移至了二级缓存中,只有一部分还留在DDR内存中。几乎所有模型都在打包方面呈现出巨大改进。

即使你的人工智能神经网络模型无法安装在片上内存,也并非无法优化。在人工智能编译器阶段可以对缓冲区进行优化,大幅压缩模型总大小。在CEVA,我们很乐意与你讨论以上问题和其他想法,以便进一步优化人工智能神经网络模型的内存使用。

识别右侧二维码

立即了解CEVA

更多信息

wKgaomVMQdSAUrT4AAFqtfxSXaM346.png  

本文作者:Rami Drucker, Machine Learning SW Architect, CEVA


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CEVA
    +关注

    关注

    1

    文章

    191

    浏览量

    77060

原文标题:高效打包边缘人工智能神经网络模型

文章出处:【微信号:CEVA-IP,微信公众号:CEVA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NMSIS神经网络库使用介绍

    NMSIS NN 软件库是一组高效神经网络内核,旨在最大限度地提高 Nuclei N 处理器内核上的神经网络的性能并最​​大限度地减少其内存占用。 该库分为多个功能,每个功能涵盖特定类别
    发表于 10-29 06:08

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    本帖欲分享在Ubuntu20.04系统中训练神经网络模型的一些经验。我们采用jupyter notebook作为开发IDE,以TensorFlow2为训练框架,目标是训练一个手写数字识别的神经网络
    发表于 10-22 07:03

    人工智能工程师高频面试题汇总:循环神经网络篇(题目+答案)

    后台私信雯雯老师,备注:循环神经网络,领取更多相关面试题随着人工智能技术的突飞猛进,AI工程师成为了众多求职者梦寐以求的职业。想要拿下这份工作,面试的时候得展示出你不仅技术过硬,还得能解决问题。所以
    的头像 发表于 10-17 16:36 496次阅读
    <b class='flag-5'>人工智能</b>工程师高频面试题汇总:循环<b class='flag-5'>神经网络</b>篇(题目+答案)

    神经网络的并行计算与加速技术

    随着人工智能技术的飞速发展,神经网络在众多领域展现出了巨大的潜力和广泛的应用前景。然而,神经网络模型的复杂度和规模也在不断增加,这使得传统的串行计算方式面临着巨大的挑战,如计算速度慢、
    的头像 发表于 09-17 13:31 899次阅读
    <b class='flag-5'>神经网络</b>的并行计算与加速技术

    利用超微型 Neuton ML 模型解锁 SoC 边缘人工智能

    应用。 为什么选择 Neuton 作为开发人员,在产品中使用边缘人工智能的两个最大障碍是: ML 模型对于您所选微控制器的内存来说太大。 创建自定义 ML 模型本质上是一个手动过程,需要高度的数据科学知识
    发表于 08-31 20:54

    AI 边缘计算网关:开启智能新时代的钥匙​—龙兴物联

    顺畅地通向云端,实现设备与云端之间高效的数据传输与交互。通过融合先进的边缘计算和人工智能技术,AI 边缘计算网关能够在靠近数据源的网络
    发表于 08-09 16:40

    超小型Neuton机器学习模型, 在任何系统级芯片(SoC)上解锁边缘人工智能应用.

    Neuton 是一家边缘AI 公司,致力于让机器 学习模型更易于使用。它创建的模型比竞争对手的框架小10 倍,速度也快10 倍,甚至可以在最先进的边缘设备上进行
    发表于 07-31 11:38

    Nordic 收购 Neuton.AI # Neuton ML 模型解锁 SoC 边缘人工智能

    Nordic 业界领先的 nRF54L 系列超低功耗无线 SoC 与 Neuton 革命性的神经网络框架相结合,开启边缘机器学习的新纪元,即使是资源受限的设备也能拥有可扩展的高性能人工智能 (AI
    的头像 发表于 07-01 17:32 2327次阅读
    Nordic 收购 Neuton.AI # Neuton ML <b class='flag-5'>模型</b>解锁 SoC <b class='flag-5'>边缘人工智能</b>

    Nordic收购 Neuton.AI 关于产品技术的分析

    示例和支持,方便开发者在 Nordic 的各类芯片上实现高效边缘 AI 应用; 如果对这个AI人工智能应用感兴趣,请评论区联系我们.
    发表于 06-28 14:18

    爱立信携手超微加速边缘人工智能部署

    爱立信与超微 Supermicro近日宣布有意开展战略合作,加速边缘人工智能部署。
    的头像 发表于 06-17 09:42 1.5w次阅读

    开售RK3576 高性能人工智能主板

    ZYSJ-2476B 高性能智能主板,采用瑞芯微 RK3576 高性能 AI 处理器、神经网络处理器 NPU, Android 14.0/debian11/ubuntu20.04 操作系统
    发表于 04-23 10:55

    如何训练BP神经网络模型

    BP(Back Propagation)神经网络是一种经典的人工神经网络模型,其训练过程主要分为两个阶段:前向传播和反向传播。以下是训练BP神经网络
    的头像 发表于 02-12 15:10 1477次阅读

    用 ADI 的 MAX78002 MCU 开发边缘人工智能应用

    应用能够在物联网设备上运行,而这些设备通常会受到内存、带宽和功耗的限制。 [Analog Devices, Inc.] 的一款微控制器 (MCU) 集成了低功耗卷积神经网络 (CNN) 加速器,可在电池供电型设备上处理人工智能推断,从而突破
    的头像 发表于 01-26 21:20 943次阅读
    用 ADI 的 MAX78002 MCU 开发<b class='flag-5'>边缘人工智能</b>应用

    人工神经网络的原理和多种神经网络架构方法

    在上一篇文章中,我们介绍了传统机器学习的基础知识和多种算法。在本文中,我们会介绍人工神经网络的原理和多种神经网络架构方法,供各位老师选择。 01 人工
    的头像 发表于 01-09 10:24 2274次阅读
    <b class='flag-5'>人工</b><b class='flag-5'>神经网络</b>的原理和多种<b class='flag-5'>神经网络</b>架构方法

    边缘设备上设计和部署深度神经网络的实用框架

    ,以及由强大而高效的软件工具链补充的低成本边缘设备的可用性。此外,需要避免通过网络传输数据——无论是出于安全原因还是仅仅为了尽量减少通信成本。 边缘人工智能涵盖广泛的设备、传感器、微控
    的头像 发表于 12-20 11:28 1412次阅读