将人工智能带到物联网边界设备(1)

我们已经将越来越多的设备连接起来,采集海量的数据,利用云端海量的计算能力和处理能力,进行设备的远程监控,预测分析,远程控制等功能,而机器学习,人工智能技术也越来越多的被用到物联网的解决方案中,让我们的设备便的更加智能。在传统的物联网解决方案中,设备端只是作为数据的源和命令执行端,并不具备逻辑处理能力,但在很多场景下,我们希望实时的响应能力,设备变得越来越智能,比如:

  • 工厂连接的设备,需要针对紧急状况具备毫秒级的本地处理能力
  • 在车联网方案中,即使汽车驶入车库无法联网,车机也可以工作
  • 野外无人值守的石油设备,由于昂贵的通讯费用(卫星线路 )可以根据当前的油压,深度等参数使用本地机器学习模型自动深度调节设备运行,只有需要时才发送数据或报警到云端
  • 智能家居/智能监控场景中的摄像头/麦克需要接近实时处理图像,声音,文字等
  • …….

从这个需求上来讲,我们除了需要物联网场景中云端的大规模计算和接入能力外,也需要设备端具备一定的逻辑处理和智能,Azure的IOT Edge为设备赋能,让你把人工智能,逻辑处理能力从云端带到边界设备上,让设备具备智能,云端的IOT和设备端互相协作:

在下面的例子中,我将介绍如何将你的机器学习模型部署到IOT边界设备,实现设备端的逻辑处理和人工智能,基本的部署模型如下:

一些基本的组件和服务介绍如下:

IOT Hub服务:部署在Azure端的物联网服务,支持百万量级设备连接,进行IOT edge设备管理和双向连接控制,通过module twins和设备twins同步云端和设备端状态

IOT Edge模块:IOT edge上的模块实际上是Docker容器,也就意味着只要是可以容器化的服务,模型,代码,都可以部署到边界设备(无限想象力吧),另外一个层面也说明,只要可以支持Docker的ARM/X86嵌入式设备,都可以作为IOT Edge设备

IOT Edge 运行时:IOT Edge设备上的运行的管理程序,管理部署在设备山过的模块,并负责安全通讯等工作。

目前IOT Edge在本例中,测试使用的是Azure public账号,并使用Mac OS作为模拟IOT Edge设备,但因为IOT Edge的运行时和模块都是容器,其实在实际的设备和Linux,Windows上并没有太大区别。例子介绍主要分为3个部分:

  • 配置IOT Hub云端服务
  • 部署IOT edge数据处理模块
  • 部署IOT Edge机器学习模块

前提条件(本文略过Azure CLI和Docker的基础介绍,如有兴趣,可以参考笔者之前文章):

 

配置IOT Hub云端服务

 

  1. 首先需要创建一个测试的资源组:

az group create --name myaksdemo --location eastus

 

  1. 创建IOT Hub云端服务

az iot hub create --resource-group myaksdemo --name myiotsteven --sku F1

  1. 登录到Azure管理界面,打开IOT Hub的管理界面,IOT Edge是一个独立类型的设备,所以在左侧的设备管理选择IOT Edge,注册新的IOT Edge设备:

 

添加新的设备并选择启用:

 

  1. 完成后,点击设备获得连接字符串以及相关秘钥:

部署IOT edge数据处理模块

 

在IOT Hub端注册完设备后,我们就需要配置边缘设备上的运行时了,IOT Edge的运行时由两个模块组成,IOT Edge边界代理主要负责保证模块部署以及监控;而IOT Edge中心主要负责安全和通讯。

所以当你部署的时候,你的IOT Edge边界上的代理会先启动,而IOT Edge Hub中心会在你部署一个模块之后启动,首先来安装IOT Edge控制脚本

 

配置IOT Edge边界设备的运行时:

sudo iotedgectl setup --connection-string "{device connection string}" --auto-cert-gen-force-no-passwords

 

然后我们就可以启动边界运行时,可以看到,他是以docker的一个容器的方式在运行,在这个时候,我们还没有部署任何模块:

 

下一部分继续介绍。

 

 

posted on 2018-03-29 19:14  StevenLian  阅读(846)  评论(0编辑  收藏  举报

导航