使用 Azure Machine Learning 將模型定型

適用於Python SDK azure-ai-ml v2 (目前)

Azure Machine Learning 提供數種方式來定型模型,從使用 SDK 的程式代碼優先解決方案到低程式碼解決方案,例如自動化機器學習和視覺化設計工具。 使用下列清單來判斷哪種訓練方法適合您:

  • 適用於 Python 的 Azure Machine Learning SDK::Python SDK 提供數種可將模型定型的方法,這些方法各有不同的功能。

    訓練方法 描述
    command() 將模型定型的一個常見方式是提交 command(),其中包括定型指令碼、環境和計算資訊。
    自動化機器學習 自動化機器學習可讓您在沒有廣泛的資料科學或程式設計知識時將模型定型。 對於有資料科學和程式設計背景的人員,自動化機器學習可讓其透過將演算法的選取和超參數的微調自動化而節省時間和資源。 使用自動化機器學習時,您不必擔心要如何定義作業設定。
    機器學習管線 管線不是另一種訓練方法,而是一種使用模組化、可重複使用的步驟來定義工作流程的方式,其中可包含訓練作為工作流程的一部分。 機器學習管線可支援使用自動化機器學習和回合組態來將模型定型。 由於管線並非專門用於訓練,因此使用管線的原因比其他訓練方法更多樣。 一般而言,您可能會在下列情況使用管線:
    * 您想要排定無人值守程序,例如長時間執行的訓練作業或資料準備。
    * 使用多個步驟,這些步驟會跨異質計算資源和儲存位置彼此協調。
    * 針對重新定型或批次評分等特定案例,使用管線作為可重複使用的範本
    為您的工作流程* 追蹤資料來源、輸入和輸出,並進行版本控管
    * 您的工作流程是由不同小組實作的,而這些小組會獨立處理特定步驟。 然後,這些步驟可在管線中聯結在一起以實作工作流程。
  • 設計工具:Azure Machine Learning 設計工具提供機器學習的簡單進入點,以建置概念證明,或為幾乎沒有編碼經驗的使用者提供。 其可讓您使用拖放式的 Web 型 UI 來將模型定型。 您可以將 Python 程式碼作為設計的一部分,或在不撰寫任何程式碼的情況下將模型定型。

  • Azure CLI:機器學習 CLI 會提供常見 Azure Machine Learning 工作的命令,而且通常會用於指令碼編寫和自動化工作上。 例如,一旦您建立了訓練指令碼或管線,您就可以在排程的時間使用 Azure CLI 啟動訓練作業,或在用於訓練的資料檔案更新時啟動訓練作業。 對於訓練模型,它會提供用來提交訓練作業的命令。 它可以使用執行組態或管線來提交作業。

這些訓練方法各自都可以使用不同類型的運算資源來進行訓練。 這些資源統稱為計算目標。 計算目標可以是本機電腦或雲端資源,例如 Azure Machine Learning Compute、Azure HDInsight 或遠端虛擬機器。

Python SDK

適用於 Python 的 Azure Machine Learning SDK 可讓您使用 Azure Machine Learning 來建置及執行機器學習工作流程。 您可以在互動式 Python 工作階段、Jupyter Notebook、Visual Studio Code 或其他 IDE 中與服務互動。

提交命令

您可以使用 command() 函式來定義 Azure Machine Learning 中的通用訓練作業。 接著會使用 Command 物件搭配您的訓練指令碼,在指定的計算目標上訓練模型。

您可以從本機電腦的 Command 物件開始,然後視需要切換至雲端式計算目標的 Command 物件。 變更計算目標時,您只會變更您使用的 Command 物件中的計算參數。 一次執行也會記錄訓練作業的相關資訊,例如輸入內容、輸出內容和日誌。

自動化機器學習

定義迭代次數、超參數設定、特徵化方式及其他設定。 在定型期間,Azure Machine Learning 會以平行方式嘗試不同的演算法和參數。 訓練會在達到您所定義的結束條件後停止。

提示

除了 Python SDK 以外,您也可以透過 Azure Machine Learning Studio 來使用自動化 ML。

機器學習流程

機器學習管線可以使用先前提及的訓練方法。 管線更常用來建立工作流程,因此其所包含的功能不只是將模型定型而已。

了解提交訓練作業時會發生的情況

Azure 定型生命週期由下列各步驟組成:

  1. 將專案資料夾中的檔案壓縮成 ZIP 檔,並將其上傳至雲端。

    提示

    若要避免在快照中包含不必要的檔案,請在目錄中建立忽略檔案 (.gitignore.amlignore)。 將要排除的檔案和目錄新增到這個檔案中。 如需此檔案中使用的語法詳細資訊,請參閱語法與模式,以了解.gitignore.amlignore 檔案會使用相同的語法。 如果兩個檔案都存在,則會使用 .amlignore 檔案,不會使用 .gitignore 檔案。

  2. 擴充您的計算叢集 (或無伺服器計算)

  3. 建置或下載 Dockerfile 到運算節點

    1. 系統會計算下列雜湊:
    2. 系統會在查詢工作區 Azure Container Registry (ACR) 時,使用此雜湊做為金鑰
    3. 如果找不到,則會在全域 ACR 中尋找相符項目
    4. 如果找不到該映像,系統會建置新的映像 (將會快取並註冊至工作區 ACR)
  4. 將壓縮的專案檔案下載至計算節點上的暫存儲存體

  5. 解壓縮專案檔

  6. 執行 python <entry script> <arguments> 的計算節點

  7. 將寫入 ./outputs 的記錄、模型檔案和其他檔案儲存到與工作區相關聯的儲存體帳戶

  8. 縮小計算,包括移除暫存儲存體

Azure Machine Learning 設計工具

Designer 可讓您使用網頁瀏覽器中的拖放介面來訓練模型。

Azure CLI

機器學習 CLI 是 Azure CLI 的擴充功能。 其提供跨平台 CLI 命令供您使用 Azure Machine Learning。 一般而言,您會使用 CLI 來將工作自動化,例如將機器學習模型定型。

VS Code

使用 VS Code 擴充功能來執行和管理你的訓練工作。 欲了解更多,請參閱 VS Code 資源管理操作指南

下一步

了解如何教學課程:在 Jupyter 筆記本中使用 Python SDK v2 建立生產 ML 管線