Dela via


Distribuera befintliga pipelinejobb till batchslutpunkter

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

Med Batch-slutpunkter kan du distribuera pipelinekomponenter, vilket ger ett bekvämt sätt att operationalisera pipelines i Azure Mašinsko učenje. Batch-slutpunkter accepterar pipelinekomponenter för distribution. Men om du redan har ett pipelinejobb som körs kan Azure Mašinsko učenje acceptera jobbet som indata till batchslutpunkten och skapa pipelinekomponenten automatiskt åt dig. I den här artikeln får du lära dig hur du använder ditt befintliga pipelinejobb som indata för batchdistribution.

Du lär dig att:

  • Kör och skapa det pipelinejobb som du vill distribuera
  • Skapa en batchdistribution från det befintliga jobbet
  • Testa distributionen

Om det här exemplet

I det här exemplet ska vi distribuera en pipeline som består av ett enkelt kommandojobb som skriver ut "hello world!". I stället för att registrera pipelinekomponenten före distributionen anger vi ett befintligt pipelinejobb som ska användas för distribution. Azure Mašinsko učenje skapar sedan pipelinekomponenten automatiskt och distribuerar den som en distribution av en batchslutpunktspipelinekomponent.

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ö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>

Kör pipelinejobbet som du vill distribuera

I det här avsnittet börjar vi med att köra ett pipelinejobb:

Följande pipeline-job.yml fil innehåller konfigurationen för pipelinejobbet:

pipeline-job.yml

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline

experiment_name: hello-pipeline-batch
display_name: hello-pipeline-batch-job
description: This job demonstrates how to run the a pipeline component in a pipeline job. You can use this example to test a component in an standalone job before deploying it in an endpoint.

compute: batch-cluster
component: hello-component/hello.yml

Skapa pipelinejobbet:

JOB_NAME=$(az ml job create -f pipeline-job.yml --query name -o tsv)

Skapa en batchslutpunkt

Innan vi distribuerar pipelinejobbet måste vi distribuera en batchslutpunkt som värd för distributionen.

  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 pipelinejobbet

För att distribuera pipelinekomponenten måste vi skapa en batchdistribution från det befintliga jobbet.

  1. Vi måste berätta för Azure Mašinsko učenje namnet på det jobb som vi vill distribuera. I vårt fall anges det jobbet i följande variabel:

    echo $JOB_NAME
    
  2. Konfigurera distributionen.

    Filen deployment-from-job.yml innehåller distributionens konfiguration. Observera hur vi använder nyckeln job_definition i stället för component för att ange att den här distributionen skapas från ett pipelinejobb:

    deployment-from-job.yml

    $schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
    name: hello-batch-from-job
    endpoint_name: hello-pipeline-batch
    type: pipeline
    job_definition: azureml:job_name_placeholder
    settings:
        continue_on_step_failure: false
        default_compute: batch-cluster
    

    Dricks

    Den här konfigurationen förutsätter att du har ett beräkningskluster med namnet batch-cluster. Du kan ersätta det här värdet med namnet på klustret.

  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 --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
    

    Dricks

    Observera användningen av --set job_definition=azureml:$JOB_NAME. Eftersom jobbnamnen är unika används kommandot --set här för att ändra namnet på jobbet när du kör det på arbetsytan.

  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)

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

Nästa steg