共用方式為


部署使用數據匯入和數據匯出模組的 機器學習 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、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. 在實驗畫布底部,按兩下 [ 執行]。

建立預測實驗

接下來,您會設定用來部署Web服務的預測實驗。

  1. 在實驗畫布底部,按兩下 [設定Web服務 ],然後選取 [建議] 預測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#>Windows 傳統桌面>控制台應用程式 (.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#>Windows 傳統桌面>控制台應用程式 (.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. 執行應用程式。