Hantera Azure Machine Learning-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 Machine Learning använder miljöspecifikationen för att skapa Den Docker-container som din tränings- eller poängkod 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 Machine Learning-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:

Dricks

För en komplett utvecklingsmiljö använder du Visual Studio Code och Azure Machine Learning-tillägget för att hantera Azure Machine Learning-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.

Anslut 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 Machine Learning: 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 Machine Learning och är tillgängliga som standard. Azure Machine Learning 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 kurerade miljöer i Azure Machine Learning-studio användargränssnittet, eller genom att använda 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 Machine Learning-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 Machine Learning har 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 Machine Learning 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 Machine Learning 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 Machine Learning 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 Machine Learning 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 Machine Learning-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 Machine Learning 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 Machine Learning-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

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 Machine Learning-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.

Nästa steg