重新定型和部署機器學習模型
適用於:機器學習 Studio(傳統版)Azure 機器學習
重要
Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。
ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。
重新定型是確保機器學習模型保持準確且根據可用最相關數據的一種方式。 本文說明如何在 Studio 中將機器學習模型重新定型和部署為新的 Web 服務(傳統版)。 如果您想要重新定型傳統 Web 服務, 請檢視此操作說明文章。
本文假設您已部署預測性 Web 服務。 如果您還沒有預測性 Web 服務, 請在這裡瞭解如何部署 Studio (傳統) Web 服務。
您將遵循下列步驟來重新定型和部署機器學習新 Web 服務:
- 部署重新定型 Web 服務
- 使用 您的重新定型 Web 服務來定型新模型
- 更新現有的 預測實驗 以使用新的模型
注意
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。
部署重新定型 Web 服務
重新定型 Web 服務可讓您使用一組新的參數重新定型模型,例如新的數據,稍後再儲存。 當您將 Web 服務輸出 連接到 定型模型時,定型實驗會輸出新模型以供使用。
使用下列步驟來部署重新定型 Web 服務:
將 Web 服務輸入 模組連線到您的資料輸入。 一般而言,您想要確保您的輸入數據會以與原始定型數據相同的方式處理。
將 Web 服務輸出 模組連線到定 型模型的輸出。
如果您有評估模型模組,您可以將 Web 服務輸出模組連線到輸出評估結果
執行您的實驗。
執行實驗之後,產生的工作流程應該類似下圖:
現在,您會將定型實驗部署為重新定型 Web 服務,以輸出已定型的模型和模型評估結果。
在實驗畫布底部,按兩下 [ 設定Web服務]
選取 [部署Web服務[新增]。 機器學習 Web 服務入口網站會開啟至 [部署 Web 服務] 頁面。
輸入 Web 服務的名稱,然後選擇付款方案。
選取 [部署]。
重新定型模型
在此範例中,我們使用 C# 來建立重新定型應用程式。 您也可以使用 Python 或 R 範例程式代碼來完成這項工作。
使用下列步驟來呼叫重新定型 API:
- 在 Visual Studio 中建立 C# 控制台應用程式:新的>專案>Visual C#>Windows 傳統桌面>控制台應用程式 (.NET Framework) 。
- 登入 機器學習Web服務入口網站。
- 按兩下您正在使用的 Web 服務。
- 按兩下 [ 取用]。
- 在 [ 取用 ] 頁面底部的 [範例程序代碼 ] 區段中,按兩下 [ Batch]。
- 複製範例 C# 程式代碼以進行批次執行,並將它貼到Program.cs檔案中。 請確定命名空間保持不變。
如批注中所指定,將 NuGet 套件新增Microsoft.AspNet.WebApi.Client。 若要新增 Microsoft.WindowsAzure.Storage.dll 的參考,您可能需要安裝 Azure 儲存體 服務的用戶端連結庫。
下列螢幕快照顯示 機器學習 Web 服務入口網站中的 [取用] 頁面。
更新 apikey 宣告
找出 apikey 宣告:
const string apiKey = "abc123"; // Replace this with the API key for the web service
在 [取用] 頁面的 [基本取用資訊] 區段中,找出主鍵,並將其複製到 apikey 宣告。
更新 Azure 儲存體資訊
BES 範例程式代碼會將檔案從本機磁碟驅動器上傳(例如“C:\temp\CensusInput.csv”)Azure 儲存體、處理,並將結果寫回 Azure 儲存體。
- 登入 Azure 入口網站
- 在左側導覽欄中,按兩下 [更多服務],搜尋 [記憶體帳戶],然後加以選取。
- 從記憶體帳戶清單中,選取一個來儲存重新定型的模型。
- 在左側導覽欄中,按兩下 [ 存取金鑰]。
- 複製並儲存 主要存取金鑰。
- 在左側導覽欄中,按兩下 [Blob]。
- 選取現有的容器,或建立新的容器並儲存名稱。
找出 StorageAccountName、StorageAccountKey 和 StorageContainerName 宣告,然後更新您從入口網站儲存的值。
const string StorageAccountName = "mystorageacct"; // Replace this with your Azure storage account name
const string StorageAccountKey = "a_storage_account_key"; // Replace this with your Azure Storage key
const string StorageContainerName = "mycontainer"; // Replace this with your Azure Storage container name
您也必須確定輸入檔位於您在程式碼中指定的位置。
指定輸出位置
當您在要求承載中指定輸出位置時,RelativeLocation 中指定的檔案延伸名必須指定為 ilearner
。
Outputs = new Dictionary<string, AzureBlobDataReference>() {
{
"output1",
new AzureBlobDataReference()
{
ConnectionString = storageConnectionString,
RelativeLocation = string.Format("{0}/output1results.ilearner", StorageContainerName) /*Replace this with the location you want to use for your output file and a valid file extension (usually .csv for scoring results or .ilearner for trained models)*/
}
},
以下是重新定型輸出的範例:
評估重新定型結果
當您執行應用程式時,輸出會包含存取評估結果所需的URL和共用存取簽章令牌。
您可以從 output2 的輸出結果中結合 BaseLocation、RelativeLocation 和 SasBlobToken,並將完整的 URL 貼到瀏覽器網址列中,以查看重新定型模型的效能結果。
檢查結果,以判斷新定型的模型是否比現有模型執行得更好。
從輸出結果儲存BaseLocation、RelativeLocation和 SasBlobToken。
更新預測實驗
登入 Azure Resource Manager
首先,使用 Connect-AzAccount Cmdlet,從 PowerShell 環境中登入您的 Azure 帳戶 。
取得 Web 服務定義物件
接下來,呼叫 Get-AzMlWebService Cmdlet 以取得 Web 服務定義物件。
$wsd = Get-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'
若要判斷現有 Web 服務的資源組名,請執行 Get-AzMlWebService Cmdlet,而不需任何參數即可在訂用帳戶中顯示 Web 服務。 找出 Web 服務,然後查看其 Web 服務識別碼。 資源群組的名稱是標識符中的第四個元素,就在 resourceGroups 元素後面。 在下列範例中,資源組名為 Default-MachineLearning-SouthCentralUS。
Properties : Microsoft.Azure.Management.MachineLearning.WebServices.Models.WebServicePropertiesForGraph
Id : /subscriptions/<subscription ID>/resourceGroups/Default-MachineLearning-SouthCentralUS/providers/Microsoft.MachineLearning/webServices/RetrainSamplePre.2016.8.17.0.3.51.237
Name : RetrainSamplePre.2016.8.17.0.3.51.237
Location : South Central US
Type : Microsoft.MachineLearning/webServices
Tags : {}
或者,若要判斷現有 Web 服務的資源組名,請登入 機器學習 Web 服務入口網站。 選取 Web 服務。 資源組名是 Web 服務 URL 的第五個元素,就在 resourceGroups 元素之後。 在下列範例中,資源組名為 Default-MachineLearning-SouthCentralUS。
https://services.azureml.net/subscriptions/<subscription ID>/resourceGroups/Default-MachineLearning-SouthCentralUS/providers/Microsoft.MachineLearning/webServices/RetrainSamplePre.2016.8.17.0.3.51.237
將 Web 服務定義物件匯出為 JSON
若要修改定型模型的定義以使用新定型的模型,您必須先使用 Export-AzMlWebService Cmdlet 將它匯出至 JSON 格式檔案。
Export-AzMlWebService -WebService $wsd -OutputFile "C:\temp\mlservice_export.json"
更新 ilearner Blob 的參考
在資產中,找出 [定型模型],使用 ilearner Blob 的 URI 更新 locationInfo 節點中的 URI 值。 URI 是透過結合 BES 重新定型呼叫輸出中的BaseLocation和 RelativeLocation 來產生。
"asset3": {
"name": "Retrain Sample [trained model]",
"type": "Resource",
"locationInfo": {
"uri": "https://mltestaccount.blob.core.windows.net/azuremlassetscontainer/baca7bca650f46218633552c0bcbba0e.ilearner"
},
"outputPorts": {
"Results dataset": {
"type": "Dataset"
}
}
},
將 JSON 匯入 Web 服務定義物件
使用 Import-AzMlWebService Cmdlet,將修改過的 JSON 檔案轉換回 Web 服務定義物件,可用來更新述詞實驗。
$wsd = Import-AzMlWebService -InputFile "C:\temp\mlservice_export.json"
更新 Web 服務
最後,使用 Update-AzMlWebService Cmdlet 來更新預測實驗。
Update-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'
下一步
若要深入瞭解如何管理 Web 服務或追蹤多個實驗執行,請參閱下列文章: