串流分析中的 Machine Learning 工作室 (傳統) 整合
重要
對於 Azure Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您就無法建立新的 Machine Learning 工作室 (傳統) 資源 (工作區與 Web 服務方案)。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 實驗與 Web 服務。 如需詳細資訊,請參閱
Machine Learning 工作室 (傳統) 文件即將淘汰,未來將不再更新。
串流分析支援對外呼叫 Azure Machine Learning Studio (傳統版) 端點的使用者定義函式 (傳統)。 串流分析 REST API 程式庫說明此功能的 REST API 支援。
本文提供要在串流分析中成功實作這項功能所需的補充資訊。 您也可以使用教學課程。
概觀:Machine Learning 工作室 (傳統) 術語
Machine Learning 工作室 (傳統) 提供共同作業的拖放工具,讓您可用來依據資料建置、測試及部署預測性分析解決方案。 您可以使用 Machine Learning 工作室 (傳統) 來與這些機器學習資源互動:
- 工作區:保有其他所有機器學習資源,以便集中管理和控制的容器。
- 實驗:資料科學家建立以利用資料集和定型機器學習模型的測試。
- 端點:您用來將功能視為輸入、套用指定的機器學習模型,以及傳回評分輸出的物件。
- 評分 Web 服務:端點集合。
每個端點都有適用於批次執行和同步執行的 API。 串流分析使用同步執行。 該特定服務在 Machine Learning 工作室 (傳統) 中稱為要求/回應服務。
串流分析作業所需的 Machine Learning 工作室 (傳統) 資源
為了處理串流分析作業,必須要有要求/回應端點、API 金鑰和 swagger 定義才能順利執行。 串流分析有其他端點可建構 swagger 端點的 URL、查閱介面,以及將預設 UDF 定義傳回給使用者。
透過 REST API 設定串流分析和 Machine Learning 工作室 (傳統) UDF
藉由使用 REST API,您可以設定作業來呼叫 Machine Learning Studio (傳統) 函式:
- 建立串流分析作業。
- 定義輸入。
- 定義輸出。
- 建立 UDF。
- 撰寫呼叫 UDF 的串流分析轉換。
- 啟動作業。
使用基本屬性建立 UDF
下列範例程式碼會建立名為 newudf 且繫結至 Machine Learning 工作室 (傳統) 端點的純量 UDF 來作為示範。 您可以在所選服務的 API 說明頁面上找到 endpoint
值 (服務 URI)。 您可以在服務的主頁面上找到 apiKey
值。
PUT : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>?api-version=<apiVersion>
要求本文範例:
{
"name": "newudf",
"properties": {
"type": "Scalar",
"properties": {
"binding": {
"type": "Microsoft.MachineLearning/WebService",
"properties": {
"endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77fb4b46bf2a30c63c078dca/services/b7be5e40fd194258796fb402c1958eaf/execute ",
"apiKey": "replacekeyhere"
}
}
}
}
}
呼叫預設 UDF 的 RetrieveDefaultDefinition 端點
建立基本架構 UDF 之後,您需要 UDF 的完整定義。 RetrieveDefaultDefinition
端點可協助您取得繫結至 Machine Learning Studio (傳統) 端點之純量函式的預設定義。
下列承載會要求您取得繫結至工作室 (傳統) 端點之純量函式的預設 UDF 定義。 它不會指定實際的端點,因為 PUT
要求已經提供它。
如果要求明確提供端點,則串流分析會從要求呼叫端點。 否則,串流分析會使用原本參考的端點。 UDF 在這邊會採用單一字串參數 (一個句子),並傳回指出該句子的 Sentiment
標籤的單一類型 string
輸出。
POST : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>/RetrieveDefaultDefinition?api-version=<apiVersion>
要求本文範例:
{
"bindingType": "Microsoft.MachineLearning/WebService",
"bindingRetrievalProperties": {
"executeEndpoint": null,
"udfType": "Scalar"
}
}
此要求的輸出看起來類似於下列範例:
{
"name": "newudf",
"properties": {
"type": "Scalar",
"properties": {
"inputs": [{
"dataType": "nvarchar(max)",
"isConfigurationParameter": null
}],
"output": {
"dataType": "nvarchar(max)"
},
"binding": {
"type": "Microsoft.MachineLearning/WebService",
"properties": {
"endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77ga4a4bbf2a30c63c078dca/services/b7be5e40fd194258896fb602c1858eaf/execute",
"apiKey": null,
"inputs": {
"name": "input1",
"columnNames": [{
"name": "tweet",
"dataType": "string",
"mapTo": 0
}]
},
"outputs": [{
"name": "Sentiment",
"dataType": "string"
}],
"batchSize": 10
}
}
}
}
}
使用回應修補 UDF
現在,您必須使用先前的回應來修補 UDF。
PATCH : /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.StreamAnalytics/streamingjobs/<streamingjobName>/functions/<udfName>?api-version=<apiVersion>
要求本文 (來自 RetrieveDefaultDefinition
的輸出):
{
"name": "newudf",
"properties": {
"type": "Scalar",
"properties": {
"inputs": [{
"dataType": "nvarchar(max)",
"isConfigurationParameter": null
}],
"output": {
"dataType": "nvarchar(max)"
},
"binding": {
"type": "Microsoft.MachineLearning/WebService",
"properties": {
"endpoint": "https://ussouthcentral.services.azureml.net/workspaces/f80d5d7a77ga4a4bbf2a30c63c078dca/services/b7be5e40fd194258896fb602c1858eaf/execute",
"apiKey": null,
"inputs": {
"name": "input1",
"columnNames": [{
"name": "tweet",
"dataType": "string",
"mapTo": 0
}]
},
"outputs": [{
"name": "Sentiment",
"dataType": "string"
}],
"batchSize": 10
}
}
}
}
}
實作串流分析轉換來呼叫 UDF
查詢每個輸入事件的 UDF (這裡稱為 scoreTweet
),並將該事件的回應寫入至輸出:
{
"name": "transformation",
"properties": {
"streamingUnits": null,
"query": "select *,scoreTweet(Tweet) TweetSentiment into blobOutput from blobInput"
}
}
取得協助
如需進一步協助,請嘗試使用 Azure 串流分析的 Microsoft Q&A 頁面。