Aangepaste omgevingen maken en gebruiken

Voltooid

Wanneer u uw eigen omgeving in Azure Machine Learning moet maken om alle benodigde pakketten, bibliotheken en afhankelijkheden weer te geven om uw scripts uit te voeren, kunt u aangepaste omgevingen maken.

U kunt een omgeving definiëren vanuit een Docker-installatiekopieën, een Docker-buildcontext en een conda-specificatie met docker-installatiekopieën.

Een aangepaste omgeving maken op basis van een Docker-installatiekopieën

De eenvoudigste methode is waarschijnlijk om een omgeving te maken op basis van een Docker-installatiekopieën. Docker-installatiekopieën kunnen worden gehost in een openbaar register, zoals Docker Hub of privé worden opgeslagen in een Azure Container Registry.

Veel opensource-frameworks zijn ingekapseld in openbare installatiekopieën die te vinden zijn in Docker Hub. U kunt bijvoorbeeld een openbare Docker-installatiekopieën vinden die alle benodigde pakketten bevat om een Deep Learning-model te trainen met PyTorch.

Als u een omgeving wilt maken op basis van een Docker-installatiekopieën, kunt u de Python SDK gebruiken:

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)

U kunt ook de Basisinstallatiekopieën van Azure Machine Learning gebruiken om een omgeving te maken (die vergelijkbaar is met de installatiekopieën die worden gebruikt door gecureerde omgevingen):

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)

Een aangepaste omgeving maken met een conda-specificatiebestand

Hoewel Docker-installatiekopieën alle benodigde pakketten bevatten wanneer u met een specifiek framework werkt, kan het zijn dat u andere pakketten moet opnemen om uw code uit te voeren.

U kunt bijvoorbeeld een model trainen met PyTorch en het model bijhouden met MLflow.

Wanneer u andere pakketten of bibliotheken in uw omgeving moet opnemen, kunt u een conda-specificatiebestand toevoegen aan een Docker-installatiekopieën bij het maken van de omgeving.

Een conda-specificatiebestand is een YAML-bestand, waarin de pakketten worden vermeld die moeten worden geïnstalleerd met of condapip. Een dergelijk YAML-bestand kan er als volgt uitzien:

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

Tip

Raadpleeg de conda-documentatie over het handmatig maken van een omgeving voor informatie over de standaardindeling voor conda-bestanden.

Als u een omgeving wilt maken op basis van een Docker-basisinstallatiekopieën en een conda-specificatiebestand, kunt u de volgende code gebruiken:

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)

Notitie

Aangezien alle gecureerde omgevingen worden voorafgegaan door AzureML, kunt u geen omgeving met hetzelfde voorvoegsel maken.

Een omgeving gebruiken

Meestal gebruikt u omgevingen wanneer u een script wilt uitvoeren als een (opdracht)-taak.

Als u wilt opgeven welke omgeving u wilt gebruiken om uw script uit te voeren, verwijst u naar een omgeving met behulp van de <curated-environment-name>:<version> of <curated-environment-name>@latest syntaxis.

De volgende code laat bijvoorbeeld zien hoe u een opdrachttaak configureert met de Python SDK, die gebruikmaakt van een gecureerde omgeving, waaronder 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)

Wanneer u de taak verzendt, wordt de omgeving gebouwd. De eerste keer dat u een omgeving gebruikt, kan het 10-15 minuten duren voordat de omgeving is gebouwd. U kunt de logboeken van de omgevingsbuild bekijken in de logboeken van de taak.

Wanneer Azure Machine Learning een nieuwe omgeving bouwt, wordt deze toegevoegd aan de lijst met aangepaste omgevingen in de werkruimte. De installatiekopie van de omgeving wordt gehost in het Azure Container Registry dat is gekoppeld aan de werkruimte. Wanneer u dezelfde omgeving gebruikt voor een andere taak (en een ander script), is de omgeving klaar om te gaan en hoeft deze niet opnieuw te worden gebouwd.