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


     

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

     

    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个容器在运行:

    也可以查看正在发送的数据:

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

     

    配置IOT Hub的连接字符串,连接串可以通过登陆Azure的portal,点击共享访问策略得到,连接成功后,,单击右键,选择"Start monitoring D2C messages",可以看到当前IOT Edge设备只是收集和直接发送数据,并无任何处理:

     

     

    部署IOT Edge机器学习模块

     

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

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

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

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

      克隆该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

    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带到任何地方设置了清晰的技术路线。

  • 相关阅读:
    匿名对象
    封装性
    1 Django初探
    8 定制10MINs 3
    7 定制10MINs首页2
    5-1 练习css 总结
    6.定制10MINS首页1
    3-1 练习 HTML 总结
    5. css定位 居中
    4 CSS的20/80个知识点
  • 原文地址:https://www.cnblogs.com/cloudapps/p/8671821.html
Copyright © 2020-2023  润新知