什麼是 Azure Machine Learning 管線?
Azure Machine Learning 管線是完整機器學習工作的獨立可執行工作流程。 Azure Machine Learning 管線有助於將製作機器學習模型的最佳做法標準化、可讓小組大規模執行,以及改善建立模型效率。
為什麼需要 Azure Machine Learning 管線?
機器學習管線的用意是將完整的機器學習工作分割成多步驟工作流程。 每個步驟都是可管理的元件,可個別開發、最佳化、設定和自動化。 步驟透過定義明確的介面而連接起來。 Azure Machine Learning 管線服務自動協調管線步驟之間的所有相依性。 此模組化方法有兩個主要優點:
將 MLOps 實務標準化並支援可調整的小組共同作業
機器學習作業 (MLOps) 使建立機器學習模型和將模型投入生產環境的流程自動化。 這是很複雜的流程。 通常需要由具備不同技能的不同小組一起合作。 定義明確的機器學習管線可以將此複雜流程抽象化,形成多步驟工作流程,使每個步驟對應至特定工作,讓每個小組獨立工作。
例如,典型機器學習專案的步驟包括資料收集、資料準備、模型定型、模型評估及模型部署。 通常,資料工程師專注於資料步驟,資料科學家將大部分時間花在模型訓練和評估,機器學習工程師著重於模型部署和整個工作流程的自動化。 運用機器學習管線,每個小組只需要努力建立自己的步驟。 建立步驟的最佳方式是使用 Azure Machine Learning 元件 (v2),這是獨立式程式碼片段,可在機器學習管線中執行單一步驟。 由不同使用者建立的所有這些步驟,最後透過管線定義,整合成為一個工作流程。 管線是專案中每個人的共同作業工具。 定義管線及其所有步驟的流程可以由各公司慣用的 DevOps 實務來標準化。 還可以進一步將管線設定版本並自動化。 如果 ML 專案描述為管線,表示已套用 MLOps 最佳做法。
定型效率和成本降低
機器學習管線除了是執行 MLOps 的工具之外,還能改善大型模型定型的效率並降低成本。 以現代的自然語言模型定型為例。 需要預先處理大量資料和 GPU 密集的轉換器模型定型。 每次定型模型需要數小時到數天的時間。 建立模型時,資料科學家必須測試不同的定型程式碼或超參數,並多次執行定型,以獲得最佳模型效能。 在大部分定型中,每次定型通常都有細微的變化。 如果每次都從資料處理到模型定型,進行完整定型,則太過浪費。 利用機器學習管線可以自動計算哪些步驟結果不變,並重複使用前一次定型的輸出。 此外,機器學習管線支援在不同的計算資源上執行每個步驟。 因此,耗用大量記憶體的資料處理工作可以在高記憶體 CPU 機器上執行,而計算密集型定型可以在高成本的 GPU 機器上執行。 正確選擇哪個步驟在何種機器上執行,可以大幅降低定型成本。
開始的最佳做法
視機器學習專案已具備的條件而定,建立機器學習管線的起點可能有所不同。 建立管線有一些常用的方法。
第一種方法通常適用於從未用過管線但想利用管線 (例如 MLOps) 的小組。 在此情況下,資料科學家通常已在本機環境上,使用喜愛的工具開發一些機器學習模型。 機器學習工程師必須將資料科學家的輸出投入生產環境。 工作包括從原始筆記本或 Python 程式碼中清除一些多餘程式碼、將定型輸入從本機資料換成參數化值、視需要將定型程式碼分割成多個步驟、執行每個步驟的單元測試,最後是將所有步驟包裝成管線。
一旦小組熟悉管線,且想要使用管線執行更多機器學習專案,就會發現第一種方法很難調整。 第二種方法是設定一些管線範本,各範本嘗試解決一個特定的機器學習問題。 範本預先定義管線結構,包括有多少步驟、每個步驟的輸入和輸出,以及其連線性。 為了開始新的機器學習專案,小組首先派生一個範本存放庫。 接著,小組負責人將需要處理的步驟指派給成員。 資料科學家和資料工程師執行其份內工作。 對結果感到滿意時,就建構程式碼來配合預先定義的步驟。 簽入結構化程式碼之後,即可執行或自動化管線。 如有任何變更,每個成員只需管好自己份內的程式碼,不必插手其餘的管線程式碼。
小組建立一組機器學習管線和可重複使用的元件之後,就可以開始複製前一個管線,或將現有可重複使用的元件繫在一起,以建立機器學習管線。 在此階段,小組的整體生產力會大幅提升。
Azure Machine Learning 提供各種方法來建立管線。 對於熟悉 DevOps 實務的使用者,建議使用 CLI。 對於熟悉 Python 的資料科學家,建議使用 Azure Machine Learning SDK v2 來撰寫管線。 如果使用者偏好使用 UI,則可以在設計工具中使用已註冊的元件來建立管線。
我應該使用哪一種 Azure 管線技術?
Azure 雲端提供數種類型的管線,各有不同的用途。 下表列出不同的管線以及其用途:
案例 | 主要角色 | Azure 供應項目 | OSS 供應項目 | 標準管道 | 優勢 |
---|---|---|---|---|---|
模型協調流程 (機器學習) | 資料科學家 | Azure Machine Learning 管線 | Kubeflow Pipelines | 資料 -> 模型 | 散發、快取、程式碼優先、重複使用 |
資料協調流程 (資料準備) | 資料工程師 | Azure Data Factory | Apache Airflow | 資料 -> 資料 | 強類型移動、以資料為中心的活動 |
程式碼與應用程式協調流程 (CI/CD) | 應用程式開發人員/Ops | Azure Pipelines | Jenkins | 程式碼 + 模型 -> 應用程式/服務 | 最開放且彈性的活動支援、核准佇列、具有管制的階段 |
下一步
Azure Machine Learning 管線是一項功能強大的工具,可在早期開發階段開始交付價值。