创建和使用自定义环境
如果需要在 Azure 机器学习中创建自己的环境,用来列出运行脚本所需的所有包、库和依赖项,可以创建自定义环境。
可以从 Docker 映像、Docker 生成上下文和具有 Docker 映像的 conda 规范定义环境。
从 Docker 映像创建自定义环境
最简单的方法可能就是从 Docker 映像创建环境。 Docker 映像可以托管在公共注册表(如 Docker Hub)中,也可以以私密方式存储在 Azure 容器注册表中。
许多开源框架封装在公用映像中,可以在 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 机器学习基础映像来创建环境(该环境类似于策展环境使用的映像):
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 文件,其中列出了需要使用 conda
或 pip
安装的包。 这样的 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 机器学习生成新的环境时,它会被添加到工作区中的自定义环境列表。 环境映像托管在与工作区关联的 Azure 容器注册表中。 每当将同一环境用于另一个作业(和另一个脚本)时,该环境已准备就绪,无需再次生成。