使用 CLI 和 SDK 管理 Azure 機器學習 環境 (v2)

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

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

在本文中,瞭解如何使用 SDK 和 CLI (v2) 建立和管理 Azure 機器學習 環境。

必要條件

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

提示

如需功能完整的開發環境,請使用 Visual Studio Code 和 Azure 機器學習 擴充功能來管理 Azure 機器學習 資源和定型機器學習模型

複製範例存放庫

若要執行定型範例,請先複製範例存放庫。 針對 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 機器學習 中有兩種類型的環境:策劃和自定義環境。 策展環境是預先定義的環境,其中包含熱門的 ML 架構和工具。 自定義環境是使用者定義的環境,可以透過 az ml environment create建立。

策展環境是由 Azure 機器學習 提供,且預設為可用。 Azure 機器學習 會以最新的架構版本更新這些環境,並維護這些環境以取得錯誤修正和安全性修補程式。 這些映像是由快取的 Docker 映像所支援,可降低作業準備成本和模型部署時間。

您可以參考特定版本或最新版本的環境,以現成可用的環境進行定型或部署。 使用下列語法: azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number>azureml://registries/azureml/environment/<curated-environment-name>/labels/latest。 您也可以藉由修改支持這些策展環境的 Dockerfiles,將其作為您自己的自定義環境的參考。

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

建立自訂環境

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

從 Docker 映像建立環境

若要從 Docker 映像定義環境,請提供裝載在 Docker Hub 或 Azure Container Registry 等登錄中的映像 URI。

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

$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 機器學習 會維護一組具有一般系統相依性的 CPU 和 GPU Ubuntu Linux 基底映像。 例如,GPU 映射包含 Miniconda、OpenMPI、CUDA、cuDNN 和 NCCL。 您可以將這些映像用於您的環境,或在建置您自己的自定義映射時,使用其對應的 Dockerfiles 作為參考。

如需基底映射集及其對應的 Dockerfiles,請參閱 AzureML-Containers 存放庫

從 Docker 建置內容建立環境

您也可以從 Docker 建置內容定義環境,而不是從預先建置的映像定義環境。 若要這樣做,請指定將做為建置內容的目錄。 此目錄應包含 Dockerfile (不超過 1MB)和建置映射所需的任何其他檔案。

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

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

$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 機器學習 會在建立環境時,開始從建置內容建置映像。 您可以監視組建的狀態,並在 Studio UI 中檢視組建記錄。

從 conda 規格建立環境

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

您也必須為此環境指定基底 Docker 映像。 Azure 機器學習 會在提供的 Docker 映射之上建置 conda 環境。 如果您在 Docker 映射中安裝一些 Python 相依性,這些套件就不會存在於執行環境中,因而導致運行時間失敗。 根據預設,Azure 機器學習 會使用您指定的相依性建置 Conda 環境,並將在該環境中執行作業,而不是使用您在基底映射上安裝的任何 Python 連結庫。

下列範例是 CONda 規格所定義環境的 YAML 規格檔案。 在這裡,會透過 屬性指定來自 Azure 機器學習 環境 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 機器學習 會從此環境規格建置最終的 Docker 映像。 您也可以在 Studio UI 中手動觸發環境的組建。

管理環境

SDK 和 CLI (v2) 也可讓您管理 Azure 機器學習 環境資產的生命週期。

清單​​

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

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."

重要

針對環境,只能 description 更新 和 tags 。 所有其他屬性都是不可變的;如果您需要變更任何這些屬性,您應該建立新版本的環境。

封存

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

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

封存環境的所有版本:

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

封存特定環境版本:

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

使用環境進行定型

若要針對 定型作業使用自定義環境 ,請指定 environment 作業 YAML 組態的欄位。 您可以透過 environment: azureml:<environment-name>:<environment-version>environment: azureml:<environment-name>@latest 參考現有已註冊的 Azure 機器學習 環境,或內嵌定義環境規格。 如果內嵌定義環境,請勿指定 nameversion 字段,因為這些環境會被視為「未註冊」的環境,而且不會在環境資產登錄中追蹤。

當您提交訓練作業時,新環境的建置可能需要幾分鐘的時間。 持續時間取決於所需相依性的大小。 服務會快取環境。 只要環境定義保持不變,您就只會產生一次完整的設定時間。


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

使用環境進行模型部署

您也可以針對在線和批次評分使用模型部署的環境。 若要這樣做,請在部署YAML組態中指定 environment 欄位。

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

下一步