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
ml
extensie 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. Gebruikaz 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:
Een batch-eindpunt maken
Voordat we de pijplijntaak implementeren, moeten we een batch-eindpunt implementeren om de implementatie te hosten.
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.
Configureer het eindpunt:
Maak het eindpunt:
Voer een query uit op de eindpunt-URI:
De pijplijntaak implementeren
Om het pijplijnonderdeel te implementeren, moeten we een batchimplementatie maken op basis van de bestaande taak.
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:
Configureer de implementatie.
Het
deployment-from-job.yml
bestand bevat de configuratie van de implementatie. U ziet hoe we de sleuteljob_definition
gebruiken in plaats van aan te geven dat deze implementatie wordt gemaakt op basis vancomponent
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.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.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:
U kunt de voortgang van de voorstelling controleren en de logboeken streamen met behulp van:
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