Dela via


Distribuera pipelines med batchslutpunkter

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

Du kan distribuera pipelinekomponenter under en batchslutpunkt, vilket ger ett bekvämt sätt att operationalisera dem i Azure Mašinsko učenje. I den här artikeln får du lära dig hur du skapar en batchdistribution som innehåller en enkel pipeline. Du lär dig att:

  • Skapa och registrera en pipelinekomponent
  • Skapa en batchslutpunkt och distribuera en pipelinekomponent
  • Testa distributionen

Om det här exemplet

I det här exemplet ska vi distribuera en pipelinekomponent som består av ett enkelt kommandojobb som skriver ut "hello world!". Den här komponenten kräver inga indata eller utdata och är det enklaste pipelinedistributionsscenariot.

Exemplet i den här artikeln baseras på kodexempel som finns på lagringsplatsen azureml-examples . Om du vill köra kommandona lokalt utan att behöva kopiera/klistra in YAML och andra filer klonar du först lagringsplatsen och ändrar sedan kataloger till mappen:

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

Filerna för det här exemplet finns i:

cd endpoints/batch/deploy-pipelines/hello-batch

Följ med i Jupyter Notebooks

Du kan följa med i Python SDK-versionen av det här exemplet genom att öppna notebook-filen sdk-deploy-and-test.ipynb på den klonade lagringsplatsen.

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-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar. Prova den kostnadsfria eller betalda versionen av Azure Mašinsko učenje.

  • En Azure Machine Learning-arbetsyta. Om du inte har någon använder du stegen i artikeln Hantera Azure Mašinsko učenje-arbetsytor för att skapa en.

  • Kontrollera att du har följande behörigheter på arbetsytan:

    • Skapa eller hantera batchslutpunkter och distributioner: Använd en ägare, deltagare eller anpassad roll som tillåter Microsoft.MachineLearningServices/workspaces/batchEndpoints/*.

    • Skapa ARM-distributioner i arbetsytans resursgrupp: Använd en roll som ägare, deltagare eller anpassad som tillåter Microsoft.Resources/deployments/write i den resursgrupp där arbetsytan distribueras.

  • Du måste installera följande programvara för att arbeta med Azure Mašinsko učenje:

    Azure CLI och ml tillägget för Azure Mašinsko učenje.

    az extension add -n ml
    

    Kommentar

    Distributioner av pipelinekomponenter för Batch-slutpunkter introducerades i version 2.7 av ml tillägget för Azure CLI. Använd az extension update --name ml för att hämta den senaste versionen av den.

Anslut till din arbetsyta

Arbetsytan är resursen på den översta nivån i Azure Machine Learning, och är en central plats där du kan arbeta med alla artefakter du skapar när du använder Azure Machine Learning. I det här avsnittet ansluter vi till arbetsytan där du ska utföra distributionsuppgifter.

Skicka in värdena för ditt prenumerations-ID, arbetsyta, plats och resursgrupp i följande kod:

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

Skapa pipelinekomponenten

Batch-slutpunkter kan distribuera antingen modeller eller pipelinekomponenter. Pipelinekomponenter kan återanvändas och du kan effektivisera MLOps-metoden med hjälp av delade register för att flytta dessa komponenter från en arbetsyta till en annan.

Pipelinekomponenten i det här exemplet innehåller ett enda steg som bara skriver ut ett "hello world"-meddelande i loggarna. Det kräver inga indata eller utdata.

Filen hello-component/hello.yml innehåller konfigurationen för pipelinekomponenten:

hello-component/hello.yml

$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponent.schema.json
name: hello_batch
display_name: Hello Batch component
version: 1
type: pipeline
jobs:
  main_job:
    type: command
    component:
      code: src
      environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
      command: >-
        python hello.py

Registrera komponenten:

az ml component create -f hello-component/hello.yml

Skapa en batchslutpunkt

  1. Ange ett namn för slutpunkten. Namnet på en batchslutpunkt måste vara unikt i varje region eftersom namnet används för att konstruera anrops-URI:n. För att säkerställa unikhet lägger du till eventuella avslutande tecken i det namn som anges i följande kod.

    ENDPOINT_NAME="hello-batch"
    
  2. Konfigurera slutpunkten:

    Filen endpoint.yml innehåller slutpunktens konfiguration.

    endpoint.yml

    $schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json
    name: hello-batch
    description: A hello world endpoint for component deployments.
    auth_mode: aad_token
    
  3. Skapa slutpunkten:

    az ml batch-endpoint create --name $ENDPOINT_NAME  -f endpoint.yml
    
  4. Fråga slutpunkts-URI:n:

    az ml batch-endpoint show --name $ENDPOINT_NAME
    

Distribuera pipelinekomponenten

För att distribuera pipelinekomponenten måste vi skapa en batchdistribution. En distribution är en uppsättning resurser som krävs för att vara värd för den tillgång som utför det faktiska arbetet.

  1. Skapa ett beräkningskluster. Batchslutpunkter och distributioner körs på beräkningskluster. De kan köras på valfritt Azure-Mašinsko učenje beräkningskluster som redan finns på arbetsytan. Därför kan flera batchdistributioner dela samma beräkningsinfrastruktur. I det här exemplet ska vi arbeta med ett Azure Mašinsko učenje beräkningskluster med namnet batch-cluster. Nu ska vi kontrollera att beräkningen finns på arbetsytan eller skapa den på annat sätt.

    az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
    
  2. Konfigurera distributionen:

    Filen deployment.yml innehåller distributionens konfiguration. Du kan kontrollera YAML-schemat för den fullständiga batchslutpunkten för extra egenskaper.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
    name: hello-batch-dpl
    endpoint_name: hello-pipeline-batch
    type: pipeline
    component: azureml:hello_batch@latest
    settings:
        default_compute: batch-cluster
    
  3. Skapa distributionen:

    Kör följande kod för att skapa en batchdistribution under batchslutpunkten och ange den som standarddistribution.

    az ml batch-deployment create --endpoint $ENDPOINT_NAME -f deployment.yml --set-default
    

    Dricks

    Observera att flaggan används --set-default för att ange att den nya distributionen nu är standard.

  4. Distributionen är klar för användning.

Testa distributionen

När distributionen har skapats är den redo att ta emot jobb. Du kan anropa standarddistributionen på följande sätt:

JOB_NAME=$(az ml batch-endpoint invoke -n $ENDPOINT_NAME --query name -o tsv)

Dricks

I det här exemplet har pipelinen inte indata eller utdata. Men om pipelinekomponenten kräver vissa kan de anges vid anrop. Mer information om hur du anger indata och utdata finns i Skapa jobb och indata för batchslutpunkter eller i självstudien Så här distribuerar du en pipeline för att utföra batchbedömning med förbearbetning (förhandsversion).

Du kan övervaka förloppet för showen och strömma loggarna med hjälp av:

az ml job stream -n $JOB_NAME

Rensa resurser

När du är klar tar du bort de associerade resurserna från arbetsytan:

Kör följande kod för att ta bort batchslutpunkten och dess underliggande distribution. --yes används för att bekräfta borttagningen.

az ml batch-endpoint delete -n $ENDPOINT_NAME --yes

(Valfritt) Ta bort beräkning, såvida du inte planerar att återanvända beräkningsklustret med senare distributioner.

az ml compute delete -n batch-cluster

Nästa steg