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-afbeelding 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
Een Azure Machine Learning-werkruimte. Zie De werkruimte maken voor instructies voor het maken van een werkruimte.
De Azure CLI en de
ml
extensie of de Azure Machine Learning Python SDK v2:Zie CLI (v2) installeren en instellen om de Azure CLI en de
ml
extensie te installeren.In de voorbeelden in dit artikel wordt ervan uitgegaan dat u een Bash-shell of een compatibele shell gebruikt. U kunt bijvoorbeeld een shell gebruiken op een Linux-systeem of Windows-subsysteem voor Linux.
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
De --depth 1
-parameteroptie kloont alleen de meest recente doorvoering naar de opslagplaats, waardoor de tijd om de bewerking te voltooien 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 , <subscription ID>
en <Azure Machine Learning workspace name>
door <resource group>
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 maken gebruik van gecachete Docker-afbeeldingen, waardoor de kosten voor taakvoorbereiding en de tijd voor modelimplementatie 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 met gecureerde omgevingen in de CLI of SDK werkt, begint de omgevingsnaam met AzureML-
gevolgd door de naam van de gecureerde omgeving. Wanneer u 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-image, een Docker-buildcontext en een conda-specificatie met een Docker-image.
Een omgeving maken op basis van een Docker-image
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-bestand voor een omgeving die is gedefinieerd op basis van een Docker-image. Er wordt een installatiekopie van de officiële PyTorch-repository 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.
Om de omgeving te creëren:
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 AzureML-Containers repository voor de set van basiskopieën en hun bijbehorende Dockerfiles.
Een omgeving maken op basis van een Docker-buildcontext
In plaats van een omgeving te definiëren op basis van een vooraf gebouwde afbeelding, kunt u er ook een definiëren vanuit een Docker-build context. Hiertoe geeft u de map op die fungeert als de buildcontext. Deze directory moet een Dockerfile bevatten (niet groter dan 1 MB) en alle andere bestanden die nodig zijn om de image 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
wordt weggelaten in het YAML-bestand, zoekt Azure Machine Learning naar een Dockerfile met de naam Dockerfile
in de rootmap 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
Om de omgeving te creëren:
az ml environment create --file assets/environment/docker-context.yml
Azure Machine Learning begint met het bouwen van de image vanuit de buildcontext wanneer de omgeving wordt gecreëerd. 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 basis Docker-image opgeven voor deze omgeving. Azure Machine Learning bouwt de conda-omgeving bovenop de aangeleverde Docker-image. 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.
Om de omgeving te creëren:
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.
Lijst
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
Voor omgevingen kunnen alleen description
en tags
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 archiveert, wordt de in de cache opgeslagen afbeelding 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, specificeer dan de velden name
en version
niet, 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.
Voor meer informatie over het gebruik van omgevingen in taken, zie Modellen trainen.
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.