Pijplijnen implementeren met batch-eindpunten

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

U kunt pijplijnonderdelen onder een batch-eindpunt implementeren, zodat u ze op een handige manier kunt operationeel maken in Azure Machine Learning. In dit artikel leert u hoe u een batchimplementatie maakt die een eenvoudige pijplijn bevat. U leert het volgende:

  • Een pijplijnonderdeel maken en registreren
  • Een batch-eindpunt maken en een pijplijnonderdeel implementeren
  • De implementatie testen

Over dit voorbeeld

In dit voorbeeld gaan we een pijplijnonderdeel implementeren dat bestaat uit een eenvoudige opdrachttaak waarmee 'hallo wereld!' wordt afgedrukt. Dit onderdeel vereist geen invoer of uitvoer en is het eenvoudigste implementatiescenario voor pijplijnen.

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

Volgen in Jupyter-notebooks

U kunt de Python SDK-versie van dit voorbeeld volgen door het notebook sdk-deploy-and-test.ipynb te openen in de gekloonde opslagplaats.

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>

Het pijplijnonderdeel maken

Batch-eindpunten kunnen modellen of pijplijnonderdelen implementeren. Pijplijnonderdelen zijn herbruikbaar en u kunt uw MLOps-praktijk stroomlijnen door gedeelde registers te gebruiken om deze onderdelen van de ene werkruimte naar de andere te verplaatsen.

Het pijplijnonderdeel in dit voorbeeld bevat één stap waarmee alleen een 'hallo wereld'-bericht in de logboeken wordt afgedrukt. Er zijn geen invoer- of uitvoergegevens vereist.

Het hello-component/hello.yml bestand bevat de configuratie voor het pijplijnonderdeel:

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

Registreer het onderdeel:

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

Een batch-eindpunt maken

  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
    

Het pijplijnonderdeel implementeren

Om het pijplijnonderdeel te implementeren, moeten we een batchimplementatie maken. Een implementatie is een set resources die vereist is voor het hosten van de asset die het werkelijke werk uitvoert.

  1. Maak een rekencluster. Batch-eindpunten en -implementaties worden uitgevoerd op rekenclusters. Ze kunnen worden uitgevoerd op elk Azure Machine Learning-rekencluster dat al bestaat in de werkruimte. Daarom kunnen meerdere batchimplementaties dezelfde rekeninfrastructuur delen. In dit voorbeeld werken we aan een Azure Machine Learning-rekencluster met de naam batch-cluster. We gaan controleren of de berekening bestaat in de werkruimte of anders maken.

    az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
    
  2. De implementatie configureren:

    Het deployment.yml bestand bevat de configuratie van de implementatie. U kunt het YAML-schema voor het volledige batcheindpunt controleren op extra eigenschappen.

    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. 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 -f deployment.yml --set-default
    

    Tip

    Let op het gebruik van de --set-default vlag om aan te geven dat deze nieuwe implementatie nu de standaardwaarde is.

  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)

Tip

In dit voorbeeld bevat de pijplijn geen invoer of uitvoer. Als voor het pijplijnonderdeel echter een aantal onderdelen zijn vereist, kunnen ze worden aangegeven tijdens het aanroepen. Zie Taken en invoergegevens voor batcheindpunten maken of de zelfstudie Een pijplijn implementeren om batchgewijs scoren uit te voeren met voorverwerking (preview) voor meer informatie over het aangeven van invoer en uitvoer.

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

(Optioneel) Verwijder rekenkracht, tenzij u van plan bent om uw rekencluster opnieuw te gebruiken met latere implementaties.

az ml compute delete -n batch-cluster

Volgende stappen