建立和使用自訂環境

已完成

當您需要在 Azure Machine Learning 中建立自己的環境,以列出執行指令馬所需的所有套件、程式庫和相依性時,您可以建立自訂環境

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

從 Docker 映像建立自訂環境

最簡單的方法可能是從 Docker 映像建立環境。 Docker 映像可以裝載在公用登錄中,例如 Docker Hub 或私下儲存在 Azure Container Registry 中。

許多開放原始碼架構會封裝在公用映像中,所以可以在 Docker Hub 找到。 例如,您可以找到共用 Docker 映像,其中包含了使用 PyTorch 定型深度學習模型所需的所有必要套件。

若要從 Docker 映像建立環境,您可以使用 Python SDK:

from azure.ai.ml.entities import Environment

env_docker_image = Environment(
    image="pytorch/pytorch:latest",
    name="public-docker-image-example",
    description="Environment created from a public Docker image.",
)
ml_client.environments.create_or_update(env_docker_image)

您也可以使用 Azure Machine Learning 基礎映像來建立環境 (其類似於策劃環境所使用的映像):

from azure.ai.ml.entities import Environment

env_docker_image = Environment(
    image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
    name="aml-docker-image-example",
    description="Environment created from a Azure ML Docker image.",
)
ml_client.environments.create_or_update(env_docker_image)

使用 conda 規格檔案建立自訂環境

雖然 Docker 映像在處理特定架構時包含所有必要的套件,但您可能需要包含其他套件來執行程式碼。

例如,您可能想要使用 PyTorch 來定型模型,並使用 MLflow 追蹤模型。

當您需要在環境中包含其他套件或程式庫時,您可以在建立環境時,將 conda 規格檔案新增至 Docker 映像。

conda 規格檔案是一個 YAML 檔案,其中列出需要使用 condapip 安裝的套件。 這類 YAML 檔案如下所示:

name: basic-env-cpu
channels:
  - conda-forge
dependencies:
  - python=3.7
  - scikit-learn
  - pandas
  - numpy
  - matplotlib

提示

請檢閱 conda 文件,以了解如何手動建立環境,以取得 conda 檔案的標準格式資訊。

若要從基底 Docker 映像和 conda 規格檔案建立環境,您可以使用下列程式碼:

from azure.ai.ml.entities import Environment

env_docker_conda = Environment(
    image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
    conda_file="./conda-env.yml",
    name="docker-image-plus-conda-example",
    description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)

注意

由於所有策劃的環境都會以 AzureML- 作為前置詞,因此您無法建立具有相同前置詞的環境。

使用環境

最常見的是,當您想要將指令碼作為 (命令) 作業 執行時,您會使用環境。

若要指定您想要用來執行指令碼的環境,請使用 <curated-environment-name>:<version><curated-environment-name>@latest 語法參考環境。

例如,下列程式碼示範如何使用 Python SDK 設定命令作業,其使用策劃環境,包括 Scikit-Learn:

from azure.ai.ml import command

# configure job
job = command(
    code="./src",
    command="python train.py",
    environment="docker-image-plus-conda-example:1",
    compute="aml-cluster",
    display_name="train-custom-env",
    experiment_name="train-custom-env"
)

# submit job
returned_job = ml_client.create_or_update(job)

當您提交作業後,即會建置環境。 第一次使用環境時,可能需要 10-15 分鐘的時間來建置環境。 您可以在作業的記錄中檢閱環境組建的記錄。

當 Azure Machine Learning 建置新的環境時,環境會新增至工作區中的自訂環境清單。 環境的映像裝載於與工作區相關聯的 Azure Container Registry 中。 每當您將相同的環境用於另一個作業 (和另一個指令碼) 時,環境即準備就緒,而且不需要再次建置。