共用方式為


部署使用數據匯入和數據匯出模組的 機器學習 Studio (傳統) Web 服務

適用於:適用於機器學習 Studio(傳統版)不適用於Azure 機器學習

重要

Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning

自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。

ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。

當您建立預測實驗時,通常會新增 Web 服務輸入和輸出。 當您部署實驗時,取用者可以透過輸入和輸出,從 Web 服務傳送和接收數據。 對於某些應用程式,取用者的數據可能可從數據摘要取得,或已位於外部數據源,例如 Azure Blob 記憶體。 在這些情況下,他們不需要使用 Web 服務輸入和輸出來讀取和寫入數據。 他們可以使用匯入數據模組,改用批次執行服務 (BES) 從數據源讀取數據,並使用匯出數據模組將評分結果寫入不同的數據位置。

匯入數據和匯出數據模組可以從各種資料位置讀取和寫入,包括透過 HTTP 的 Web URL、Hive 查詢、Azure SQL 資料庫中的資料庫、Azure 表格儲存體、Azure Blob 儲存體、數據源提供者或 SQL Server 資料庫。

本主題使用「範例 5:定型、測試、評估二元分類:成人數據集」範例,並假設數據集已載入名為 censusdata 的 Azure SQL 數據表。

建立訓練實驗

當您開啟「範例 5:定型、測試、評估二元分類:成人數據集」範例時,它會使用範例成人普查收入二元分類數據集。 畫布中的實驗看起來會類似下圖:

實驗的初始設定。

若要從 Azure SQL 資料表讀取資料:

  1. 刪除資料集模組。

  2. 在 [元件] 搜尋方塊中,輸入 import。

  3. 從結果清單中,將匯 入數據 模組新增至實驗畫布。

  4. 將匯入數據模組的輸出連接到清除遺漏數據模組的輸入。

  5. 在 [屬性] 窗格中,選取 [數據源] 下拉式清單中的 [Azure SQL 資料庫]。

  6. 在 [資料庫伺服器名稱]、[資料庫名稱]、[用戶名稱] 和 [密碼] 欄位中,輸入資料庫的適當資訊。

  7. 在 [資料庫查詢] 欄位中,輸入下列查詢。

     select [age],
        [workclass],
        [fnlwgt],
        [education],
        [education-num],
        [marital-status],
        [occupation],
        [relationship],
        [race],
        [sex],
        [capital-gain],
        [capital-loss],
        [hours-per-week],
        [native-country],
        [income]
     from dbo.censusdata;
    
  8. 在實驗畫布底部,按一下執行

建立預測實驗

接下來,您需要設定預測實驗,作為部署網路服務的基礎。

  1. 在實驗畫布底部,按一下 Set Up Web Service,然後選取 預測 Web 服務 [建議]
  2. 從預測實驗中移除 Web 服務輸入Web 服務輸出模組
  3. 在 [元件搜尋] 方塊中,輸入 export。
  4. 從結果清單中,將匯出資料模組新增到實驗畫布。
  5. 將評分模型模組的輸出連接到匯出數據模組的輸入。
  6. 在 [屬性] 窗格中,選取 [數據目的地] 下拉式清單中的 [Azure SQL 資料庫]。
  7. 在 [資料庫伺服器名稱]、[資料庫名稱]、[伺服器使用者帳戶名稱] 和 [伺服器使用者帳戶密碼] 字段中,輸入資料庫的適當資訊。
  8. 要儲存的欄位之逗號分隔清單中,輸入評分標籤。
  9. 在 [ 數據表名稱] 欄位中,輸入 dbo。ScoredLabels。 如果數據表不存在,則會在執行實驗或呼叫 Web 服務時建立數據表。
  10. 在 [ 資料表欄位的逗號分隔清單 ] 字段中,輸入 ScoredLabels。

當您撰寫呼叫最終 Web 服務的應用程式時,您可能會想要在運行時間指定不同的輸入查詢或目的地資料表。 若要設定這些輸入和輸出,請使用 Web 服務參數功能來設定 匯入資料 模組 資料源 屬性和 匯出數據 模式資料目的地屬性。 如需 Web 服務參數的詳細資訊,請參閱 Cortana Intelligence 和 機器學習 部落格上的 機器學習 Studio (傳統) Web 服務參數專案

若要設定匯入查詢和目的地資料表的 Web 服務參數:

  1. 在 [匯入數據] 模組的屬性窗格中,按兩下 [資料庫查詢] 欄位右上方的圖示,然後選取 [設定為Web 服務參數]。
  2. 在 [導出數據] 模組的屬性窗格中,按兩下 [資料表名稱] 欄位右上方的圖示,然後選取 [設定為Web 服務參數]。
  3. 在 [ 導出數據 模組屬性] 窗格底部的 [Web 服務參數 ] 區段中,按兩下 [資料庫查詢],並將它重新命名為 [查詢]。
  4. 按兩下 [資料表名稱 ],並將它重新命名為 [資料表]。

完成時,您的實驗看起來應該類似下圖:

實驗的最終外觀。

現在您可以將實驗部署為 Web 服務。

部署 Web 服務

您可以部署至傳統或新的 Web 服務。

部署傳統 Web 服務

若要部署為傳統 Web 服務,並建立應用程式來取用它:

  1. 在實驗畫布底部,點一下執行。

  2. 執行完成時,按兩下 [部署 Web 服務],然後選取 [部署 Web 服務 [傳統]

  3. 在 Web 服務儀錶板上,找出您的 API 金鑰。 複製並儲存以供稍後使用。

  4. 在 [ 預設端點] 數據表中 ,按兩下 [批次執行] 連結以開啟 API 說明頁面。

  5. 在 Visual Studio 中,建立 C# 控制台應用程式:新增>專案>Visual C#>控制台應用程式 (.NET Framework)。

  6. 在 API 說明頁面上,尋找 頁面底部的 [範例程式代碼 ] 區段。

  7. 將 C# 範例程式代碼複製並貼到Program.cs檔案中,並移除 Blob 記憶體的所有參考。

  8. 使用稍早儲存的 API 金鑰來更新 apiKey 變數的值。

  9. 找出要求宣告,並更新傳遞至匯入數據和匯出數據模組的 Web 服務參數值。 在此情況下,您會使用原始查詢,但定義新的資料表名稱。

    var request = new BatchExecutionRequest()
    {
        GlobalParameters = new Dictionary<string, string>() {
            { "Query", @"select [age], [workclass], [fnlwgt], [education], [education-num], [marital-status], [occupation], [relationship], [race], [sex], [capital-gain], [capital-loss], [hours-per-week], [native-country], [income] from dbo.censusdata" },
            { "Table", "dbo.ScoredTable2" },
        }
    };
    
  10. 執行應用程式。

執行完成時,會將新的數據表新增至包含評分結果的資料庫。

部署新的 Web 服務

注意

若要部署新的 Web 服務,您必須在部署 Web 服務的訂用帳戶中有足夠的許可權。 如需詳細資訊,請參閱使用 機器學習 Web 服務入口網站管理 Web 服務。

若要部署為新的 Web 服務,並建立應用程式來取用它:

  1. 在實驗畫布底部,按一下執行

  2. 執行完成時,按兩下 [部署Web服務 ],然後選取 [ 部署Web服務[新增]

  3. 在 [部署實驗] 頁面上,輸入 Web 服務的名稱,然後選取定價方案,然後按兩下 [ 部署]。

  4. 快速入門 頁面上,點擊 取用

  5. 在 [ 範例程序代碼] 區段中,按兩下 [ Batch]。

  6. 在 Visual Studio 中,建立 C# 控制台應用程式:新增>專案>Visual C#>控制台應用程式 (.NET Framework)。

  7. 將 C# 範例程式代碼複製並貼到Program.cs檔案中。

  8. 使用基本消耗資訊區段中的主鍵來更新apiKey變數的值。

  9. 找出 scoreRequest 宣告,並更新傳遞至匯入數據匯出數據模組的 Web 服務參數值。 在此情況下,您會使用原始查詢,但定義新的資料表名稱。

    var scoreRequest = new
    {
        Inputs = new Dictionary<string, StringTable>()
        {
        },
        GlobalParameters = new Dictionary<string, string>() {
            { "Query", @"select [age], [workclass], [fnlwgt], [education], [education-num], [marital-status], [occupation], [relationship], [race], [sex], [capital-gain], [capital-loss], [hours-per-week], [native-country], [income] from dbo.censusdata" },
            { "Table", "dbo.ScoredTable3" },
        }
    };
    
  10. 執行應用程式。