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

 

IOT Edge最大的一个优点和特性就是能够把用户的业务逻辑,预处理,机器学习,人工智能等模块部署在边界设备上,部署的方式就是容器方式,在IOT edge上被称为一个模块。 python

 

  1. 登陆到Azure的portal上,选择以前注册的IOT Edge设备,选择Set Module

  1. 选择" Add IOT Edge Module",输入相应参数,这里咱们使用一个demo的模块温度传感器的模块来作测试, URI是microsoft/azureiotedge-simulated-temperature-sensor:1.0-preview

  1. 选择下一步能够选择消息在不一样的模块之间通信,暂时不用修改,选择下一步便可:

 

  1. 从新看一下最终部署的模块,并选择提交,在设备详细信息主界面,你能够看到有3个模块在设备上运行,EdgeAgent,EdgeHUb和咱们刚才配置的tempSensor:

在咱们的模拟终端设备上使用docker ps查看,也能够看到有3个容器在运行: git

也能够查看正在发送的数据: github

  1. 打开你本地的Visual Studio Code,安装Azure IOT Toolkit插件:

 

配置IOT Hub的链接字符串,链接串能够经过登录Azure的portal,点击共享访问策略获得,链接成功后,,单击右键,选择"Start monitoring D2C messages",能够看到当前IOT Edge设备只是收集和直接发送数据,并没有任何处理: docker

 

 

部署IOT Edge机器学习模块

 

Azure新一代机器学习服务,提供了一个强大的端到端的全生命周期的机器学习系统,从数据的处理,模型的训练,模型的管理,模型的发布都提供了完善的支持。经过Azure ML训练的模型,不管是机器学习模型,图像识别,语音识别等等,同样能够快速的发布在IOT Edge,经过这样的方式,真正将人工智能带到边界设备。 json

接下来咱们介绍如何将机器学习模型部署到模拟的边界设备上,针对当前设备状况作最基本的诊断: 机器学习

  1. Azure提供了比较丰富的将Azure ML部署到IOT Edge的例子,在这里咱们选择异常检测的机器学习模型,更多的模型能够参考:

    https://github.com/Azure/ai-toolkit-iot-edge ide

    克隆该repo,而且进入目录IoT Edge anomaly detection tutorial目录,该目录下有两个文件,iot_score.py用来接受输入的参数,model.pkl是机器学习模型用来对异常进行检测。 学习

     

  2. 请注意,Azure ML CLI和Azure CLI目前是分开的,须要单独安装,不然会报az ml没法找到的命令:

pip install -r https://aka.ms/az-ml-o16n-cli-requirements-file 测试

  1. 首先建立一个机器学习实验帐号

az ml account experimentation create -n mymldemo -g myaksdemo -l eastus2 ui

  1. 注册相应的provider并设置本地执行环境::

az provider register -n Microsoft.MachineLearningCompute

az provider register -n Microsoft.ContainerRegistry

az provider register -n Microsoft.ContainerService

 

az ml env setup -l eastus2 -n mymlenv -g myaksdemo

 

az ml env set -n mymlenv -g myaksdemo

 

  1.  建立模型管理帐户

     

    az ml account modelmanagement create -l eastus2 -n mymldemo -g myaksdemo --sku-instances 1 --sku-name S1

  2. 建立机器学习模型并提交到容器注册表:

    az ml service create realtime --model-file model.pkl -f iot_score.py -n machinelearningmodule -r python

     

  3. 得到容器注册表的相关信息:

    az acr list -o table

    az acr credential show --name mlcrpacreb1907133456

     

  4. 将容器注册表添加到边缘设备,以便于注册表中的容器能够部署到边界:

    iotedgectl login --address mlcrpacreb1907133456.azurecr.io --username mlcrpacreb1907133456 --password jtTVyKwDQ=blPFuwDEBbkWXVyZFwvOqi

     

  5. 添加machine learning模块,保存后,选择下一步:

     

  6. 那么不一样的两个边界设备模型之间如何通信呢?这个时候就用到了设备设置的路有模块,在路由界面中,拷贝以下json片断:

    {

    "routes": {

    "sensorToMachineLearning":"FROM /messages/modules/tempSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/abnormalmlmodule/inputs/amlInput\")",

    "machineLearningToIoTHub": "FROM /messages/modules/abnormalmlmodule/outputs/amlOutput INTO $upstream"

    }

    }

第一句路由是将以前传感器处理的数据收集,但数据的处理对象是机器学习,第二句是数据通过机器学习模块处理以后,而后再发送回IOT Hub,其实智能的处理已经发生在边界,数据传回以前。添加完成后,点击提交,须要一点时间容器被部署到边界,状态变成running:

 

  1. 使用VSCode的IOT插件进行监控,从实际的处理结果咱们也能够看到,机器学习模型接收基基本的输入数据,经过模型来判断数据是否为异常,设置异常标识(注意接收消息里面的anomaly项),将最终的结果返回给云端IOT Hub:

 

从这个例子咱们能够看到,微软的IOT Edge结合了Azure新一代的机器学习服务,固然你能够写本身的逻辑和代码,将机器学习模型经过容器的image发布,而后经过设备管理发送到边界,在物联网的边界设备上实现了人工智能服务,这种技术能够普遍的运用于多种不一样的场景,例如车联网,石油勘探,面部检测,终端图像识别等等,为将AI带到任何地方设置了清晰的技术路线。

相关文章
相关标签/搜索