Bestaande pijplijntaken implementeren op batch-eindpunten

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

Met Batch-eindpunten kunt u pijplijnonderdelen implementeren, wat een handige manier biedt om pijplijnen in Azure Machine Learning operationeel te maken. Batch-eindpunten accepteren pijplijnonderdelen voor implementatie. Als u echter al een pijplijntaak hebt die succesvol wordt uitgevoerd, kan Azure Machine Learning die taak accepteren als invoer voor uw batch-eindpunt en het pijplijnonderdeel automatisch voor u maken. In dit artikel leert u hoe u uw bestaande pijplijntaak gebruikt als invoer voor batchimplementatie.

U leert het volgende:

  • De pijplijntaak uitvoeren en maken die u wilt implementeren
  • Een batchimplementatie maken op basis van de bestaande taak
  • De implementatie testen

Over dit voorbeeld

In dit voorbeeld gaan we een pijplijn implementeren die bestaat uit een eenvoudige opdrachttaak waarmee 'hallo wereld!' wordt afgedrukt. In plaats van het pijplijnonderdeel vóór de implementatie te registreren, geven we een bestaande pijplijntaak aan die moet worden gebruikt voor implementatie. Azure Machine Learning maakt vervolgens automatisch het pijplijnonderdeel en implementeert het als een pijplijnonderdeel voor batcheindpunten.

Het voorbeeld in dit artikel is gebaseerd op codevoorbeelden in de opslagplaats azureml-examples . Als u de opdrachten lokaal wilt uitvoeren zonder YAML en andere bestanden te hoeven kopiëren/plakken, kloont u eerst de opslagplaats en wijzigt u vervolgens mappen in de map:

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

De bestanden voor dit voorbeeld bevinden zich in:

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

Vereisten

Voordat u de stappen in dit artikel volgt, moet u ervoor zorgen dat u over de volgende vereisten beschikt:

  • Een Azure-abonnement. Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint. Probeer de gratis of betaalde versie van Azure Machine Learning.

  • Een Azure Machine Learning-werkruimte. Als u nog geen werkruimte hebt, gebruikt u de stappen in het artikel Azure Machine Learning-werkruimten beheren om er een te maken.

  • Zorg ervoor dat u over de volgende machtigingen in de werkruimte beschikt:

    • Batch-eindpunten en -implementaties maken of beheren: gebruik een eigenaar, inzender of aangepaste rol die dit toestaat Microsoft.MachineLearningServices/workspaces/batchEndpoints/*.

    • ARM-implementaties maken in de resourcegroep van de werkruimte: gebruik een eigenaar, inzender of aangepaste rol die het mogelijk maakt Microsoft.Resources/deployments/write in de resourcegroep waarin de werkruimte wordt geïmplementeerd.

  • U moet de volgende software installeren om te kunnen werken met Azure Machine Learning:

    De Azure CLI en de mlextensie voor Azure Machine Learning.

    az extension add -n ml
    

    Notitie

    Implementaties van pijplijnonderdelen voor Batch-eindpunten zijn geïntroduceerd in versie 2.7 van de ml extensie voor Azure CLI. Gebruik az extension update --name ml deze om de laatste versie ervan op te halen.

Verbinding maken met uw werkruimte

De werkruimte is de resource op het hoogste niveau voor Azure Machine Learning en biedt een gecentraliseerde werkplek met alle artefacten die u maakt in Azure Machine Learning. In deze sectie maken we verbinding met de werkruimte waarin u implementatietaken uitvoert.

Geef de waarden voor uw abonnements-id, werkruimte, locatie en resourcegroep door in de volgende code:

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

Voer de pijplijntaak uit die u wilt implementeren

In deze sectie beginnen we met het uitvoeren van een pijplijntaak:

Het volgende pipeline-job.yml bestand bevat de configuratie voor de pijplijntaak:

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

Maak de pijplijntaak:

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

Een batch-eindpunt maken

Voordat we de pijplijntaak implementeren, moeten we een batch-eindpunt implementeren om de implementatie te hosten.

  1. Geef een naam op voor het eindpunt. De naam van een batch-eindpunt moet uniek zijn in elke regio, omdat de naam wordt gebruikt om de aanroep-URI samen te stellen. Voeg eventuele volgtekens toe aan de naam die in de volgende code is opgegeven om de uniekheid te garanderen.

    ENDPOINT_NAME="hello-batch"
    
  2. Configureer het eindpunt:

    Het endpoint.yml bestand bevat de configuratie van het eindpunt.

    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. Maak het eindpunt:

    az ml batch-endpoint create --name $ENDPOINT_NAME  -f endpoint.yml
    
  4. Voer een query uit op de eindpunt-URI:

    az ml batch-endpoint show --name $ENDPOINT_NAME
    

De pijplijntaak implementeren

Om het pijplijnonderdeel te implementeren, moeten we een batchimplementatie maken op basis van de bestaande taak.

  1. We moeten Azure Machine Learning de naam vertellen van de taak die we willen implementeren. In ons geval wordt die taak aangegeven in de volgende variabele:

    echo $JOB_NAME
    
  2. Configureer de implementatie.

    Het deployment-from-job.yml bestand bevat de configuratie van de implementatie. U ziet hoe we de sleutel job_definition gebruiken in plaats van aan te geven dat deze implementatie wordt gemaakt op basis van component een pijplijntaak:

    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
    

    Tip

    Bij deze configuratie wordt ervan uitgegaan dat u een rekencluster hebt met de naam batch-cluster. U kunt deze waarde vervangen door de naam van uw cluster.

  3. De implementatie maken:

    Voer de volgende code uit om een batch-implementatie te maken onder het batch-eindpunt en deze in te stellen als de standaardimplementatie.

    az ml batch-deployment create --endpoint $ENDPOINT_NAME --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
    

    Tip

    Let op het gebruik van --set job_definition=azureml:$JOB_NAME. Omdat taaknamen uniek zijn, wordt de opdracht --set hier gebruikt om de naam van de taak te wijzigen wanneer u deze uitvoert in uw werkruimte.

  4. Uw implementatie is klaar voor gebruik.

De implementatie testen

Zodra de implementatie is gemaakt, kunt u taken ontvangen. U kunt de standaardimplementatie als volgt aanroepen:

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

U kunt de voortgang van de voorstelling controleren en de logboeken streamen met behulp van:

az ml job stream -n $JOB_NAME

Resources opschonen

Wanneer u klaar bent, verwijdert u de gekoppelde resources uit de werkruimte:

Voer de volgende code uit om het batch-eindpunt en de onderliggende implementatie te verwijderen. --yes wordt gebruikt om de verwijdering te bevestigen.

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

Volgende stappen