在学习过程中,看到《TinML Deployment Workding Group White Paper #1》一文,觉得不错,特将部分翻译出来。文末附上本文的英文链接,敬请参阅。由于本人水平有限,不足之处,还请大家多多指正!
TinML Deployment Workding Group White Paper #1
2023年2月20日
交付TinyML产品需要的不仅仅是“拟合和预测”的开发。
这是系列白皮书的第一篇,探讨在云端的边缘部署超低功耗机器学习所面临挑战和解决方案。作者是 tinyML® Foundation 部署工作组成员。所表达的观点并不一定代表tinyML Foundation、赞助商或作者的雇主。
数字化转型市场正在迅速增长,到2025年将达到一万亿美元市场规模。机器学习也正在迅速获得关注,预计在未来几十年内将增长到数万亿美元的市场规模。这样的市场动态导致了对相应解决方案的巨大需求,需要开发与之相匹配的解决方案。
尽管,在过去十年里,用于机器学习训练的计算机资源每六个月翻一番,但缺少数据是导致机器学习项目失败的主要原因之一。这个问题对于“线下业务”尤为重要,因为在这些业务中,机器学习算法需要智能传感器才能获得真实世界的信息。基本上,除了人类所建设的线下基础设施外,周围的一切都已经数字化了。
公司往往高估数据的有效性,导致项目计划进程中断,这需要更好数据集来支持运作。因此,硬件在软件相关的项目进程中发挥着越来越大的作用,因为机器学习算法和数字化转型软件需要智能传感器才能获得真实世界的信息。这一重要环节的有效性和确保数据真实性的监督者,是提供稳定数据流以提高机器学习效率的关键。
tinyML社区在硬件和软件优化方面取得了显著的技术和商业进展,使得在传感器上评估和训练机器学习模型既快速又节能。甚至有商业上成功的“无代码”解决方案平台,用户无需编写代码即可进行模型开发。
遗憾的是,大多数工具都集中在开发过程而非部署过程,不包括机器学习模型训练和将生成的模型加载到所选目标设备上。缺少对设备部署和管理过程的相关支持,而这是任何准备投产解决方案的重要组成部分。
做个恰当的类比,漂亮的汽车开发好了(构建模型的算法和工具),但却没有适当的高速公路系统(部署)跑汽车。这不是TinyML独有的挑战,物联网设备也面临着同样的挑战。因此,我们打算利用现有的工作来部署物联网,并专注于TinyML独特的要求和功能。
本文的主要目的是就部署的最佳实践展开讨论,并在我们社区内部达成一些共识或找出不同意见。然后,我们希望将讨论延伸到那些对产品开发或应用部署感兴趣的人。为他们提供一个路线图,让他们选择支持,或将知识运用到他们自己的工作中。最后,我们希望与更广泛的机器学习用户和开发者社区交流合作。
部署定义
部署是指服务准备就绪后的所有活动(云端),代码和模型已准备就绪,物理设备已制造完成,但在装运或现场安装前尚未编程或配置。
本文讨论TinyML的部署。必须认识到这些部署可能对社会产生的影响。确保TinyML部署安全、可信和合乎道德。与TinyML部署相关的问题和根据部署所采取的行动包括:公平和包容,可靠和安全,隐私与安全,透明,责任。
物联网部署基础
在讨论TinyML部署的细节前,了解物联网基础知识非常重要,对所有部署都是通用的。在规划物联网部署时,需要考虑各种技术和运营方面的问题。在这里,我们将介绍适用于大多数物联网部署的一些要点,这也与TinyML设备的部署相关。
物联网部署以现场部署的多个设备或设备组为中心,其中可能包括终端消费产品、商业建筑安装或智能工厂集成。设备组中的设备都将直接或通过一个或多个网关连接到云服务后台。设备软件和连接必须与云端配置和安全保持一致,物联网部署才能成功地大规模运行。在典型的云原生基础设施部署中,DevOps团队可以即时启动计算资源或执行动态分配服务的进程,而物联网部署则不同,其中包括数据中心以外的真实设备,它们并不那么短暂。考虑到这一点,我们将在下面讨论物联网部署的各种注意事项。
设备连接
物联网部署中的边缘设备可以通过各种方式连接到云服务。物理(PHY)层的连接方式包括:WiFi、蓝牙、以太网、LoRa、IEEE 802.15.4(Zigbee或Thread),或甚至蜂窝网络。通常,设备连接的选择是取决于无线连接或芯片的成本、网络覆盖范围要求和设备功耗(电池供电还是持续供电)。另外,期望的边缘环境中的网络拓扑结构也是一个重要的考虑因素。设备是通过 WiFi 路由器直接连接到互联网,还是通过应用程序与带蓝牙的移动设备配对,还是通过商用的物联网网关、防火墙企业网络、偏远地区的 LoRaWAN 网络,或还是通过 Zigbee 或 Thread 边界路由器作为网状网络的一部分?所有这些示例展示了各自的独特的网络连接机制。最后,一旦设备连接,就需要考虑一些数据交换协议。典型的物联网标准协议包括:MQTT、HTTP、WebSocket和CoAP。相较于其他协议,这些协议各有优势和细微差别。
设备配置
对于大多数物联网服务而言,连接到服务的设备必须经过该服务的身份认证。同样,设备通常也会对云服务进行身份认证,以确保通信安全。这称为双向认证,mTLS是物联网部署中实现这一目的主要方法。当使用mTLS时,设备和云服务都将出示自己的TLS证书,以便使用公钥和私钥进行验证。此外,云服务通常要求设备通过证书进行唯一标识。随着物联网设备组部署到现场,证书如何一开始就安装到设备上?这就是设备配置需要考虑的重要问题。在不可信一方管理设备之前,设备配置需要向其注入唯一证书和/或加密密钥。这需要使用安全设施和配置过程,以确保设备不会被克隆或欺骗。通常,证书会存放在设备的安全存储器中,设备具有安全元件或安全区,以避免篡改或复制。在部署之前实施这些技术的设备比那些未实施这些技术的设备更能抵御安全攻击和漏洞,因此这些技术被认为是重要的最佳实践。
设备监控
在物联网设备部署时,通常无法对设备进行物理访问。然而,人们通常会对设备组中每个设备的健康状况和总体状态有利益关切。设备连接到云服务后,设备的所有者或运营者希望设备能够无故障运行。设备监控有助于实现平稳运行。物联网设备可通过编程向物联网云服务发送有关其各自状态的遥测数据,以便进行监控。有用数据字段的一些示例包括:电池电量耗尽率、重启事件、意外崩溃、连接问题、温度波动、物理影响或某些代码块执行时间。根据物联网平台不同,可能会有内置的设备监控服务,或者也可能由物联网部署的其他供应商提供。因为从大量设备获取的数据可能太大而无法可视化,因此可以利用查询或特定的事件触发来指示何时出现大规模的设备问题。从设备获取的监控数据可用于改进设备固件的新版本或设备硬件的未来新版本。
设备升级
物联网设备可以从连接到云服务受益的一种方式是接受升级运行的嵌入式应用程序,或接受固件升级来改进其工作。这种物联网设备的升级通常称为OTA(Over-The-Air)或FUOTA(Firmware Update Over-The-Air)升级。通常,这是一个全定制过程,取决于设备硬件的能力和制造商选择的方法。首先,需要生成一个新的固件映像,该映像经过了测试并进行版本控制,部署到设备组中。许多物联网平台都支持OTA升级,作为其设备或设备组管理功能的一部分,管理员可以将新的固件映像上传到物联网平台进行分发。更新过程中不能让设备变成“砖”,否则它将无法连接到云端或接收任何进一步的升级。物联网平台将向设备组发出有更新的信号。根据设备的使用情况,设备可能会开始下载新的固件映像,或者可能需要等待,等到它处于适当的工作状态或用户同意更新。为了提高分发新固件映像的网络效率,一些设备更新过程只会发送新旧固件映像的增量或差分包。一旦设备检索到新映像或增量,通常需要重启引导加载程序指向新固件。为增加安全性,固件映像可以采用数字签名,然后要求设备验证其真实性。最后,一旦新固件升级完成,如果发现问题,可能还需要固件版本回滚。由于新固件遇到问题,设备需要返回到以前的固件版本运行。值得注意的一点是,整个设备组的版本差异可能会带来挑战。如果设备仍然使用v1.0版本的固件,那么是否可以直接跳过v1.1并更新到v1.2版本?如果用户选择不更新怎么办?需要一定程度的预先规划和面向未来的考虑,才能正确地支持设备升级策略。
分析和洞察
除了前面提到的发送到云端监控物联网设备的遥测数据外,从设备中获取的数据,从中可以获得商业洞察,这是企业投资物联网部署的主要原因之一。毕竟,数据存储本身只会增加运维成本,并没有实际好处。要将物联网数据转化为资产,就必须使用数据分析技术来提供商业洞察。例如,一个智能车库门系统可以获得打开和关闭的状态,并将这些数据发送到云端。然而,如果企业想知道整个设备组的客户每天打开和关闭车库门的频率,就需要使用工具来分析原始数据。物联网分析是一个广泛的术语,可能包括数据库查询、计算分析、统计甚至机器学习来量化物联网设备数据的模式。
此外,通过报告或数据可视化(如仪表盘)方式对这些数据进行某种形式的展示,可以提供分析洞察。数据科学家可能会参与开发从数据集中提取有意义洞察的方法。以智能车库门为例,分析后可能会发现,客户频繁地打开和关闭车库门远高于制造商的预期,从而导致电机的使用寿命缩短并增加保修索赔。这样的洞察对企业来说可能是有价值的,可以更好地了解客户对物联网设备的确切行为和使用情况,进而可以用来提供更好的产品和服务。在物联网部署中,有许多技术选项和注意事项可以提供分析和洞察。在这一领域有些专业的服务,采用哪种服务主要取决于业务需求是否合适。
数据存储
如何存储数据是物联网部署的一个重要方面。数据存储有三个主要考虑因素:1) 应存储哪些数据。2) 如何访问这些数据。3) 存储数据相关的成本是多少。当未连接的设备变成物联网设备时,原来仅限于存储在设备上的数据现在可以发送到云端。人们可能想要把设备上任何传感器的所有可用的数据都发送到云端,以便进行分析。然而,在考虑隐私和效率时,还应决定发送哪些数据。由此所产生的数据传输和存储成本可能超过实际需要。本地处理是降低传输和存储成本的一个重要因素。例如,如果一个嵌入式应用每秒钟从温度传感器读取数据,但温度值一小时内都没有变化,那么在这段时间内,将3600个相同的数据发送到云端可能效率并不高。相反,也许只有在温度值发生变化时才应发送数据。
一旦确定需要发送的数据,就有许多方法将数据存储到云端。数据可以非结构化地存储在平面文件中,也可以结构化地存储在数据库中。选择存储机制取决于数据的类型和访问数据的方式。如果需要经常查询数据显示实时的统计数据,那么时间序列数据库可能是正确的选择。然而,如果数据量很大,不经常访问,并且仅用于报告或审计,那么数据湖可能是降低成本的更好选择。
最后,数据的保留策略也是一个重要的考虑因素。数据是需要无限期存储,还是达到目的几天或几个月后就停用?这也取决于数据的类型。设备组控制面(control plane)的数据与设备使用或传感器外设的数据面(data plane)的数据保留政策可能不同。本地隐私和数据治理方面的考虑因素也可能会影响这些存储要求。
基础组件
物联网部署所选择的物联网平台取决于业务需求。物联网部署甚至可能包括不同供应商平台的多种服务,用它们作为基础组件来构建完整的解决方案。一些专业的物联网平台包含可能抽象出上述某些技术细节的功能,更容易管理设备组。还值得注意的是,一些物联网平台可能运行在其他物联网平台之上,利用其服务作为基础组件,为特定用例提供更高阶的功能。例如,一个提供预制可视化仪表盘的物联网平台可能会运行在另一个物联网平台之上,另一个物联网平台实现了 MQTT 代理,可为设备组提供弹性和大规模可扩展性。因此,物联网部署和物联网平台本身可以使用各种基础组件来构建,在资源、成本和功能方面,帮助提高设备组的部署、管理和分析的效率。
TinyML和物联网
我们不妨对 TinyML 和物联网技术进行比较和对比,消除两者之间的共生关系。例如,TinyML从物联网部署基础设施的进步中获益匪浅,而物联网则得益于Tiny ML在设备上执行的能力,减少或消除了对云端和连接的依赖,这对需要始终运行的垂直市场具有吸引力,而无论网络连接如何。在物联网设备无法满足连接、功耗和隐身模式运行要求的地方,TinyML 很受欢迎或有望越来越受欢迎:
• 工作时无需连接互联网
• 低功耗
• 改善延迟
• 电池供电的独立解决方案
• 设备上运行,独立于云计算
• 可用于没有网络连接或供电的偏远地区
• 隐身工作模式
• 增强隐私保护
• 独立设备运行,无需网络安全保障
• 减少带宽消耗
总之,TinyML 和 物联网在部署方面非常相似,而在 MLOps 方面则有显著不同。
下图(图 1)概述了开发端到端 TinyML 解决方案的 Tiny MLOps。步骤 2、7 和 8 受益于物联网基础设施及其安全连接技术的进步。
设备连接
值得一提的是,物联网的按需设备连接是其在过去十年流行的主要原因。对网络连接的要求使其不太适合远程和网络连接较差的行业,如农业、采矿、航运、航天、航空、国防等。TinyML技术在设备上的运行使其不仅在部署后具有吸引力,而且使其成为少数选择的唯一选择,如国防,其中设备的隐身模式工作至关重要。
使用物联网进行TinyML部署
TinyML部署是指整个MLOps部署流水线(pipeline)。TinyML部署具有多个独特因素。
• 云端上的 MLDevOps 流水线(pipeline)
• 设备上的 MLDevOps 流水线(pipeline)
• 机器学习模型的安全性、隐私和数据治理
边缘机器学习通常涉及对物理世界的传感器表示进行推理。这与垃圾邮件检测等其他机器学习应用有很大不同,如垃圾邮件检测,涉及到固定的输入类型(unicode)。物理世界在不断变化和发展。这会导致概念和偏差偏移,从而降低推理结果。为了克服这些问题,小型设备上的机器学习模型通常是MLDevOps流水线(pipeline)的一部分,如上图1所示。
流水线的云端部分如图所示。流水线从新设备加入设备组并广播其功能开始。AutoML 用于生成一个能最佳利用目标设备能力的模型。在TinyML领域,设备组可能是非常异构的,并使用同一基本模型的多个变体(例如,设备可能会将一部分计算卸载到本地加速器)。然后,使用OTA或通过连接的网关将模型部署到目标设备。
物联网部署基础设施可用于将推理结果和原始传感器输出(受能耗和通信限制)回传到云端或服务器。对输入统计和性能指标(如精度)的结果进行监控,以检测数据和概念漂移。检测到漂移或性能下降将触发一系列故障排除步骤和/或重新训练模型,并将其重新部署到设备。有时,如果对应用统计数据有很好的理解,可以在设备上完成检测。例如,在办公大楼里,下班后的人数应该会减少。如果设备数据显示下班后还有很多人,则表明操作不当。
为了实现稳健的TinyML部署,需要实施模型版本管理。稳健的ML devops部署将跟踪以下所有的内容:训练代码版本(如 Tensorflow 2.11)、训练和验证数据集、训练指标、TinyML模型转换工具版本、转换后的模型和执行转换后模型的二进制文件。最好使用JSON或YAML版本文件来存储和访问所有这些值。
与通常具有单一功能的物联网应用不同,设备上的TinyML应用可以被设视为由多个阶段组成的流水线(pipeline),如从传感器获取数据、数据预处理、TinyML模型推理、后处理、商业智能和其他监控。
虽然这个流水线(pipeline)可以作为单个二进制文件部署,但为了优化通信带宽和功耗,我们更倾向于使用多个可单独更新的工件。例如,当TensorFlow Micro用作运行时,模型阵列可以单独更新,而无需更新其余代码(假设仍能满足激活大小和其他限制条件)。
与机器学习模型相关的安全问题有两个方面。机器学习模型是有价值的知识产权(IP),因为它们通常是使用专有(非开源)用户数据训练出来的。因此,模型具有很大的价值。防止黑客从物理可访问的设备中窃取模型是一个棘手的问题。第二个问题与黑客在不被发现的情况下改变模型行为有关。由于传感器的响应可以指导健康、安全响应和决策,因此这是一个严重的问题。物联网部署通常不会遇到这些安全问题。
隐私和数据治理/主权是机器学习训练和部署面临的其他挑战。安全地存储数据(特别是原始传感器数据)并在满足法规要求的情况下传输数据尤其具有挑战性。此外,有关隐私和数据治理新的政府法规,要求跟踪数据及其在云端的使用情况。负责任的人工智能还要求对来自设备的数据(用于模型再训练),进行跟踪、版本控制并与使用这些数据的模型相关联。与此同时,联合学习和设备上学习也正在不断发展中,这可以确保单个设备上私有数据的安全,同时减少连接到云所需的带宽和功率。
结论
本白皮书以物联网部署和MLOps的基本原理为基础,探讨了部署TinyML应用所面临的挑战和解决方案。如上所述,由于存在共性,开发人员在很多领域可以使用现有的物联网解决方案。然而,在许多其他领域,终端应用的TinyML部署需要采取与现有物联网部署解决方案截然不同的方法。因此,开发人员需要了解物联网和TinyML设备、应用和环境之间的主要异同点。
成功的TinyML应用要求开发人员有意识地选择必要购买的组件,或开发“全栈”的每一层,以正确部署他们的产品。依赖“默认”解决方案可能适用于开发测试用例,但可能会阻碍“现场”的大规模部署。
引用链接
[1]
https://www.tinyml.org/static/98111ec2e44e63079e10872b485777a0/tinyML_Deployment_WG_White_Paper_1.pdf