小米Vela:端侧AI推理框架

news/2024/9/16 21:36:39/ 标签: 人工智能, 物联网, 机器学习, 深度学习

      小米Vela是小米公司基于开源实时操作系统NuttX打造的物联网嵌入式软件平台。该平台旨在为各种物联网硬件提供统一的软件服务,支持丰富的组件和易用的框架,以打通碎片化的物联网应用场景。2024年8月在“开源中国开源世界”大会,小米对外公开超过1000万行的Xiaomi Vela开源代码。

1 下一代应用框架架构图

2  Vela 端侧 AI 推理框架

小米Vela系统能够支持轻量化的端侧AI大模型,这意味着即使在资源受限的设备上也能运行复杂的AI模型。这主要得益于其对多种硬件规格的适配能力,包括最小系统仅需8KB内存,并且CPU主频不限,适配任意SoC多核架构

通过与高通和联发科的合作,小米正在将端侧AI底层能力整合进SoC芯片中,以提升端侧AI大模型的推理效率和性能

Vela 端侧 AI 推理框架可支撑在低算力设备上执行 AI 任务。利用统一框架优势,实现一次优化,可提升多个 Vela AI 业务(面向低算力设备,不包含大模型)。主要的框架技术包括:

2.1 模型转换器(Model Converter)

模型转换器能够将训练好的 AI 模型转换为适合在 Vela 系统上运行的格式。涉及到将模型权重量化、剪枝或压缩,以满足嵌入式设备的资源限制。

2.2 推理引擎(Inference Engine)

  • 推理引擎能够在嵌入式系统上加载转换后的模型,并执行实时 AI 推理任务。
  • 采用优化技术比如 tiling、内存重用等技术以提高推理速度、内存效率和能效,适应嵌入式环境的资源限制。
  • 支持多种 AI 任务,如健康检测、语音识别或自然语言处理,提供统一的 AI 模型部署开发 API 和方案,简化 AI 业务开发流程。
  • 考虑硬件加速,如 NPU、DSP 或专用 AI 芯片等,设计多后端联合优化方案,充分发挥硬件性能,进一步提速 AI 推理任务。

2.3 性能检测工具(Benchmark Tool)

Benchmark Tool 提供模型分析、设备上内存占用、模型端到端推理时延检测、算子时延检测等,增强框架的鲁棒性。

2.4 部署和集成(Deployment and Integration)

  • 统一的部署开发流程,框架对外提供统一的模型部署 API,开发者只需按照固定流程开发对应的 AI 业务,调用统一的 API 完成模型加载、算子注册、定义输入输出缓冲区、执行推理即可。
  • 封装底层异构硬件及优化技术,开发人员只需关心推理及性能结果,使用统一的部署流程即可完成不同设备上 AI 业务的开发。
  • 文档和工具,以便开发人员能够轻松部署和集成嵌入式 AI 推理引擎到他们的应用程序或设备中

3 关键技术

      框架主要分为四部分:Converter 模块,Runtime 推理引擎,Benchmark Tool, Operators Library 扩展接口。

3.1 Converter 模块

     转换其他框架模型为本框架可执行格式,并且对转换后的模型文件进行图优化,在保证模型精度的前提下,缩减模型尺寸,提升模型推理效率。

3.2 Runtime 推理引擎

     主要包含引擎的适配及优化,开发编译优化功能,实现针对异构硬件的访存特性,生成针对性算子;使用 delegate 接口,扩展框架 NPU、DSP 后端,实现多后端推理。采用多个正交优化技术,联合优化框架的性能。

3.3 Benchmark Tool

  • Benchmark Tool for Converter:Converter 中的 Benchmark Tool 用来检测模型转换前后的误差、推理时延等,以此评价 Converter 的转换效果。
  •  Benchmark Tool for Runtime:Runtime 中的 Tool 通过检测 e2e Latency、opLatency、Accuracy 等信息,提供给框架使用和开发者来检测框架的推理性能、自定义算子或者计算库的误差等等。通过检测 e2e Latency、op Latency、Accuracy 等,提供给框架使用和其他开发者来检测框架推理性能、自定义算子或者计算库的误差等等。

3.4 Operators Library 扩展接口

      对外提供算子扩展接口,其他厂商可通过定义的规范向框架中添加自定义算子,并提供 test case 做准入测试,用于测试自定义算子的规范性。

4 优势与挑战

4.1 优势

  • 轻量化设计:Vela 系统适配多种不同硬件规格的产品,最小系统仅需 8KB 内存,这使得它能够在资源受限的设备上运行,如低端智能手机、智能家居设备等,从而实现广泛的应用场景覆盖。
  • 高性能异构推理加速:Vela 支持轻量化端侧 AI 大模型,以及轻量容器方案,通过三重隔离解决 MCU 的安全问题,这有助于提升端侧 AI 应用的性能和安全性。
  • 跨端应用框架:Vela 支持跨端快应用框架,允许一次开发多设备运行,这为开发者提供了便利,能够快速将应用部署到不同的端侧设备上。
  • 提升用户体验:端侧 AI 能够提供低延迟的交互体验,如实时语音识别和图像处理,这对于提升用户满意度和应用的响应速度至关重要。

4.2 挑战

  • 算力和资源限制:端侧设备具有有限的计算能力和内存,这限制了可以在其上运行的 AI 模型的复杂性和大小。Vela 需要在保持应用性能的同时,优化模型以适应这些限制。
  • 模型优化和适配:为了在端侧设备上高效运行,需要对 AI 模型进行特定的优化和适配,如量化、剪枝等,这增加了开发和维护的复杂性。
  • 硬件支持和兼容性:不同的端侧设备可能具有不同的硬件架构和性能,Vela 需要确保在各种硬件平台上都能提供一致的性能和体验。
  • 能耗和散热问题:端侧设备对能耗和散热有严格要求,尤其是在移动设备上。Vela 需要在保证性能的同时,控制好能耗和散热,以延长设备的使用寿命。
  • 安全和隐私保护:端侧 AI 处理用户数据时需要确保数据的安全和隐私,Vela 需要提供足够的安全措施来保护用户数据不被未授权访问。
  • 产品同质化和杀手级应用缺乏:端侧 AI 市场面临着产品同质化的问题,以及缺乏能够大规模吸引用户的杀手级应用,这可能会影响用户对端侧 AI 技术的接受度和应用的普及。

http://www.ppmy.cn/news/1522504.html

相关文章

python 解析数据后保存到excel

openpyxl 特点: 支持读写Excel 2010 xlsx/xlsm/xltx/xltm文件格式。可以操作Excel的几乎所有功能,如样式、图表、图片等。适用于复杂的Excel操作,例如公式、数据验证和条件格式。社区支持较好,文档比较完善。 优点: 功…

MyBatis入门 – 动态SQL

MyBatis入门 – 动态SQL 1.动态SQL介绍 1.1 什么是动态SQL 在原先的JDBC中,开发者需要根据业务的不同要求手动拼接SQL语句,不仅增加开发的复杂度,同时也降低开发效率。而动态SQL则能够根据不同业务场景动态构建查询。动态SQL一般是根据用户…

Java网络编程入门

在现代软件开发中,网络编程是一项不可或缺的技能。Java提供了强大的网络编程支持,使得开发者能够轻松地创建网络应用程序。今天将介绍Java中的网络编程基础,重点讲解Socket和ServerSocket类的使用。 什么是Socket? Socket是网络通…

android系统源码12 修改默认桌面壁纸--SRO方式

1、aosp12修改默认桌面壁纸 代码路径 :frameworks\base\core\res\res\drawable-nodpi 替换成自己的图片即可,不过需要覆盖所有目录下的图片。 由于是静态修改,则需要make一下,重新编译。 2、方法二Overlay方式 由于上述方法有…

[动态规划] 删除并获得点数

给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] 1 的元素。 开始你拥有 0 个点数。返回你能通过这些操…

vue3缺陷

Vue 3 的一些缺陷包括: 1. 兼容性问题:由于 Vue 3 使用了新的响应式系统,与 Vue 2 的代码不兼容。这意味着在迁移现有项目时需要进行一些改动。 2. 学习曲线:Vue 3 引入了一些新的概念和 API,相对于 Vue 2 有一定的学习…

如何利用AI优化知识中台的用户体验

引言 在数字化时代,知识中台作为企业知识管理与服务的重要载体,其用户体验的优劣直接关乎到信息的有效传递、员工的学习效率及企业的整体创新能力。随着人工智能(AI)技术的飞速发展,将AI融入知识中台的设计与优化中&a…

Linux系统高效进程控制的实战技巧

Linux系统高效进程控制的实战技巧 Linux是一种开源的Unix-like操作系统内核,由林纳斯托瓦兹(Linus Torvalds)于1991年首次发布。Linux以其稳定性、安全性和灵活性而著称,广泛应用于服务器、桌面、嵌入式系统等多个领域。在Linux系…

使用Docker快速安装和运行Elasticsearch

Elasticsearch 是一个基于 Lucene 构建的开源搜索引擎,它提供了分布式、多租户能力的全文搜索引擎,具有 HTTP web 接口和无模式的 JSON 文档。在本文中,我们将介绍如何使用 Docker 快速安装和运行 Elasticsearch。 为什么使用 Docker 安装 E…

redis中使用lua脚本

1、现实问题 1.redis采用单线程架构,可以保证单个命令的原子性,但是无法保证一组命令在高并发场景下的原子性。例如: 在串行场景下:A和B的值肯定都是3在并发场景下:A和B的值可能在0-6之间。 2.极限情况下1&#xff1…

Qt Widget核心属性

文章目录 前言enabledgeometrywindowTitlewindowIconwindowOpacitycursorfonttoolTipfocusPolicystyleSheet 前言 Qt中的各种控件,都是继承自QWidget类,了解这个类的属性方法之后,后续的控件也通用 enabled enabled描述了一个控件是否处于…

文件包含PHP伪协议利用方法

1.file://协议 使⽤: file:// ⽂件的绝对路径和⽂件名 2.php?cmdfile://D:\phpstudy_pro\WWW\123.txt 2.php://filter协议 ⽤途:常⽤于读取⽂件 / 源码 2.php?cmdphp://filter/readconvert.base64-encode/resource1.php 3.php://input协议 步骤一&…

【C++拓展(一)】后端开发常用的技术栈

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 C拓展 1. 前言2. 语言层面3. 设计模式层面4. 开…

「Qt Widget中文示例指南」如何实现一个系统托盘图标?(一)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 System Tray Icon&a…

基础学习之——Apache Spark

Apache Spark是一种开源的大数据处理框架,它提供了快速、通用和可扩展的大数据分析和处理功能。Spark可以在大规模数据集上进行高速计算,并且可以与多种数据源和工具进行集成。 Spark的基本概念包括: 弹性分布式数据集(Resilient…

【LeetCode 121】买卖股票的最佳时机

1. 题目 2. 分析 如果当前的价格比之前买入的价格要低,那么我们就“逢低买入”,更新买入的价格,因为在此后的每一天里,当前的价格与之前的买入价格相比是更优解。 如果读者对单调队列有接触,可以看到这一步的核心思想…

iOS P8证书推送测试

最近在配合服务端人员调试相关的 APNS auth key 推送的问题,相比于苹果的P12证书的推送,P8证书的推送显得方便很多,P8的优势在于简单,安全 容易生成 最重要的是不会过期。 现在我们来看下测试具体流程: 方法一 地址…

掌握Hive函数[1]:从基础到高级应用

目录 函数简介 单行函数 算术运算函数 数值函数 字符串函数 日期函数 流程控制函数 集合函数 案例演示 函数简介 Hive将常用的逻辑封装成函数供用户使用,类似于Java中的函数。这样做的好处是可以避免用户反复编写相同的逻辑代码,可以直接调用这些函数。…

2024 RustChinaConf 赞助商介绍

2024 RustChinaConf 得到了行业各界的广泛支持,在此向以下赞助商表示感谢! 非凸科技 非凸科技是一家全栈使用Rust的金融科技公司,致力于为券商、私募、公募等金融机构及个人投资者提供一站式数智交易领域服务解决方案。作为本次大会的钻石赞助…

jmeter之ForEach控制器使用

ForEach控制器作用: 一般和用户自定义变量或者正则表达式提取器配合使用,读取返回结果中一系列相关的变量值,该控制器下的取样器都会被执行一次或多次,每次读取不同的变量值(类似python当中的for语句,用来遍历操作) 本节代码已上…