物聯網中的預測分析:當IoTDA遇上ModelArts

本文分享自華爲雲社區《最佳實踐:華爲雲IoTDA結合ModelArts實現預測分析》,作者:華爲IoT雲服務。

場景說明

在物聯網解決方案中,針對龐大的數據進行自動學習時,需要對海量數據進行標註、訓練,按照傳統的方式進行標註、訓練不僅耗時耗力,而且對資源消耗也是非常龐大的。華爲雲物聯網平臺可以通過規則引擎,將數據轉發到華爲雲其他雲服務,可實現將海量數據通過函數工作流(FunctionGraph)進行處理,再將數據流入AI開發平臺(ModelArts)進行AI分析,並將分析結果統一轉發至HTTP服務器中。

圖1 場景說明

cke_181.png

在本示例中,我們實現以下場景:

設備上報銀行客戶特徵信息,物聯網平臺將數據轉發至FunctionGraph,由FunctionGraph轉發至ModelArts進行AI分析,最終將分析的結果轉發至HTTP服務器中。

整體流程

  1. 創建併發布ModelArts模型。
  2. 創建FunctionGraph函數。
  3. 構建一個HTTP服務器。
  4. 創建MQTT協議產品,並創建設備。
  5. 創建流轉規則,將數據流轉至FunctionGraph。
  6. 查看HTTP服務器是否收到AI分析後的消息。

前提條件

  • 已註冊華爲官方帳號。未註冊可參考註冊華爲賬戶完成註冊。
  • 已完成實名制認證。未完成可在華爲雲上單擊實名認證完成認證,否則會影響後續雲服務的開通。
  • 已開通設備接入服務。未開通則訪問設備接入服務,單擊“免費試用”或單擊“價格計算器”購買並開通該服務。
  • 已開通FunctionGraph服務。未開通則訪問FunctionGraph服務,單擊“立即使用”後開通該服務。
  • 已開通ModelArts服務。未開通則訪問AI開發平臺,單擊“控制檯”後進入該服務。
  • 自建一個HTTP服務器,並提供POST接口用來接收推送的數據(本示例默認已經提供好相應的服務器與接口,不再展示如何搭建HTTP服務器指導)。

配置ModelArts模型

1.下載ModelArts-Lab工程,在\ModelArts-Lab-master\official_examples\Using_ModelArts_to_Create_a_Bank_Marketing_Application\data”目錄下獲取訓練數據文件“train.csv”。該訓練數據主要展示銀行中的一種常見業務:根據客戶特徵(年齡、工作類型、婚姻狀況、文化程度、是否有房貸和是否有個人貸款),預測客戶是否願意辦理定期存款業務。

2.可將訓練數據存放在OBS中,供創建數據集使用。進入OBS控制檯,選則一個桶,然後單擊“上傳對象”。若沒有桶,可以單擊右上角“創建桶”創建一個新的桶。

圖2 上傳訓練數據

cke_182.png

3.登錄華爲雲官方網站,訪問AI開發平臺,單擊“控制檯”,進入ModelArts服務。

4.選擇左側導航欄“自動學習>前往新版>創建項目”,進入創建預測分析界面。

圖3 預測分析

cke_183.png

5.選擇數據集、標籤列(數據中預測結果的列,本示例中爲str7),若沒有數據集,可以單擊“創建數據集”進行創建。

圖4 創建預測分析

cke_184.png

圖5 創建數據集

cke_185.png

6.當執行到服務部署時,選擇資源池、AI應用及版本,單擊“繼續運行”。

圖6 服務部署

cke_186.png

7.等部署完成之後,選擇左側導航欄“部署上線 > 在線服務”,進入在線服務頁面中選擇部署的服務, 單擊“修改”,進入修改服務頁面,打開APP認證進行授權配置,完成後單擊“下一步”並提交。

圖7 授權

cke_187.png

8.單擊“部署上線>在線服務”,點擊進入已部署的服務,選擇“預測”,複製以下數據到預測代碼中後,單擊“預測”後可查看返回結果,結果中的predict爲no則表示用戶不會辦理存款。

{
  "data": 
  {
    "count": 1,
    "req_data": 
	[
      {
        "str1": "34",
        "str2": "blue-collar",
        "str3": "single",
        "str4": "tertiary",
        "str5": "no",
        "str6": "no"
      }
    ]
  }
}

圖8 預測

cke_188.png

9.更多詳細關於Modelarts的說明可以參考ModelArts相關文檔

配置FunctionGraph函數

1.參考數據轉發至FunctionGraph函數工作流進行函數工作流配置。本示例中由於需要使用ModelArts相關配置參數,可按照如下方式,在代碼中添加配置項並訪問ModelArts預測接口,body體結構參考8

//2.獲取ModelArts預測鏈接. 用來拼裝請求URL
String forecastServerAddress = context.getUserData(FORECAST_SERVER_ADDRESS);
log.log("forecastServerAddress: " + forecastServerAddress);
//3.獲取ModelArts中的AK/APP_KEY
String ak = context.getUserData(ACCESS_KEY);
//4.獲取ModelArts中的SK/APP_SECRET
String sk = context.getUserData(ACCESS_SECRET);

Request request = new Request();
request.setUrl(forecastServerAddress);
request.setMethod(HttpMethodName.POST.name());
request.setAppKey(ak);
request.setAppSecrect(sk);
request.addHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString());
request.setBody(body);
Signer signer = new Signer();
signer.sign(request);

Map<String, String> headers = request.getHeaders();
HttpPost httpPost = new HttpPost(url);
headers.forEach(httpPost::setHeader);
httpPost.setEntity(new StringEntity(body, ContentType.APPLICATION_JSON));
CloseableHttpResponse response = null;
try {
    response = httpClient.execute(httpPost);
    if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
        String content = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
        IoTDAModelArtsDemo.log.log("response content is: + " + content);
        return content;
    }
    String errContent = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
    IoTDAModelArtsDemo.log.log("response err content is: + " + errContent);
    return errContent;
} finally {
    if (response != null) {
        response.close();
    }
}

2.在函數工作流中,單擊“設置>環境變量”,環境變量信息如下。

表1 環境變量說明

環境變量

說明

FORECAST_SERVER_ADDRESS

訪問ModelArts服務,單擊“部署上線>在線服務”,進入部署服務後單擊“調用指南”,選擇支持App認證方式的API接口公網地址。

ACCESS_KEY

同上,選擇AppKey。

ACCESS_SECRET

同上,選擇AppSecret。

NA_MOCK_SERVER_ADDRESS

將預測結果推送至服務器的地址(本示例不再提供HTTP服務器搭建指導)。

圖9 設置環境變量

cke_189.png

圖10 查看預測接口信息

cke_190.png

3.單擊“代碼>配置測試事件>創建新的測試事件>空白模板”。內容示例如下:

{
    "resource": "device.message",
    "event": "report",
    "event_time": "20231227T082702Z",
    "event_time_ms": "2023-12-27T08:27:02.944Z",
    "request_id": "1d041aa3-29b8-43d3-aae3-3905de130537",
    "notify_data": {
        "header": {
            "app_id": "dc12bf47e95c4723a00f4a007073fc7e",
            "device_id": "658bdb475d3bc3372c99feb9_12345484121",
            "node_id": "12345484121",
            "product_id": "658bdb475d3bc3372c99feb9",
            "gateway_id": "658bdb475d3bc3372c99feb9_12345484121"
        },
        "body": {
            "topic": "$oc/devices/658bdb475d3bc3372c99feb9_12345484121/sys/messages/up",
            "content": {
                "age": "34",
                "profession": "blue-collar",
                "maritalStatus": "single",
                "educationalStatus": "tertiary",
                "realEstateSituation": "no",
                "loanStatus": "tertiary"
            }
        }
    }
}

圖11 配置測試事件

cke_191.png

4.配置完測試事件後,單擊“測試”,執行結果返回success(以實際函數返回結果爲準),則表示成功。配置的HTTP服務器則能收到對應的預測結果。

圖12 預測結果

cke_192.png

創建產品和設備

1.訪問設備接入服務,單擊“管理控制檯”進入設備接入控制檯。

2.選擇左側導航欄的“產品”,單擊“創建產品”,創建一個基於MQTT協議的產品,填寫參數後,單擊“確定”。

圖13 創建產品-MQTT

cke_193.png

3.導入產品模型,請參考導入產品模型

在該產品下注冊設備,請參考註冊單個設備

說明:本文中使用的產品模型和設備僅爲示例,您可以使用自己的產品模型和設備進行操作。

數據轉發規則配置

1.選擇左側導航欄的“規則>數據轉發”,單擊“創建規則”。

2.參考下表參數說明,填寫規則內容。以下參數取值僅爲示例,您可參考用戶指南創建自己的規則,填寫完成後單擊“創建規則”。

圖14 新建消息上報流轉規則-數據轉發至FunctionGraph

cke_194.png

表2 參數說明

參數名

參數說明

規則名稱

自定義,如iotda-functiongraph。

規則描述

自定義,如數據轉發至FunctionGraph服務。

數據來源

選擇“設備消息”。

觸發事件

自動匹配“設備消息上報”。

資源空間

和上一步創建的產品所在的資源空間保持一致。

數據過濾語句

通過編寫SQL來解析和處理上報的JSON數據。

3.單擊“設置轉發目標”頁籤,單擊“添加”,設置轉發目標。

圖15 新建轉發目標-轉發至FunctionGraph

cke_195.png

參考下表參數說明,填寫轉發目標。填寫完成後單擊“確定”。

表3 參數說明

參數名

參數說明

轉發目標

選擇“函數工作流(FunctionGraph)”

區域

選擇“函數工作流”區域。

目標函數

選擇已配置的函數工作流。

4.單擊“啓動”,激活配置好的數據轉發規則。

圖16 啓動規則-消息上報-轉發至FunctionGraph

cke_196.png

模擬數據上報及結果驗證

1.使用MQTT模擬器連接到平臺(模擬器使用請參考:使用MQTT.fx調測)。

2.使用模擬器進行消息上報,詳情請參考:設備消息上報

上報內容如下:

{
    "age": "34",
    "profession": "blue-collar",
    "maritalStatus": "single",
    "educationalStatus": "tertiary",
    "realEstateSituation": "no",
    "loanStatus": "tertiary"
}

3.查看HTTP服務器是否收到預測結果。

圖17 查看消息

cke_197.png

點擊關注,第一時間瞭解華爲雲新鮮技術~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章