Skapa och använda anpassade miljöer

Slutförd

När du behöver skapa en egen miljö i Azure Machine Learning för att lista alla nödvändiga paket, bibliotek och beroenden för att köra skripten kan du skapa anpassade miljöer.

Du kan definiera en miljö från en Docker-avbildning, en Docker-byggkontext och en conda-specifikation med Docker-avbildning.

Skapa en anpassad miljö från en Docker-avbildning

Den enklaste metoden är troligen att skapa en miljö från en Docker-avbildning. Docker-avbildningar kan finnas i ett offentligt register som Docker Hub eller lagras privat i ett Azure Container-register.

Många ramverk med öppen källkod är inkapslade i offentliga avbildningar som finns på Docker Hub. Du kan till exempel hitta en offentlig Docker-avbildning som innehåller alla nödvändiga paket för att träna en djupinlärningsmodell med PyTorch.

Om du vill skapa en miljö från en Docker-avbildning kan du använda 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)

Du kan också använda Azure Machine Learning-basavbildningarna för att skapa en miljö (som liknar de bilder som används av kurerade miljöer):

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)

Skapa en anpassad miljö med en conda-specifikationsfil

Docker-avbildningar innehåller alla nödvändiga paket när du arbetar med ett specifikt ramverk, men du kan behöva inkludera andra paket för att köra koden.

Du kanske till exempel vill träna en modell med PyTorch och spåra modellen med MLflow.

När du behöver inkludera andra paket eller bibliotek i din miljö kan du lägga till en conda-specifikationsfil i en Docker-avbildning när du skapar miljön.

En conda-specifikationsfil är en YAML-fil som visar de paket som måste installeras med eller conda pip. En sådan YAML-fil kan se ut så här:

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

Dricks

Läs conda-dokumentationen om hur du skapar en miljö manuellt för information om standardformatet för Conda-filer.

Om du vill skapa en miljö från en docker-basavbildning och en conda-specifikationsfil kan du använda följande kod:

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)

Kommentar

Eftersom alla utvalda miljöer är prefix med AzureML kan du inte skapa en miljö med samma prefix.

Använda en miljö

Oftast använder du miljöer när du vill köra ett skript som ett (kommando) -jobb.

Om du vill ange vilken miljö du vill använda för att köra skriptet refererar du till en miljö med hjälp av syntaxen <curated-environment-name>:<version> eller <curated-environment-name>@latest .

Följande kod visar till exempel hur du konfigurerar ett kommandojobb med Python SDK, som använder en kuraterad miljö, inklusive 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)

När du skickar jobbet skapas miljön. Första gången du använder en miljö kan det ta 10–15 minuter att skapa miljön. Du kan granska loggarna för miljöversionen i jobbets loggar.

När Azure Machine Learning skapar en ny miljö läggs den till i listan över anpassade miljöer på arbetsytan. Avbildningen av miljön finns i Azure Container-registret som är associerat med arbetsytan. När du använder samma miljö för ett annat jobb (och ett annat skript) är miljön redo att köras och behöver inte byggas igen.