Delen via


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

  • 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. Zie Azure Machine Learning-werkruimten beheren om een werkruimte te maken.

  • Zorg ervoor dat u de volgende machtigingen hebt in de Machine Learning-werkruimte:

    • Batch-eindpunten en -implementaties maken of beheren: gebruik een eigenaar, inzender of aangepaste rol die dit toestaat Microsoft.MachineLearningServices/workspaces/batchEndpoints/*.
    • Azure Resource Manager-implementaties maken in de werkruimteresourcegroep: gebruik een eigenaar, inzender of aangepaste rol waarmee de resourcegroep waarin de werkruimte is geïmplementeerd, is toegestaan Microsoft.Resources/deployments/write .
  • Installeer de volgende software om te werken met Machine Learning:

    Voer de volgende opdracht uit om de Azure CLI en de ml extensie voor Azure Machine Learning te installeren:

    az extension add -n ml
    

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


Verbinding maken met uw werkruimte

De werkruimte is de resource op het hoogste niveau voor Machine Learning. Het biedt een centrale plek om te werken met alle artefacten die u maakt wanneer u Machine Learning gebruikt. In deze sectie maakt u verbinding met de werkruimte waar u uw implementatietaken uitvoert.

Voer in de volgende opdracht de waarden in voor uw abonnements-id, werkruimte, locatie en resourcegroep:

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.5/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