MicroFlow:一种高效的基于Rust的TinyML推理引擎

英文论文标题:MICROFLOW: AN EFFICIENT RUST-BASED INFERENCE ENGINE FOR TINYML

中文论文标题:MicroFlow:一种高效的基于Rust的TinyML推理引擎

作者信息:

  • Matteo Carnelos,意大利帕多瓦大学,Grepit AB, Sweden,matteo.carnelos@studenti.unipd.it
  • Francesco Pasti,意大利帕多瓦大学,pastifranc@dei.unipd.it
  • Nicola Bellotto,意大利帕多瓦大学,nbellotto@dei.unipd.it

论文出处:arXiv:2409.19432v1 [cs.LG] 28 Sep 2024

主要内容概述:

摘要
MicroFlow 是一个开源的 TinyML 框架,旨在将神经网络 (NNs) 部署在嵌入式系统上,使用 Rust 编程语言,特别注重效率和鲁棒性,适合在关键环境中应用。MicroFlow 采用基于编译器的推理引擎方法,并结合 Rust 的内存安全和特性。该解决方案能够在资源极其有限的设备上成功部署 NN,包括仅有 2kB RAM 的裸机 8 位微控制器。此外,与部署 NN 参考模型的其他最新解决方案相比,MicroFlow 能够使用更少的 Flash 和 RAM 内存,并且在中等大小的 NN 上实现更快的推理,对更大的 NN 实现类似的性能。实验结果证明了 MicroFlow 在资源特别有限的关键环境中部署 TinyML 模型的效率和适用性。

第1节 引言
TinyML 是机器学习 (ML) 的一个领域,专注于小型和低功耗嵌入式设备。TinyML 的目标是使这些设备能够在不依赖基于云的服务器或高性能计算系统的情况下执行智能任务。随着对能够执行智能实时任务的智能设备的需求不断增加,这一领域近年来越来越受欢迎。TinyML 的一个显著优势是其能够在低功耗设备上运行,使其非常适合资源受限的环境。

第2节 相关工作
TinyML 指的是在小型、低功耗嵌入式设备上部署 ML 模型。TinyML 应用的一个典型例子是唤醒词检测,也称为关键词检测或热词。这涉及到训练一个 NN 来识别特定的声音或短语,如“Hey Siri”或“OK Google”,触发设备开始监听用户命令。训练后的模型随后被压缩并部署到边缘设备上,执行始终在线的推理。

第3节 系统设计和组件
MicroFlow 的高级结构包括两个主要组件:位于主机机器上的 MicroFlow 编译器和位于目标微控制器上的 MicroFlow 运行时。目标是尽可能多地将工作委托给编译器,创建一个轻量级运行时进程,该进程在程序执行期间仅执行必要的计算。

a7945d0a00744bb485f2e7fb368ab483.png

b231c7b2a290438b99a448ae1345956d.png

b0238976e3a04df485fefd98a919a8dd.png

6d3ea6670134445eb111fe6448034783.png

第4节 内存管理
内存管理是在资源受限的微控制器上执行推理的关键方面。高效的内存利用对于确保最佳性能、最小化内存占用以及避免内存泄漏和崩溃等问题至关重要。

第5节 MicroFlow 操作符
NN 进程通常由计算图中一系列操作表示。MicroFlow 提供了实现 FNN 和 CNN 的最常见操作,包括 FullyConnected、Conv2D、DepthwiseConv2D、AveragePool2D、Reshape、ReLU、ReLU6 和 Softmax 操作符。

81bcd3c25f67468480c6329d9088aeeb.png

第6节 实验评估
MicroFlow 在三个不同大小和复杂度的模型上进行了评估,所有模型都量化为 8 位有符号整数。实验包括评估准确性、内存使用情况、运行时性能和能源消耗。

第7节 结论
本文介绍了 MicroFlow,这是一个针对资源受限微控制器的 TinyML 推理引擎,使用 Rust 实现以实现内存安全和效率。实验结果证明了其在多项 ML 任务中的有效性和出色的性能,在准确性、内存使用、执行时间和能源消耗之间取得了良好的平衡。MicroFlow 已作为开源项目发布,以便研究和工业界能够根据最终用户的需求扩展其功能。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/54784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

潜水打捞系统助力,破解汽车打捞难题

随着人类活动的不断扩展,汽车落水事故频发,成为救援工作中的一大难题。汽车因其重量和结构特性,一旦沉入水体,打捞工作将面临巨大挑战。传统的打捞方法往往效率低下,且在操作过程中可能会对汽车造成进一步的损害&#…

Excel中使用SQL语句的四种方法

总结在 Excel 中使用 SQL 语句的四种方法,各种方法都有各自的适用场景,可以选择自己熟悉的或喜欢方式。本文以在 Excel 中操作 MS SQL 数据库的数据为例进行说明。MS SQL 的数据如下,使用微软 SQLExpress 版本。 方法 1: Excel 现…

RSA - 共模攻击

概念 RSA 共模攻击(Common Modulus Attack)是一种在特定条件下可以利用的 RSA 加密算法的攻击方法。它利用了当多个密文使用同一个 RSA 公钥(即相同的模数 n)进行加密时,可能可以通过密文之间的关系来获取明文信息&am…

spring揭秘25-springmvc04-servlet容器与springmvc容器总结

文章目录 【README】【1】DelegatingFilterProxy回顾【1.1】DelegatingFilterProxy初始化过滤器bean 【2】从servlet容器获取springmvc顶级web容器【2.1】从Servlet容器中获取springmvc容器总结【2.2】ContextLoaderListener加载springmvc顶级web容器并将其添加到servlet容器【…

Android开发视频预览效果

Android开发视频预览效果 视频播放不是一个简单的事情,得有暂停,继续播放等功能,屏幕的适配也是头疼的事情 一、思路: 引用的是腾讯播放器TXVodPlayer 二、效果图: 图片不是很直观,也可以看下视频 And…

wordpress调用全部页面 排除某个指定ID页面

要在WordPress中调用所有页面并排除指定的ID&#xff0c;您可以使用WP_Query类。以下是一个示例代码&#xff0c;它将查询所有页面并排除指定的页面ID&#xff1a; <?php // Page ID array to exclude $exclude_ids array( 6, 66, 666 ); //Replace here with the page I…

数据要素资料阅读笔记

目录 文章目录 目录数据价值化与数据要素市场发展报告 2024 —— 国信息通信研究院政策与经济研究所一、新理论:数据要素价值释放的经济学分析(一)从稀缺性看数据要素特征(二)数据要素市场化配置理论(三)数据要素市场分类及特征(四)数据要素价值释放路径和框架二、新进展:数据价…

(Linux和数据库)1.Linux操作系统和常用命令

了解Linux操作系统介绍 除了办公和玩游戏之外不用Linux&#xff0c;其他地方都要使用Linux&#xff08;it相关&#xff09; iOS的本质是unix&#xff08;unix是付费版本的操作系统&#xff09; unix和Linux之间很相似 Linux文件系统和目录 bin目录--放工具使用的 操作Linux远程…

CentOS 7 上安装 Kibana

以下是在 CentOS 7 上安装 Kibana 的步骤&#xff1a; 一、安装 Java&#xff08;如果尚未安装&#xff09; Kibana 需要 Java 运行环境。如果系统中没有安装 Java&#xff0c;可以使用以下命令安装 OpenJDK&#xff1a; sudo yum install java-1.8.0-openjdk二、添加 Elast…

消费者Rebalance机制

优质博文&#xff1a;IT-BLOG-CN 一、消费者Rebalance机制 在Apache Kafka中&#xff0c;消费者组 Consumer Group会在以下几种情况下发生重新平衡Rebalance&#xff1a; 【1】消费者加入或离开消费者组&#xff1a; 当一个新的消费者加入消费者组或一个现有的消费者离开消费…

ROS基础入门——实操教程

ROS基础入门——实操教程 前言 本教程实操为主&#xff0c;少说书。可供参考的文档中详细的记录了ROS的实操和理论&#xff0c;只是过于详细繁杂了&#xff0c;看得脑壳疼&#xff0c;于是做了这个笔记。 Ruby Rose&#xff0c;放在这里相当合理 本文初编辑于2024年10月4日 C…

mysql linux 安装

--------------------------------------------------------------------------------------------------------------------------------- 1.前置准备 1.1 卸载旧版MySQL 1.2 查看rpm包 rpm -qa|grep mysql 若有可用 rpm -e 安装包 --nodeps 1.3 查找mysql残留包&#x…

MySQL--事务(详解)

目录 一、前言二、本文章目标三、什么是事务&#xff1f;四、事务的ACID特性五、为什么要使用事务六、如何使用事务6.1 查看支持使用事务的引擎6.2语法6.3 开启⼀个事务&#xff0c;执行更新后回滚6.4 开启一个事务更新后提交6.5 保存点6.6 自动/手动提交事务 七、事务的隔离性…

Spring异步线程池的问题

今天看一视频&#xff0c;提到说 Spring默认的异步线程池比较简单&#xff0c;每次执行异步任务&#xff0c;都会新建一个线程进行处理&#xff0c;不会重复利用&#xff0c;所以在用Spring框架开发的时候&#xff0c;需要自定义异步线程池。第一次听到这个说法。遂开始百度。 …

Word页眉内容自动填充为章节标题

Word页眉内容自动填充为章节标题 在写毕业论文的过程中&#xff0c;通常要求将页眉设置为章节标题&#xff0c;例如这样 通常&#xff0c;页眉内容我们都是手敲上去的&#xff0c;其实在Word中可以设置为自动引用章节标题&#xff0c;以下为设置方法&#xff0c;仅供参考&…

JVM错误:OutOfMemoryError: GC overhead limit exceeded

OutOfMemoryError: GC overhead limit exceeded 在Window服务器上跑一个项目&#xff0c;无意中出现服务访问不了&#xff0c;查看日志文档&#xff0c;第一次遇到了这个异常信息。 1. 错误含义 OutOfMemoryError: GC overhead limit exceeded 是 JVM 中的一种错误&#xff…

jmeter入门:脚本录制

1.设置代理。 网络连接-》代理-》手动设置代理. ip&#xff1a; 127.0.0.1&#xff0c; port&#xff1a;8888 2. add thread group 3. add HTTP(s) test script recorder, target controller chooses Test plan-> thread Group 4. click start. then open the browser …

鸡兔同笼,但是线性代数

灵感来自&#xff1a;bilibili&#xff0c;巨佬&#xff01; 我们有 14 14 14 个头&#xff0c; 32 32 32 只脚&#xff0c;所有鸡和兔都没有变异&#xff0c;头和脚都完整&#xff0c;没有数错。还有什么 Bug 吗 小学奥数 假设全是鸡&#xff0c;则有 14 2 28 14 \time…

【2024保研经验帖】东南大学计算机学院夏令营

前言 背景&#xff1a;末211&#xff0c;专业计算机科学与技术&#xff0c;rk前5%&#xff0c;无科研&#xff0c;只有几个竞赛 东南大学计算机学院夏令营需要老师推荐&#xff0c;一个老师的推荐名额感觉应该挺多的&#xff0c;因为学硕和专硕都进了两百多人&#xff0c;总共…

利用 Python 爬虫采集 1688商品详情

1688是中国的一个大型B2B电子商务平台&#xff0c;主要用于批发和采购各种商品。对于需要从1688上获取商品详情数据、工程数据或店铺数据的用户来说&#xff0c;可以采用以下几种常见的方法&#xff1a; 官方API接口&#xff1a;如果1688提供了官方的API接口&#xff0c;那么可…