將人工智能帶到物聯網邊界設備(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帶到任何地方設置了清晰的技術路線。

相關文章
相關標籤/搜索