Azure Machine Learning-omgevingen beheren met de CLI & SDK (v2)

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

Azure Machine Learning-omgevingen definiëren de uitvoeringsomgevingen voor uw taken of implementaties en kapselen de afhankelijkheden voor uw code in. Azure Machine Learning maakt gebruik van de omgevingsspecificatie om de Docker-container te maken waarin uw trainings- of scorecode wordt uitgevoerd op het opgegeven rekendoel. U kunt een omgeving definiëren vanuit een Conda-specificatie, Docker-installatiekopieën of Docker-buildcontext.

In dit artikel leert u hoe u Azure Machine Learning-omgevingen maakt en beheert met behulp van de SDK & CLI (v2).

Vereisten

Voordat u de stappen in dit artikel volgt, moet u ervoor zorgen dat u over de volgende vereisten beschikt:

  • Een Azure Machine Learning-werkruimte. Als u er nog geen hebt, gebruikt u de stappen in de quickstart: artikel Werkruimtebronnen maken om er een te maken.

  • De Azure CLI en de ml extensie of de Azure Machine Learning Python SDK v2:

    • Zie De CLI (v2) installeren, instellen en gebruiken om de Azure CLI en extensie te installeren.

      Belangrijk

      In de CLI-voorbeelden in dit artikel wordt ervan uitgegaan dat u de Bash-shell (of compatibele) shell gebruikt. Bijvoorbeeld vanuit een Linux-systeem of Windows-subsysteem voor Linux.

    • Gebruik de volgende opdracht om de Python SDK v2 te installeren:

      pip install azure-ai-ml azure-identity
      

      Gebruik de volgende opdracht om een bestaande installatie van de SDK bij te werken naar de nieuwste versie:

      pip install --upgrade azure-ai-ml azure-identity
      

      Zie De Python SDK v2 voor Azure Machine Learning installeren voor meer informatie.

Tip

Voor een volledige ontwikkelomgeving gebruikt u Visual Studio Code en de Azure Machine Learning-extensie om Azure Machine Learning-resources te beheren en machine learning-modellen te trainen.

Opslagplaats met kloonvoorbeelden

Als u de trainingsvoorbeelden wilt uitvoeren, kloont u eerst de opslagplaats met voorbeelden. Voor de CLI-voorbeelden gaat u naar de cli map. Ga voor de SDK-voorbeelden naar de sdk/python/assets/environment map:

git clone --depth 1 https://github.com/Azure/azureml-examples

Houd er rekening mee dat --depth 1 alleen de meest recente doorvoering naar de opslagplaats wordt gekloond, waardoor de bewerking wordt verkort.

Verbinding maken naar de werkruimte

Tip

Gebruik de onderstaande tabbladen om de methode te selecteren die u wilt gebruiken om met omgevingen te werken. Als u een tabblad selecteert, worden alle tabbladen in dit artikel automatisch naar hetzelfde tabblad overgeschakeld. U kunt op elk gewenst moment een ander tabblad selecteren.

Wanneer u de Azure CLI gebruikt, hebt u id-parameters nodig: een abonnement, resourcegroep en werkruimtenaam. Hoewel u deze parameters voor elke opdracht kunt opgeven, kunt u ook standaardwaarden instellen die worden gebruikt voor alle opdrachten. Gebruik de volgende opdrachten om standaardwaarden in te stellen. Vervang , <Azure Machine Learning workspace name>en <resource group> door <subscription ID>de waarden voor uw configuratie:

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Gecureerde omgevingen

Er zijn twee soorten omgevingen in Azure Machine Learning: gecureerde en aangepaste omgevingen. Gecureerde omgevingen zijn vooraf gedefinieerde omgevingen met populaire ML-frameworks en hulpprogramma's. Aangepaste omgevingen zijn door de gebruiker gedefinieerd en kunnen worden gemaakt via az ml environment create.

Gecureerde omgevingen worden geleverd door Azure Machine Learning en zijn standaard beschikbaar. Azure Machine Learning werkt deze omgevingen regelmatig bij met de nieuwste frameworkversieversies en onderhoudt ze voor bugfixes en beveiligingspatches. Ze worden ondersteund door Docker-installatiekopieën in de cache, waardoor de kosten voor taakvoorbereiding en modelimplementatietijd worden verminderd.

U kunt deze gecureerde omgevingen standaard gebruiken voor training of implementatie door te verwijzen naar een specifieke versie of nieuwste versie van de omgeving. Gebruik de volgende syntaxis: azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number> of azureml://registries/azureml/environment/<curated-environment-name>/labels/latest. U kunt ze ook gebruiken als referentie voor uw eigen aangepaste omgevingen door de Dockerfiles te wijzigen die zijn gekoppeld aan deze gecureerde omgevingen.

U kunt de set beschikbare gecureerde omgevingen bekijken in de gebruikersinterface van Azure Machine Learning-studio of met behulp van de CLI (v2) via az ml environment list.

Een aangepaste omgeving maken

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

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

Als u een omgeving wilt definiëren vanuit een Docker-installatiekopie, geeft u de installatiekopie-URI op van de installatiekopie die wordt gehost in een register, zoals Docker Hub of Azure Container Registry.

Het volgende voorbeeld is een YAML-specificatiebestand voor een omgeving die is gedefinieerd vanuit een Docker-installatiekopieën. Er wordt een installatiekopieën van de officiële PyTorch-opslagplaats op Docker Hub opgegeven via de image eigenschap in het YAML-bestand.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.

De omgeving maken:

az ml environment create --file assets/environment/docker-image.yml

Tip

Azure Machine Learning onderhoudt een set cpu- en GPU Ubuntu Linux-basisinstallatiekopieën met algemene systeemafhankelijkheden. De GPU-installatiekopieën bevatten bijvoorbeeld Miniconda, OpenMPI, CUDA, cuDNN en NCCL. U kunt deze installatiekopieën voor uw omgevingen gebruiken of hun bijbehorende Dockerfiles gebruiken als referentie bij het bouwen van uw eigen aangepaste installatiekopieën.

Zie de opslagplaats AzureML-Containers voor de set basisinstallatiekopieën en de bijbehorende Dockerfiles.

Een omgeving maken op basis van een Docker-buildcontext

In plaats van een omgeving te definiëren op basis van een vooraf gemaakte installatiekopieën, kunt u er ook een definiëren vanuit een Docker-buildcontext. Hiertoe geeft u de map op die fungeert als de buildcontext. Deze map moet een Dockerfile bevatten (niet groter dan 1 MB) en eventuele andere bestanden die nodig zijn om de installatiekopieën te bouwen.

Het volgende voorbeeld is een YAML-specificatiebestand voor een omgeving die is gedefinieerd vanuit een buildcontext. Het lokale pad naar de map buildcontext wordt opgegeven in het build.path veld en het relatieve pad naar het Dockerfile binnen die buildcontextmap wordt opgegeven in het build.dockerfile_path veld. Als build.dockerfile_path dit wordt weggelaten in het YAML-bestand, zoekt Azure Machine Learning naar een Dockerfile met de naam Dockerfile in de hoofdmap van de buildcontext.

In dit voorbeeld bevat de buildcontext een Dockerfile met de naam Dockerfile en een requirements.txt bestand waarnaar wordt verwezen in het Dockerfile voor het installeren van Python-pakketten.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-context-example
build:
  path: docker-contexts/python-and-pip

De omgeving maken:

az ml environment create --file assets/environment/docker-context.yml

Azure Machine Learning begint met het bouwen van de installatiekopieën vanuit de buildcontext wanneer de omgeving wordt gemaakt. U kunt de status van de build bewaken en de buildlogboeken bekijken in de gebruikersinterface van studio.

Een omgeving maken op basis van een conda-specificatie

U kunt een omgeving definiëren met behulp van een standaard conda YAML-configuratiebestand dat de afhankelijkheden voor de Conda-omgeving bevat. Zie Een omgeving handmatig maken voor informatie over deze standaardindeling.

U moet ook een docker-basisinstallatiekopieën opgeven voor deze omgeving. Azure Machine Learning bouwt de Conda-omgeving bovenop de opgegeven Docker-installatiekopieën. Als u enkele Python-afhankelijkheden in uw Docker-installatiekopie installeert, bestaan deze pakketten niet in de uitvoeringsomgeving, waardoor runtimefouten optreden. Azure Machine Learning bouwt standaard een Conda-omgeving met afhankelijkheden die u hebt opgegeven en voert de taak uit in die omgeving in plaats van python-bibliotheken te gebruiken die u op de basisinstallatiekopieën hebt geïnstalleerd.

Het volgende voorbeeld is een YAML-specificatiebestand voor een omgeving die is gedefinieerd vanuit een conda-specificatie. Hier wordt het relatieve pad naar het Conda-bestand van het YAML-bestand van de Azure Machine Learning-omgeving opgegeven via de conda_file eigenschap. U kunt de conda-specificatie ook inline definiëren met behulp van de conda_file eigenschap, in plaats van deze in een afzonderlijk bestand te definiëren.

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

De omgeving maken:

az ml environment create --file assets/environment/docker-image-plus-conda.yaml

Azure Machine Learning bouwt de uiteindelijke Docker-installatiekopieën op basis van deze omgevingsspecificatie wanneer de omgeving wordt gebruikt in een taak of implementatie. U kunt ook handmatig een build van de omgeving activeren in de gebruikersinterface van studio.

Omgevingen beheren

Met de SDK en CLI (v2) kunt u ook de levenscyclus van uw Azure Machine Learning-omgevingsassets beheren.

List

Geef alle omgevingen in uw werkruimte weer:

az ml environment list

Geef alle omgevingsversies onder een bepaalde naam weer:

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

Weergeven

De details van een specifieke omgeving ophalen:

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

Bijwerken

Veranderlijke eigenschappen van een specifieke omgeving bijwerken:

az ml environment update --name docker-image-example --version 1 --set description="This is an updated description."

Belangrijk

Alleen voor omgevingen description en tags kan deze worden bijgewerkt. Alle andere eigenschappen zijn onveranderbaar; als u een van deze eigenschappen moet wijzigen, moet u een nieuwe versie van de omgeving maken.

Archiveren

Als u een omgeving archivert, wordt deze standaard verborgen in lijstquery's (az ml environment list). U kunt nog steeds verwijzen naar en een gearchiveerde omgeving in uw werkstromen gebruiken. U kunt alle versies van een omgeving of alleen een specifieke versie archiveren.

Als u geen versie opgeeft, worden alle versies van de omgeving onder die naam gearchiveerd. Als u een nieuwe omgevingsversie maakt onder een gearchiveerde omgevingscontainer, wordt die nieuwe versie ook automatisch ingesteld als gearchiveerd.

Alle versies van een omgeving archiveren:

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

Een specifieke omgevingsversie archiveren:

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

Omgevingen gebruiken voor training

Als u een aangepaste omgeving wilt gebruiken voor een trainingstaak, geeft u het environment veld van de YAML-taakconfiguratie op. U kunt verwijzen naar een bestaande geregistreerde Azure Machine Learning-omgeving via environment: azureml:<environment-name>:<environment-version> of environment: azureml:<environment-name>@latest (om te verwijzen naar de nieuwste versie van een omgeving) of een inline omgevingsspecificatie definiëren. Als u een omgeving inline definieert, geeft u de en version velden niet name op, omdat deze omgevingen worden behandeld als 'niet-geregistreerde' omgevingen en niet worden bijgehouden in uw omgevingsassetregister.

Wanneer u een trainingstaak indient, kan het bouwen van een nieuwe omgeving enkele minuten duren. De duur is afhankelijk van de grootte van de vereiste afhankelijkheden. De omgevingen worden in de cache opgeslagen door de service. Zolang de omgevingsdefinitie ongewijzigd blijft, krijgt u slechts één keer de volledige installatietijd.


Zie Modellen trainen voor meer informatie over het gebruik van omgevingen in taken.

Omgevingen gebruiken voor modelimplementaties

U kunt ook omgevingen gebruiken voor uw modelimplementaties voor zowel online als batchgewijs scoren. Geef hiervoor het environment veld op in de YAML-implementatieconfiguratie.

Zie Een machine learning-model implementeren en beoordelen met behulp van een online-eindpunt voor meer informatie over het gebruik van omgevingen in implementaties.

Volgende stappen