Hantera Azure Mašinsko učenje-miljöer med CLI & SDK (v2)
GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)
Azure Machine Learning-miljöer definierar körningsmiljöerna för dina jobb eller distributioner och kapslar in beroendena för koden. Azure Mašinsko učenje använder miljöspecifikationen för att skapa Den Docker-container som tränings- eller poängkoden körs i på det angivna beräkningsmålet. Du kan definiera en miljö från en conda-specifikation, Docker-avbildning eller Docker-byggkontext.
I den här artikeln får du lära dig hur du skapar och hanterar Azure Mašinsko učenje miljöer med hjälp av SDK och CLI (v2).
Förutsättningar
Innan du följer stegen i den här artikeln kontrollerar du att du har följande förutsättningar:
En Azure Machine Learning-arbetsyta. Om du inte har någon använder du stegen i artikeln Snabbstart: Skapa arbetsyteresurser för att skapa en.
Azure CLI och
ml
tillägget eller Azure Mašinsko učenje Python SDK v2:Information om hur du installerar Azure CLI och tillägget finns i Installera, konfigurera och använda CLI (v2).
Viktigt!
CLI-exemplen i den här artikeln förutsätter att du använder Bash-gränssnittet (eller det kompatibla). Till exempel från ett Linux-system eller Windows podsistem za Linux.
Om du vill installera Python SDK v2 använder du följande kommando:
pip install azure-ai-ml azure-identity
Om du vill uppdatera en befintlig installation av SDK:et till den senaste versionen använder du följande kommando:
pip install --upgrade azure-ai-ml azure-identity
Mer information finns i Installera Python SDK v2 för Azure Mašinsko učenje.
Dricks
För en komplett utvecklingsmiljö använder du Visual Studio Code och Azure Mašinsko učenje-tillägget för att hantera Azure Mašinsko učenje resurser och träna maskininlärningsmodeller.
Lagringsplats för klonexempel
Om du vill köra träningsexemplen klonar du först exempellagringsplatsen. För CLI-exemplen ändrar du till cli
katalogen. För SDK-exemplen sdk/python/assets/environment
ändrar du till katalogen:
git clone --depth 1 https://github.com/Azure/azureml-examples
Observera att --depth 1
endast klonar den senaste incheckningen till lagringsplatsen, vilket minskar tiden för att slutföra åtgärden.
Ansluta till arbetsytan
Dricks
Använd följande flikar för att välja den metod som du vill använda för att arbeta med miljöer. Om du väljer en flik växlar du automatiskt alla flikar i den här artikeln till samma flik. Du kan välja en annan flik när som helst.
När du använder Azure CLI behöver du identifierarparametrar – en prenumeration, resursgrupp och arbetsytenamn. Du kan ange dessa parametrar för varje kommando, men du kan också ange standardvärden som används för alla kommandon. Använd följande kommandon för att ange standardvärden. Ersätt <subscription ID>
, <Azure Machine Learning workspace name>
och <resource group>
med värdena för konfigurationen:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Organiserade miljöer
Det finns två typer av miljöer i Azure Mašinsko učenje: utvalda och anpassade miljöer. Utvalda miljöer är fördefinierade miljöer som innehåller populära ML-ramverk och verktyg. Anpassade miljöer är användardefinierade och kan skapas via az ml environment create
.
Utvalda miljöer tillhandahålls av Azure Mašinsko učenje och är tillgängliga som standard. Azure Mašinsko učenje uppdaterar rutinmässigt dessa miljöer med de senaste versionerna av ramverket och underhåller dem för felkorrigeringar och säkerhetskorrigeringar. De backas upp av cachelagrade Docker-avbildningar, vilket minskar kostnaden för jobbförberedelse och modelldistributionstiden.
Du kan använda dessa utvalda miljöer direkt för träning eller distribution genom att referera till en specifik version eller den senaste versionen av miljön. Använd följande syntax: azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number>
eller azureml://registries/azureml/environment/<curated-environment-name>/labels/latest
. Du kan också använda dem som referens för dina egna anpassade miljöer genom att ändra De Dockerfiles som stöder dessa kurerade miljöer.
Du kan se uppsättningen med tillgängliga utvalda miljöer i Användargränssnittet för Azure Mašinsko učenje Studio eller med hjälp av CLI (v2) via az ml environment list
.
Dricks
När du arbetar med utvalda miljöer i CLI eller SDK börjar miljönamnet med AzureML-
följt av namnet på den kurerade miljön. När du använder Azure Mašinsko učenje Studio har de inte det här prefixet. Orsaken till den här skillnaden är att studiogränssnittet visar utvalda och anpassade miljöer på separata flikar, så prefixet är inte nödvändigt. CLI och SDK har inte den här separationen, så prefixet används för att skilja mellan kurerade och anpassade miljöer.
Skapa en anpassad miljö
Du kan definiera en miljö från en Docker-avbildning, en Docker-byggkontext och en conda-specifikation med Docker-avbildning.
Skapa en miljö från en Docker-avbildning
Om du vill definiera en miljö från en Docker-avbildning anger du avbildnings-URI:n för avbildningen som finns i ett register, till exempel Docker Hub eller Azure Container Registry.
Följande exempel är en YAML-specifikationsfil för en miljö som definierats från en Docker-avbildning. En avbildning från den officiella PyTorch-lagringsplatsen på Docker Hub anges via image
egenskapen i YAML-filen.
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.
Så här skapar du miljön:
az ml environment create --file assets/environment/docker-image.yml
Dricks
Azure Mašinsko učenje underhåller en uppsättning CPU- och GPU Ubuntu Linux-baserade basavbildningar med vanliga systemberoenden. GPU-avbildningarna innehåller till exempel Miniconda, OpenMPI, CUDA, cuDNN och NCCL. Du kan använda dessa avbildningar för dina miljöer eller använda motsvarande Dockerfiles som referens när du skapar egna anpassade avbildningar.
För uppsättningen med basavbildningar och deras motsvarande Dockerfiles, se lagringsplatsen AzureML-Containers.
Skapa en miljö från en Docker-byggkontext
I stället för att definiera en miljö från en fördefinierad avbildning kan du också definiera en från en Docker-byggkontext. Det gör du genom att ange den katalog som fungerar som byggkontext. Den här katalogen bör innehålla en Dockerfile (inte större än 1 MB) och andra filer som behövs för att skapa avbildningen.
Följande exempel är en YAML-specifikationsfil för en miljö som definierats från en byggkontext. Den lokala sökvägen till mappen för byggkontext anges i build.path
fältet och den relativa sökvägen till Dockerfile i den kompileringskontextmappen build.dockerfile_path
anges i fältet . Om build.dockerfile_path
utelämnas i YAML-filen letar Azure Mašinsko učenje efter en Dockerfile med namnet Dockerfile
i roten i byggkontexten.
I det här exemplet innehåller byggkontexten en Dockerfile med namnet Dockerfile
och en requirements.txt
fil som refereras i Dockerfile för att installera Python-paket.
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-context-example
build:
path: docker-contexts/python-and-pip
Så här skapar du miljön:
az ml environment create --file assets/environment/docker-context.yml
Azure Mašinsko učenje börjar skapa avbildningen från byggkontexten när miljön skapas. Du kan övervaka status för bygget och visa byggloggarna i studiogränssnittet.
Skapa en miljö från en conda-specifikation
Du kan definiera en miljö med hjälp av en standardkonfigurationsfil för CONDA YAML som innehåller beroenden för conda-miljön. Mer information om det här standardformatet finns i Skapa en miljö manuellt .
Du måste också ange en docker-basavbildning för den här miljön. Azure Mašinsko učenje skapar conda-miljön ovanpå den Docker-avbildning som tillhandahålls. Om du installerar vissa Python-beroenden i Docker-avbildningen finns inte dessa paket i körningsmiljön, vilket orsakar körningsfel. Som standard skapar Azure Mašinsko učenje en Conda-miljö med beroenden som du har angett och kör jobbet i den miljön i stället för att använda python-bibliotek som du har installerat på basavbildningen.
Följande exempel är en YAML-specifikationsfil för en miljö som definierats från en conda-specifikation. Här anges den relativa sökvägen till conda-filen från YAML-filen för Azure Mašinsko učenje-miljön via conda_file
egenskapen . Du kan också definiera conda-specifikationen conda_file
infogad med hjälp av egenskapen i stället för att definiera den i en separat fil.
$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.
Så här skapar du miljön:
az ml environment create --file assets/environment/docker-image-plus-conda.yaml
Azure Mašinsko učenje skapar den sista Docker-avbildningen från den här miljöspecifikationen när miljön används i ett jobb eller en distribution. Du kan också utlösa en version av miljön manuellt i studiogränssnittet.
Hantera miljöer
Med SDK och CLI (v2) kan du också hantera livscykeln för dina Azure Mašinsko učenje miljötillgångar.
List
Visa en lista över alla miljöer på din arbetsyta:
az ml environment list
Visa en lista över alla miljöversioner under ett givet namn:
az ml environment list --name docker-image-example
Visa
Hämta information om en specifik miljö:
az ml environment show --name docker-image-example --version 1
Uppdatera
Uppdatera föränderliga egenskaper för en specifik miljö:
az ml environment update --name docker-image-example --version 1 --set description="This is an updated description."
Viktigt!
Endast för miljöer description
och tags
kan uppdateras. Alla andra egenskaper är oföränderliga. om du behöver ändra någon av dessa egenskaper bör du skapa en ny version av miljön.
Arkiv
Om du arkiverar en miljö döljs den som standard från listfrågor (az ml environment list
). Du kan fortfarande fortsätta att referera till och använda en arkiverad miljö i dina arbetsflöden. Du kan arkivera antingen alla versioner av en miljö eller bara en viss version.
Om du inte anger en version arkiveras alla versioner av miljön under det angivna namnet. Om du skapar en ny miljöversion under en arkiverad miljöcontainer anges även den nya versionen automatiskt som arkiverad.
Arkivera alla versioner av en miljö:
az ml environment archive --name docker-image-example
Arkivera en specifik miljöversion:
az ml environment archive --name docker-image-example --version 1
Viktigt!
När du arkiverar en miljös version tas inte den cachelagrade avbildningen bort i containerregistret. Om du vill ta bort den cachelagrade avbildningen som är associerad med en specifik miljö kan du använda kommandot az acr repository delete på miljöns associerade lagringsplats.
Använda miljöer för träning
Om du vill använda en anpassad miljö för ett träningsjobb anger du environment
fältet för jobbets YAML-konfiguration. Du kan antingen referera till en befintlig registrerad Azure Mašinsko učenje-miljö via environment: azureml:<environment-name>:<environment-version>
eller environment: azureml:<environment-name>@latest
(för att referera till den senaste versionen av en miljö) eller definiera en miljöspecifikation infogad. Om du definierar en infogad miljö ska du inte ange fälten name
och version
eftersom dessa miljöer behandlas som "oregistrerade" miljöer och inte spåras i ditt miljötillgångsregister.
När du skickar ett utbildningsjobb kan det ta flera minuter att skapa en ny miljö. Varaktigheten beror på storleken på de nödvändiga beroendena. Miljöerna cachelagras av tjänsten. Så länge miljödefinitionen förblir oförändrad ådrar du dig den fullständiga installationstiden bara en gång.
Mer information om hur du använder miljöer i jobb finns i Träna modeller.
Använda miljöer för modelldistributioner
Du kan också använda miljöer för dina modelldistributioner för både online- och batchbedömning. Det gör du genom att ange fältet environment
i YAML-konfigurationen för distribution.
Mer information om hur du använder miljöer i distributioner finns i Distribuera och poängsätta en maskininlärningsmodell med hjälp av en onlineslutpunkt.