"AIOT其实比想象复杂很多,我希望本文中能够为您提供构建工业级可扩展且强大的 AIoT 应用程序所需的充分架构背景和视角"
云计算、人工智能和互联网连接设备是当代数字社会不可消除的技术支柱。然而,这些技术的融合潜藏着更大的未开发潜力,它可以引领下一代数字化转型和创新。
“ 人工智能和物联网的综合力量统称为物联网人工智能 or AIOT,有望在边缘分析、自动驾驶、个性化健身、远程医疗保健、智能农业等广泛的垂直行业中释放未实现的客户价值,智能零售、预测性维护和工业自动化。”
作为程序猿,构建“HELLO WORLD”应用程序是很简单的——在云上训练模型,将其嵌入设备中,模拟一些传感器数据,执行推理,闪烁几个 LED,就完成了。然而,这种看似简单的问题很容易让你产生错觉,因为设计“真实世界”的 AIoT 解决方案完全是另一回事,复杂性要高出一个数量级,并且需要跨越电气工程和计算机科学多个领域的深厚技术知识。在设计“真实世界”的 AIoT 解决方案时,人们会遇到无数挑战,需要仔细检查各种问题场景、紧急行为、相互冲突的需求和权衡取舍。让我们更详细地讨论架构上重要的那些。
基于人工智能和物联网的解决方案通常包含不同的设计原则、行业标准、开发方法、安全控制和软件/固件交付管道。它们在异构计算平台、操作系统和网络拓扑上运行。它们展示了广泛的计算、存储、带宽和能源利用能力。人工智能与物联网系统在硬件和软件方面的这种差异在结合到 AIoT 解决方案中时会导致显着的紧急操作复杂性。
在边缘设备上嵌入经过训练的模型并运行推理是一个相对简单的解决问题。然而,在真实世界中,部署后,模型经常会变化。这需要趋势监测、重新培训和重新部署。数据质量和及时性对于需要持续的传感器数据收集、处理、验证和培训的变化检测至关重要。更新的 ML 模型需要使用持续交付管道重新部署到 IoT 设备。因此,AIoT 应用程序的生命周期包括 ML 和 IoT 相关的构建、测试、部署工具链和流程。因此,需要考虑 AIoT 解决方案的整个端到端操作,包括软件开发、交付、安全和监控。
学习算法的空间和时间计算复杂度与推理有很大不同。为了说明这一点,我们来看看这张表中的逻辑回归算法复杂度
ML Model | Size | Training | Inference |
---|---|---|---|
Random Forest | O(Ntree m) | O(Ntreemn(log(m))) | O(Ntree(log(m))) |
Logistic Regression | O(n) | O(mn2+n3) | O(n) |
Naive Bayes | O(nc) | O(Mn+nc) | O(nc) |
Support-vector machine | O(n) | O(m2n) | O(msvn) |
注意使用牛顿拉夫森优化的逻辑回归的训练时间复杂度与推理时间。训练复杂度是多项式的,而推理是线性的。例如,资源受限的设备不具备训练逻辑回归模型的计算能力,但可以轻松处理逻辑回归推理。相反,如果仅用于推理,则从成本和计算能力的角度来看,AI 加速设备(例如带有板载 GPU 加速器)可能会过大。这是一个重要的考虑因素,需要在架构上加以考虑。
机器学习任务的计算复杂性很快超过能源、内存、计算和存储容量有限的资源受限设备。大多数 ML 框架对于嵌入式设备来说过于繁琐。用于测量性能的标准硬件无关指标,如 FLOPS 和 MAC 乘法累加 (MAC),缺乏保真度来测量特定边缘 ML 设备的实际性能。针对此类硬件的优化策略会引入影响模型功效的错误。计算密集型推理会使物联网设备饿死,并干扰实时传感和驱动子程序。
从 AIoT 设备收集的数据中获得任何可操作且有意义的见解需要处理分析边缘层上的传感器数据。然而,出于隐私和安全原因,此类数据通常必须保留在设备上。边缘设备缺乏数据中心的物理安全保障。单个受损的边缘节点可以显着扩大安全漏洞的范围。低能量和低带宽的物联网协议特别容易受到此类攻击。因此,应用适当的安全控制对于确保数据安全和隐私至关重要。然而,这会产生一组特别棘手的要求,因为计算密集型安全控制会在本来就资源受限的设备上争夺功率、资源和带宽。
自动驾驶汽车、机器人和工业自动化通常需要即时行动、低延迟“感知、决策和行动”实时循环。即使设备上嵌入了 ML 逻辑,做出决策所需的上下文也需要物联网设备经常与边缘层通信。这使得启用闭环 AI 支持的决策,在真实世界场景中尤其具有挑战性。
为了从整体上应对这些挑战,需要对整个问题空间进行整体观察,并发现一系列跨越人工智能和物联网领域的反复出现的问题。我表达解决方案的方法广泛基于模式语言。各种架构和设计模式可以非常有效地管理在边缘层运行整个 AIoT 解决方案的复杂性。嵌入式 ML 模式还可以帮助解决设备资源限制挑战。通过在更靠近传感器的边缘层上运行整个 ML 管道,可以最大限度地减少或消除对云层的依赖。这可以极大地改善网络延迟并解决安全问题。
通过使用分层架构创建清晰的关注点分离来管理复杂性。将基础架构划分为多个层,以将训练与推理和数据采集活动分开。这允许独立扩展、能源管理和保护每一层。正如您将在后续部分中看到的,将推理与学习活动分开并在单独的层上运行它们允许训练作业在 GPU 或 TPU 等 AI 加速硬件上运行,而推理作业可以在资源受限的硬件上运行。这种分离还最大限度地减少了对电池供电硬件的电力需求,因为能源密集型培训作业现在可以在具有有线 AC/DC 供电设备的专用层上运行。
使用消息和事件流以最小的延迟和最大的并发性实时处理大量和高速的物联网数据。允许事件的连续流动、解释和处理,同时最大限度地减少传感器数据消费者和生产者之间的时间耦合。这种模式促进了异构计算平台上此类服务的松散耦合结构和组织。它还使每个服务能够独立扩展和失败,从而创建清晰的隔离边界。
为训练、推理和编排所涉及的服务之间的通信建立持久可靠的事件流机制。各种命令和数据消息可以作为流持续存在并被排序(在一个分区内)。消费者可以在流发生时或回顾性地处理流。消费者可以随时加入流,异步重播、忽略或处理过去的消息。
建立轻量级和带宽高效的基于发布/订阅的消息传递,以与物联网设备进行通信。此类消息一旦收到就不能重播或重传。新订阅者将无法接收任何过去的消息,并且无法保证消息顺序。通过将发布/订阅消息转换为事件流来桥接两种事件驱动模式,反之亦然。
使用边车模式将嵌入式推理与事件流的通信隔离并解耦。这使推理模块保持精简和便携,具有最小的依赖性,非常适合受限设备部署。
压缩模型可以显着减少推理时间,从而最大限度地减少资源消耗。在参考实现中,我将使用量化来压缩模型。
将权重和激活值二值化为仅两个值 (1, -1) 可以提高性能并降低能量利用率。然而,使用这种策略需要仔细权衡准确性的损失。
使用接近数据采集点的数字信号处理,可以显着提高信噪比并消除无关紧要的数据。在工业物联网场景中,在原始传感器数据上训练模型往往会在噪声而不是信号上训练模型。傅立叶、希尔伯特、小波等变换可以极大地提高训练和推理效率。
在靠近数据采集点的边缘执行闭环、低延迟推理以进行异常检测和干预。在聚合级别使用特定于上下文的推理进行预测分析。在参考实现中,它们分别称为“Level 1”和“Level 2”推理。
将 ML 任务(例如摄取、提取、变化检测、训练等)以及相关依赖项打包为容器化工作负载。使用容器编排来管理工作负载部署。使用容器工作流管道来自动化持续培训、评估和交付。
使用 AI 加速器感知工作负载放置策略,以确保需要 AI 加速的工作负载放置在适当的计算硬件上。
将整个学习管道带到边缘层,消除对云层的依赖。在边缘层运行和管理 ML 任务,例如提取、变化检测、训练、验证和模型压缩。
将 ML 任务的所需状态和流程及其依赖关系表示为有向无环图 (DAG)。使用容器工作流引擎来实现所需的状态和流程。
使用声明式自动化跨各种边缘基础架构层部署、管理和监控容器化工作负载。
在参考架构中形式化 AIoT 模式是分解问题、识别重复出现的场景并应用可重复的最佳实践和模式来解决它们的有效策略。
使用上述模式,该参考架构试图管理在大量异构计算硬件和网络拓扑上开发、部署和监控 AIoT 解决方案所产生的复杂性。它通过提出托管在多层基础架构上的分布式事件驱动架构来实现这一点。
多层架构为解决方案的网络、安全性、可扩展性、持久性和可靠性保证创建了清晰而独特的边界。每个层都可以根据层的工作负载、数据隐私和计算硬件特性的性质独立保护和扩展。
三个基础架构层托管各种组件和服务,具有特定的角色,并明确区分以下关注点:
让我们更详细地检查每一层的特征,并了解分层事件驱动架构如何解决这些问题。
事物层承载感知组件。该层中的传感器和执行器充当物理世界的主要接口。该层中的组件感知物理环境,将信号数字化,处理并将其传输到其余层。事物层由受限边缘设备组成,其架构可满足以下要求和操作限制:
角色和责任
推理层承载认知服务,这些服务分析来自事物层的数据,并生成实时可操作的洞察和警报。该层的架构满足以下要求和操作约束:
平台层承载两类服务 - MLOps 和平台服务。它将与培训相关的活动与平台服务进行逻辑分区,使计算密集型培训作业能够在专用的 AI 加速设备上运行。此层的架构旨在满足以下要求和操作限制:
在本文中,我们探讨了 AIoT 问题的前景、紧急行为和具有重要架构意义的用例。我们看到了如何使用分层事件驱动架构并在参考架构中采用 AIoT 模式,我们可以实现关注点的清晰分离,解决紧急行为并管理随之而来的复杂性。