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 met de werkruimte
Tip
Gebruik de volgende 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
.
Tip
Wanneer u werkt met gecureerde omgevingen in de CLI of SDK, begint de omgevingsnaam met AzureML-
gevolgd door de naam van de gecureerde omgeving. Wanneer u de Azure Machine Learning-studio gebruikt, hebben ze dit voorvoegsel niet. De reden voor dit verschil is dat de gebruikersinterface van studio gecureerde en aangepaste omgevingen weergeeft op afzonderlijke tabbladen, dus het voorvoegsel is niet nodig. De CLI en SDK hebben deze scheiding niet, dus het voorvoegsel wordt gebruikt om onderscheid te maken tussen gecureerde en aangepaste omgevingen.
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 voor 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
Belangrijk
Als u de versie van een omgeving archivert, wordt de in de cache opgeslagen installatiekopieën in het containerregister niet verwijderd. Als u de afbeelding in de cache wilt verwijderen die is gekoppeld aan een specifieke omgeving, kunt u de opdracht az acr repository delete gebruiken in de gekoppelde opslagplaats van de omgeving.
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.