升級為 v2
Azure Machine Learning 的 v2 REST API、Azure CLI 延伸模組和 Python SDK 引進一致性和一組新功能,以加速生產機器學習生命週期。 本文提供升級至 v2 的概觀,並提供建議來協助您決定 v1、v2 或兩者。
必要條件
- 對 Azure Machine Learning 和 v1 Python SDK 有個大致的瞭解。
- 了解什麼是 v2?
我是否應該使用 v2?
如果您要開始新的機器學習專案或工作流程,則應該使用 v2。 如果您想使用 v2 中提供的新功能,則應該使用 v2。 這些功能包括:
- 受控推斷
- 管線中的可重複使用元件
- 改善管線排程
- 負責任 AI 儀表板
- 資產登錄
新的 v2 專案可以重複使用現有 v1 資源 (例如工作區和計算) 以及現有資產 (例如使用 v1 所建立的模型和環境)。
v2 中的某些功能差距包括:
- 作業中的 Spark 支援 - 這目前在 v2 中處於預覽狀態。
- 發佈工作 (v1 中的管線) 作為端點。 不過,您可以排程管線而不發佈。
- 支援 SQL/資料庫資料存放區。
- 能夠使用設計工具中的傳統預建元件搭配 v2。
然後,您應該確保 v2 中所需的功能符合組織的需求,例如正式推出。
重要
Azure Machine Learning 的新功能將只在 v2 中推出。
我應該使用哪一個 v2 API?
在 v2 中,可以使用透過 REST API、CLI 和 Python SDK 的介面。 您應該使用的介面取決於案例和喜好設定。
API | 備註 |
---|---|
REST | 最少的相依性和額外負荷。 用於在 Azure Machine Learning 平台上,直接使用程式設計語言(不需提供 SDK)或根據個人喜好組建應用程式。 |
CLI | 建議用於使用 CI/CD 或根據個人喜好設定進行自動化。 允許使用 YAML 檔案快速反覆運算,並在 Azure Machine Learning 與 ML 模型程式碼之間直接分隔。 |
Python SDK | 建議用於複雜的指令碼 (例如,以程式設計方式產生大型管線工作) 或根據個人喜好設定。 允許使用 YAML 檔案快速反覆運算,或在 Python 中單獨開發。 |
將 Python SDK v1 對應至 v2
如需 SDK v1 與 v2 的比較程式碼對應,請參閱下列每篇文章。
資源和資產 | 文章 |
---|---|
工作區 | 在 SDK v1 和 SDK v2 中工作區管理 |
Datastore | 在 SDK v1 和 SDK v2 中資料存放區管理 |
資料 | SDK v1 和 v2 中的資料資產 |
計算 | 在 SDK v1 和 SDK v2 中計算管理 |
訓練 | 執行指令碼 |
訓練 | 本機執行 |
訓練 | 超參數微調 |
訓練 | 平行執行 |
訓練 | 管線 |
訓練 | AutoML |
模型 | 在 SDK v1 和 SDK v2 中模型管理 |
部署 | 將部署端點升級至 SDK v2 |
v1 和 v2 中的資源和資產
本節簡單介紹 Azure Machine Learning 中的特定資源和資產。 請參閱每個實體的概念文章,以取得其在 v2 中使用方式的詳細資料。
工作區
工作區不需要使用 v2 升級。 不論您是使用 v1 還是 v2,都可以使用相同的工作區。
如果使用自動化建立工作區,不妨考慮將用於建立工作區的程式碼升級至 v2。 Azure 資源一般是透過 Azure Resource Manager (和 Bicep) 或類似的資源佈建工具進行管理。 或者,您可以使用 CLI (v2) 和 YAML 檔案。
如需 SDK v1 和 v2 程式碼的比較,請參閱 SDK v1 和 SDK v2 中的工作區管理。
重要
如果您的工作區使用私人端點,則會自動啟用 v1_legacy_mode
旗標,以防止使用 v2 API。 如需詳細資料,請參閱如何使用 v2 來設定網路隔離。
連線 (v1 中的工作區連線)
來自 v1 的工作區連線會持續保存在工作區上,並完全可供 v2 使用。
如需 SDK v1 和 v2 程式碼的比較,請參閱 SDK v1 和 SDK v2 中的工作區管理。
Datastore
使用 v1 所建立的物件儲存體資料存放區類型完全可用於 v2。 不支援資料庫資料存放區;匯出至物件儲存體 (通常是 Azure Blob) 是建議的移轉路徑。
如需 SDK v1 和 v2 程式碼的比較,請參閱 SDK v1 和 SDK v2 中的資料存放區管理。
資料 (v1 中的資料集)
資料集已重新命名為資料資產。 提供回溯相容性,這表示您可以在 V2 中使用 V1 資料集。 當您在 V2 作業中取用 V1 資料集時,您會發現其會自動對應至 V2 類型,如下所示:
- V1 FileDataset = V2 資料夾 (
uri_folder
) - V1 TabularDataset = V2 資料表 (
mltable
)
請注意,未提供「向前相容性」,這表示您無法在 V1 中使用 V2 資料資產。
本文會進一步討論如何在 v2 中處理資料 - 讀取和寫入作業中的資料
如需 SDK v1 和 v2 程式碼的比較,請參閱 SDK v1 和 v2 中的資料資產。
計算
類型 AmlCompute
和 ComputeInstance
的計算完全可用於 v2。
如需 SDK v1 和 v2 程式碼的比較,請參閱 SDK v1 和 SDK v2 中的計算管理。
工作 (v1 中的實驗、執行、管線)
在 v2 中,「實驗」、「執行」和「管線」已合併至工作。 工作具有類型。 大部分的工作都是執行命令的 command
工作,例如 python main.py
。 工作中執行的內容與任何程式設計語言無關,因此您可以執行 bash
指令碼、叫用 python
解譯器、執行一堆 curl
命令或任何其他項目。 另一種常見的工作類型是 pipeline
,其定義可能具有輸入/輸出關聯性的子工作,而這會形成有向非循環圖 (DAG)。
如需 SDK v1 和 v2 程式碼的比較,請參閱
設計工具
您可以使用設計工具,從登錄使用自己的 v2 自訂元件和新的預先建置元件來建置管線。 在此情況下,您可以在管線中使用 v1 或 v2 資料資產。
您可以繼續使用設計工具,使用傳統預建元件和 v1 資料集類型 (表格式、檔案) 來建置管線。 您無法使用現有的設計工具傳統預建元件搭配 v2 資料資產。
您無法使用現有的設計工具傳統預建元件和 v2 自訂元件來建置管線。
模型
從 v1 建立的模型可以用於 v2。
如需 SDK v1 和 v2 程式碼的比較,請參閱 SDK v1 和 SDK v2 中的模型管理
端點和部署 (v1 中的端點和 Web 服務)
使用 SDK/CLI v1,您可以在 ACI 或 AKS 上部署模型做為 Web 服務。 您現有的 v1 模型部署和 Web 服務會繼續正常運作,但使用 SDK/CLI v1 在 ACI 或 AKS 上部署為 Web 服務的模型,現在已是舊版。 對於新模型部署,建議升級到 v2。 在 v2 中,我們提供受控端點或 Kubernetes 端點。 下表會引導我們的建議:
v2 中的端點類型 | 從 | 備註 |
---|---|---|
區域 | ACI | 在本機快速測試模型部署;不適用於生產環境。 |
受控線上端點 | ACI、AKS | 企業級受控模型部署基礎結構,具有生產環境的近乎即時回應和大規模調整。 |
受控批次端點 | 管線中的 ParallelRunStep 以進行批次評分 | 企業級受控模型部署基礎結構,具有生產環境的大量平行批次處理。 |
Azure Kubernetes Service (AKS) | ACI、AKS | 管理您自己的 AKS 叢集以進行模型部署,以 IT 額外負荷的成本來提供彈性和細微控制。 |
Azure Arc Kubernetes | N/A | 管理其他雲端或內部部署環境中您自己的 Kubernetes 叢集,以 IT 額外負荷的成本來提供彈性和細微控制。 |
如需 SDK v1 和 v2 程式碼的比較,請參閱將部署端點升級至 SDK v2。 如需從現有 ACI Web 服務升級受控線上端點的移轉步驟,請參閱我們的升級指南文章和部落格。
Environment
從 v1 建立的環境可以用於 v2。 在 v2 中,環境具有新功能,例如從本機 Docker 內容建立。
管理密碼
相較於 V1,Key Vault 祕密的管理在 V2 中有很大的差異。 V1 set_secret 和 get_secret SDK 方法無法在 V2 中使用。 相反地,應該使用 Key Vault 用戶端程式庫進行直接存取。 從定型指令碼存取秘密時,您可以使用計算或身分識別的受控識別。
如需 Key Vault 的詳細資訊,請參閱在 Azure Machine Learning 定型作業中使用驗證認證祕密。
跨機器學習生命週期的案例
使用 Azure Machine Learning 的機器學習生命週期,有些常見的情節。 我們將查看其中一部分,並針對升級到 v2,提供一般建議。
Azure 設定
Azure 建議使用 Azure Resource Manager 範本 (通常是透過 Bicep 以方便使用) 來建立資源。 這也是建立 Azure Machine Learning 資源的好方法。
如果您的小組只使用 Azure Machine Learning,您可以考慮透過 YAML 檔案和 CLI,佈建工作區和任何其他資源。
原型化模型
建議使用 v2 來原型化模型。 你可以考慮使用 CLI,以互動方式使用 Azure Machine Learning,而你的模型訓練程式碼是 Python 或任何其他程式設計語言。 或者您可以採用完整堆疊方法(也就是 Python 只使用 Azure Machine Learning SDK),或混合方法(也就是使用 AAzure Machine Learning Python SDK 和 YAML 檔案)。
生產模型定型
建議使用 v2 進行生產模型定型。 工作會合併術語,並提供一組一致性以簡化類型之間的轉換 (例如,command
轉換為 sweep
) 以及 GitOps 友善程序以將工作序列化為 YAML 檔案。
使用 v2 時,您應該區隔機器學習程式碼與控制平面程式碼。 此區隔可簡化反覆運算,並可簡化本機與雲端之間的轉換。 我們也建議使用 MLflow 進行追蹤和模型記錄。 如需詳細資料,請參閱 MLflow 概念文章。
生產模型部署
建議使用 v2 進行生產模型部署。 受控端點會抽象化 IT 額外負荷,並提供高效能的解決方案來部署和評分模型,而這適用於線上 (近乎即時) 和批次 (大量平行) 案例。
透過 AKS 或 Azure Arc 在 v2 中支援 Kubernetes 部署,以啟用組織所管理的 Azure 雲端和內部部署的部署。
機器學習作業 (MLOps)
MLOps 工作流程一般會涉及透過外部工具的 CI/CD。 一般而言,CLI 用於 CI/CD,但您也可以叫用 Python 或直接使用 REST。
MLOps 搭配 v2 的解決方案加速器正在於 https://github.com/Azure/mlops-v2 開發中,而且可以用作參考或採用以設定和自動化機器學習生命週期。
GitOps 搭配 v2 的附註
v2 的主要範例是使用 git
將機器學習實體序列化為原始檔控制的 YAML 檔案,而 GitOps 方法優於 v1。 例如,您可以強制執行原則,而透過原則,只有 CI/CD 管線中所使用的服務主體才能建立/更新/刪除部分或所有實體,以確保變更通過受控管的程序,例如具有必要檢閱者的提取要求。 因為原始檔控制中的檔案是 YAML,所以很容易區分和追蹤一段時間的變更。 升級到 v2 時,您和小組可能會考慮改用這種模式。
您可以使用 CLI 透過 az ml <entity> show --output yaml
取得任何實體的 YAML 呈現。 請注意,此輸出將會有系統產生的屬性,而這些屬性可以予以忽略或刪除。
我是否應該將現有的 v1 程式碼升級至 v2
您可以在 v2 工作流程中重複使用現有 v1 的資產。 例如,在 v1 中建立的模型可在 v2 中用於執行受控推斷。
或者,如果您想要將現有 v1 程式碼的特定部分升級至 v2,請參閱本文件中提供的比較連結。
我是否可以同時使用 v1 和 v2?
v1 和 v2 可以在工作區中共存。 您可以在 v2 工作流程中重複使用現有的資產。 例如,在 v1 中建立的模型可在 v2 中用於執行受控推斷。 工作區、計算和資料存放區這類資源可以跨 v1 和 v2 運作,但有一些例外狀況。 使用者可以呼叫 v1 Python SDK 來變更工作區的描述,然後使用 v2 CLI 延伸模組再次對其進行變更。 工作 (v1 中的實驗/執行/管線) 可以從 v1 或 v2 Python SDK 提交至相同的工作區。 工作區可以同時有 v1 和 v2 模型部署端點。
同時使用 v1 和 v2 程式碼
不建議在相同的程式碼中使用 v1 和 v2 SDK。 技術上可以在相同的程式碼中使用 v1 和 v2,因為它們使用不同的 Azure 命名空間。 不過,這些命名空間中有許多同名的類別 (例如 Workspace、Model),這可能導致混淆,並且讓程式碼可讀性和可偵錯性具有挑戰性。
重要
如果您的工作區使用私人端點,則會自動啟用 v1_legacy_mode
旗標,以防止使用 v2 API。 如需詳細資料,請參閱如何使用 v2 來設定網路隔離。