在物联网设备,边缘和云上分配机器学习算法

在设计新的物联网系统时,须要进行许多权衡,以肯定在系统的不一样组件(设备,边缘和云)之间分配机器学习算法的最佳方法。电池寿命,物理尺寸,成本,实时链接需求,隐私问题以及调试/故障排除需求只是系统架构师在设计系统时须要考虑的一些问题。前端

典型的物联网架构

典型的物联网系统架构包括部署在物理空间中而且一般包括一个或多个传感器的设备(或节点); 在通讯协议之间桥接而且位于相对靠近设备的集线器(或网关或边缘); 存储和处理数据的集中式云环境,以及用户能够与之交互,探索数据和获取通知的前端设备。显然,有些设备直接与云环境通讯,设备充当前端设备的场景,但从逻辑上讲,这种架构描述了设置中的常见角色。git

典型的物联网系统架构

机器学习和信号处理算法

传感器会生成大量数据。以16Khz采样的高质量麦克风将产生256Kbps,若是以30帧/秒采样,则640x480灰度相机可产生大约100Mbps。要实时计算设备的位置和方向,咱们须要每秒对加速度计进行100次采样。算法

典型的物联网系统可能包括数百甚至数千个设备,每一个设备都有多个传感器,所以物联网和大数据是两个常常被一块儿说起的流行语并不奇怪。安全

为了从这个庞大的数据流中得到对用户的相关看法,咱们一般须要使用机器学习和信号处理算法来处理数据。大多数时候,这些算法须要大量的计算资源,例如CPU,GPU和内存,它们既耗电又昂贵。能够将计算资源放置在系统的每一个组件上:设备,集线器和云,而后能够处理经过或存储在那里的数据。所以,系统架构师决定如何在这些组件之间拆分/分配处理,以及如何根据权衡标准优化“成本”功能。网络

在物联网设备,边缘和云上分配机器学习算法

设计注意事项

如下是影响有关如何跨设备,边缘和云分布机器学习算法的决策的常见示例。架构

  1. 物联网设备电池寿命:源自电池容量,不一样功耗模式(活动,待机,关闭)之间的占空比以及传感器,CPU和通讯接口的标称功耗。将原始数据发送到云将增长通讯接口的功耗,在本地处理数据将增长本地CPU的功耗。
  2. 物联网设备成本:源自传感器,电池,CPU,通讯接口和机械部件的成本。
  3. 物联网设备尺寸和重量
  4. TCO(总拥有成本):设备成本,云成本,网络成本,托管成本,安装成本,支持成本等。
  5. 实时需求:某些系统须要实时或近实时响应,而且不能容忍1-2秒延迟,这一般与将数据发送到云并等待响应有关。例如,门铃在两秒钟后没法振铃,这不是咱们指望的用户体验。
  6. 加载通讯渠道:实时向云端发送千兆位数据能够阻止全部其余流量,有时甚至是不可能的。
  7. 对通讯链路服务质量的敏感性:算法的某些部分不能容忍通讯链路中断。例如,即便没有到互联网的连接,警报系统也必须执行。
  8. 算法需求:有时算法只须要访问全部传感器的全部原始数据以达到最佳性能。这种状况的一个很好的例子是从多个视点对物体进行3D重建,其中来自多个(有时数百个)相机的实时馈送用于重建3D场景。
  9. 为多种平台和多种语言开发数据科学家一般使用Python,R或Matlab开发他们的算法并使用浮点计算。在分发机器学习算法时,极可能每一个环境都有不一样的操做系统,不一样的工具链和不一样的软件语言(Python,Scala,Javascript,C,C ++,定点......)。拆分算法并将其从一个环境迁移到另外一个环境是一个资源密集型过程,也是一个痛苦的过程,一般会影响算法的性能并引入错误和错误。
  10. 调试/故障排除需求:机器学习算法永远不会是静态的。数据科学家将不断面临边缘状况和新算法,他们的算法失败或须要改进其性能。为了研究问题并提升准确性,数据科学家须要尽量多地访问数据,有时甚至须要访问原始数据。若是系统仅在设备级处理原始数据,而且原始数据不易被他们访问,那么他们将不得不作不少猜想来理解实际发生的事情。
  11. 灵活性,灵活性和扩展性:一旦咱们决定了IoT设备的CPU和内存的大小并销售/部署它们,它们就是固定的,没法轻松扩展(咱们老是能够替换物联网设备并升级其计算资源,但相关的成本和复杂性是巨大的)。另外一方面,云资源以及某种程度上的边缘资源更加灵活。在云环境中,性能和内存能够在几分之一秒内上下缩放,这使数据科学家能够轻松地改进和升级那里的机器学习算法。
  12. 隐私,道德和安全问题:在某些状况下,传感器可能会收集咱们但愿限制访问的隐私数据或商业敏感数据。想象一下,基于摄像头的占用传感器放置在会议室中,在会议室中呈现敏感材料。从理论上讲,咱们能够将视频源发送到云端并在那里处理数据,但这会使系统面临安全风险并可能引起道德问题。Alexa在本地检测到“Alexa”这个词,并无将咱们全部的对话都发送到云端。只有在检测到单词Alexa时,才会将如下请求流式传输到云端。若是企业须要处理大量敏感数据,那么边缘多是云和设备之间的中间位置,由于它位于企业内部而且还带来了云的一些好处。
亚马逊Alexa

Alexa的例子

咱们已经提到了为何亚马逊决定在设备上本地检测“Alexa”这个词而不是云端的缘由。例如,他们能够分析设备上的全部语音,或者在云中运行全部语音和NLP处理。决定以这种方式拆分算法还有一些好处:机器学习

成本:经过完善和优化设备算法以准确检测一个单词,亚马逊成功地大幅下降了设备成本。另外一方面,若是他们决定检测设备自己的全部可能的短语,他们将须要更强大和更昂贵的CPU。工具

TCO:经过在多个Alexa设备之间共享云计算资源,亚马逊设法下降整个解决方案的TCO。从统计上来讲,假设每一个设备天天只生成几分钟的录音,一个云NLP处理器能够处理数百个Alexa设备。性能

性能改进,支持更多技能并避免设备固件升级:每次用户向Alexa发出请求时,亚马逊都会将原始语音数据发送到他们的云(AWS),在那里进行处理,而后将其存储数月,多是永久性的(I我在这里作一个假设...)。当亚马逊的数据科学家添加更多技能或更新他们的NLP算法时,他们拥有运行新软件对历史数据所需的一切,并自动验证他们没有下降性能(使用某种CI / CD管道)。所以,咱们每隔两周就会看到Alexa中集成了新技能,这让他们本身很容易测试和部署软件更新,并设法避免将数百万台设备的远程固件升级复杂化,这并不奇怪。学习

设计师必须作出的权衡是:

  • 实时:咱们必须等待1-2秒才能听到回复。
  • 对通讯中断的敏感性:没有互联网链接,Alexa就没用了。

摘要

在如下状况下,支持在设备上或边缘运行机器学习算法:

  • 实时(或延迟)很重要
  • 系统没法容忍链接问题。
  • 数据隐私和安全性是一个问题。
  • 因为带宽或功率限制,您但愿减小设备与云之间的流量。

在如下状况下支持在云上运行机器学习算法:

  • 全部其余状况......

结论

虽然有时咱们的网络和云基础架构能够扩展并承受几乎任何负载,但实际上,因为许多缘由,咱们没法将全部原始数据发送到云并在那里处理。根据个人经验,每一个用例都有不一样的挑战,须要仔细分析(这是乐趣的一部分)。我见过系统设计人员在选择无线协议或选择物联网设备的CPU时作出过快关键决策的状况。几个月后,当他们制造数百台设备并投入建设他们的知识和技能时,他们意识到他们没法向云发送足够的数据,没法远程升级他们的算法或达到预期的性能。

另外一个重要且相关的教训是,若是您的物联网设备上有强大的CPU,并不老是意味着您必须使用它。尽管使用它颇有吸引力,但远程配置管理和相关功耗的额外开销也会有其代价。

关于如何在整个系统中分发机器学习算法,没有一个公式或启发式方法。咱们老是会有相互矛盾的约束,咱们须要作出权衡,软件工程很快就会变得容易,相反,它会变得更加困难。

英文原文:medium.com/digital-cat…

更多文章欢迎访问 http://www.apexyun.com/

联系邮箱:public@space-explore.com

(未经赞成,请勿转载)

相关文章
相关标签/搜索