分享方式:


使用 CLI & SDK (v2) 來管理 Azure Machine Learning 環境

適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)

Azure Machine Learning 環境會定義作業或部署的執行環境,並封裝程式碼的相依性。 Azure Machine Learning 會使用環境規格來建立您的訓練或評分程式碼在指定的計算目標上執行的 Docker 容器。 您可以從 Conda 規格、Docker 映像或 Docker 組建內容定義環境。

在本文中,您將了解如何使用 SDK & CLI (v2) 建立和管理 Azure Machine Learning 環境。

必要條件

遵循本文中的步驟之前,請確定您已滿足下列必要條件:

提示

若要取得功能完整的開發環境,請使用 Visual Studio Code 和 Azure Machine Learning 擴充功能管理 Azure Machine Learning 資源以及為機器學習模型定型

複製範例存放庫

若要執行訓練範例,請先複製範例存放庫。 針對 CLI 範例,變更為 cli 目錄。 針對 SDK 範例,變更為 sdk/python/assets/environment 目錄。

git clone --depth 1 https://github.com/Azure/azureml-examples

請注意,--depth 1 只會複製對存放庫的最新提交資料,以縮短完成作業的時間。

連線到工作區

提示

使用以下索引標籤選取您要與環境搭配使用的方法。 選取索引標籤會自動將本文中的所有索引標籤切換至相同的索引標籤。您可以隨時選取另一個索引標籤。

使用 Azure CLI 時,您需要識別碼參數 - 訂用帳戶、資源群組和工作區名稱。 雖然您可以為每個命令指定這些參數,但是您也可以設定用於所有命令的預設。 使用下列命令來設定預設值。 將 <subscription ID><Azure Machine Learning workspace name><resource group> 取代為您設定的值:

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

策展的環境

Azure Machine Learning 中有兩種類型的環境:策展環境和自訂環境。 策展環境是預先定義的環境,內含熱門的 ML 架構和工具。 自訂環境則是使用者定義的環境,並可透過 az ml environment create 來建立。

策展環境由 Azure Machine Learning 提供且預設可用。 Azure Machine Learning 會定期以最新的架構版本更新這些策展環境,並針對錯誤修正和安全性修補程式來維護這些環境。 它們由快取的 Docker 映像提供支援,以減少作業準備成本和模型部署時間。

您可以參考特定版本或最新版本的環境,以現成可用的方式使用這些策展環境來進行訓練或部署。 使用下列語法:azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number>azureml://registries/azureml/environment/<curated-environment-name>/labels/latest。 您也可以藉由修改支援這些策展環境的 Dockerfile,將策展環境當作您自訂環境的參考。

您可以在 Azure Machine Learning 工作室 UI 中查看一組可用的策展環境,也可以使用 CLI (v2) 透過 az ml environment list 來查看。

提示

在 CLI 或 SDK 中使用策展環境時,環境名稱會以 AzureML- 開頭,然後接續策展環境的名稱。 使用 Azure Machine Learning 工作室時並沒有此前置詞。 此差異的原因是工作室 UI 會在不同的索引標籤上顯示策展和自訂環境,因此不需要前置詞。 CLI 和 SDK 沒有此區隔,因此會使用前置詞來區分策展環境與自訂環境。

建立自訂環境

您可以從 Docker 映像、Docker 組建內容和帶有 Docker 映像的 conda 規格定義環境。

從 Docker 映像建立環境

若要從 Docker 映像定義環境,請提供登錄 (例如 Docker Hub 或 Azure Container Registry) 中所裝載映像的映像 URI。

下列範例是從 Docker 映像定義的環境所使用的 YAML 規格檔案。 您可以透過 YAML 檔案中的 image 屬性來指定 Docker Hub 上的官方 PyTorch 存放庫中的映像。

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.

若要建立環境:

az ml environment create --file assets/environment/docker-image.yml

提示

Azure Machine Learning 會維護一組具有常見系統相依性的 CPU 和 GPU Ubuntu Linux 型基礎映像。 例如,GPU 映像包含 Miniconda、OpenMPI、CUDA、cuDNN 和 NCCL。 您可以使用這些映像來建立您的環境,或在建置您自己的自訂映像時,使用這些映像對應的 Dockerfile 作為參考。

如需這組基礎映像及其對應 Dockerfile 的資訊,請參閱 AzureML-Containers 存放庫

從 Docker 組建內容建立環境

您也可以從 Docker 組建內容定義環境,而不是從預建映像定義環境。 為此請指定目錄做為組建內容。 此目錄應該包含 Dockerfile (不大於 1MB) 以及要建置映像所需的任何其他檔案。

下列範例是從組建內容定義的環境所使用的 YAML 規格檔案。 組建內容資料夾的本機路徑指定於 build.path 欄位中,而該組建內容資料夾內的 Dockerfile 相對路徑則指定於 build.dockerfile_path 欄位中。 如果在 YAML 檔案中省略 build.dockerfile_path,Azure Machine Learning 會在組建內容的根目錄尋找名為 Dockerfile 的 Dockerfile。

在此範例中,組建內容會包含名為 Dockerfile 的 Dockerfile,以及為了安裝 Python 套件而在 Dockerfile 內參考的 requirements.txt 檔案。

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-context-example
build:
  path: docker-contexts/python-and-pip

若要建立環境:

az ml environment create --file assets/environment/docker-context.yml

Azure Machine Learning 會在建立環境時,從組建內容開始建置映像。 您可以監視組建的狀態,並在工作室 UI 中檢視組建記錄。

從 Conda 規格建立環境

您可以使用包含 Conda 環境相依性的標準 Conda YAML 設定檔來定義環境。 如需此標準格式的相關資訊,請參閱手動建立環境

您也必須為此環境指定基礎 Docker 映像。 Azure Machine Learning 會在提供的 Docker 映像上建置 Conda 環境。 如果您在 Docker 映像中安裝一些 Python 相依性,則這些套件將不會存在於執行環境中,因此會造成執行階段失敗。 根據預設,Azure Machine Learning 會使用您指定的相依性來建置 Conda 環境,並會在該環境中執行作業,而不是使用您在基礎映像上安裝的任何 Python 程式庫。

下列範例是從 Conda 規格定義的環境所使用的 YAML 規格檔案。 在這裡,Azure Machine Learning 環境 YAML 檔案中 Conda 檔案的相對路徑可透過 conda_file 屬性來指定。 您也可以使用 conda_file 屬性來定義內嵌的 Conda 規格,而不是在不同的檔案中定義規格。

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-plus-conda-example
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
conda_file: conda-yamls/pydata.yml
description: Environment created from a Docker image plus Conda environment.

若要建立環境:

az ml environment create --file assets/environment/docker-image-plus-conda.yaml

環境用於作業或部署時,Azure Machine Learning 會從這個環境規格建置最終的 Docker 映像。 您也可以在工作室 UI 中手動觸發環境的建置。

管理環境

SDK 和 CLI (v2) 也可讓您管理 Azure Machine Learning 環境資產的生命週期。

清單​​

列出工作區中的所有環境:

az ml environment list

列出給定名稱下的所有環境版本:

az ml environment list --name docker-image-example

顯示

取得特定環境的詳細資料:

az ml environment show --name docker-image-example --version 1

更新

更新特定環境的可變屬性:

az ml environment update --name docker-image-example --version 1 --set description="This is an updated description."

重要

環境只能更新 descriptiontags。 其他都是不可變的屬性;如果您需要變更任何屬性,則請建立新版本的環境。

封存

如果封存環境,則會預設將其從清單查詢 (az ml environment list) 隱藏。 您仍然可以繼續在工作流程中參考並使用封存的環境。 您可以封存環境的所有版本或僅封存特定的版本。

如果您未指定版本,則會封存該指定名稱下環境的所有版本。 如果您在封存環境容器下建立新的環境版本,該新版本也會自動設定為封存。

封存環境的所有版本:

az ml environment archive --name docker-image-example

封存特定環境版本:

az ml environment archive --name docker-image-example --version 1

重要

封存環境版本並不會刪除容器登錄中的快取映像。 如果您想要刪除與特定環境相關的快取映像,您可以使用環境相關存放庫上的 az acr repository delete 命令。

使用環境進行定型

如欲針對訓練作業使用自訂環境,請指定作業 YAML 設定的 environment 欄位。 您可以透過 environment: azureml:<environment-name>:<environment-version>environment: azureml:<environment-name>@latest 參考現有的已註冊 Azure Machine Learning 環境 (以參考最新的環境版本),或以內嵌方式定義環境規格。 如果以內嵌方式定義環境,請勿指定 nameversion 欄位,因為系統會將這些環境視為「未註冊的」環境,而且不會在您的環境資產登錄中進行追蹤。

當您提交定型作業時,可能需要幾分鐘的時間才能建置新環境。 持續時間視所需相依性的大小而定。 服務會快取環境。 因此只要環境定義維持不變,您就只會遇到一次完整的安裝時間。


如需如何在作業中使用環境的詳細資訊,請參閱訓練模型

使用環境來部署模型

您也可以使用環境來部署模型,以進行線上評分和批次評分。 若要這樣做,請在部署 YAML 設定中指定 environment 欄位。

如需如何在部署中使用環境的詳細資訊,請參閱 使用線上端點部署和評分機器學習模型

下一步