Machine Learning-pijplijnen activeren
VAN TOEPASSING OP:Python SDK azureml v1
In dit artikel leert u hoe u programmatisch een pijplijn kunt plannen voor uitvoering in Azure. U kunt een planning maken op basis van de verstreken tijd of op basis van wijzigingen in het bestandssysteem. Planningen op basis van tijd kunnen worden gebruikt om routinetaken uit te voeren, zoals het controleren op gegevensdrift. Schema's op basis van wijzigingen kunnen worden gebruikt om te reageren op onregelmatige of onvoorspelbare wijzigingen, zoals nieuwe gegevens die worden geüpload of oude gegevens die worden bewerkt. Nadat u hebt geleerd hoe u planningen maakt, leert u hoe u ze kunt ophalen en deactiveren. Ten slotte leert u hoe u andere Azure-services, Azure Logic App en Azure Data Factory kunt gebruiken om pijplijnen uit te voeren. Een logische Azure-app maakt complexere triggerlogica of -gedrag mogelijk. met Azure Data Factory-pijplijnen kunt u een machine learning-pijplijn aanroepen als onderdeel van een grotere pijplijn voor gegevensindeling.
Vereisten
Een Azure-abonnement. Als u geen Azure-abonnement hebt, maakt u een gratis account.
Een Python-omgeving waarin de Azure Machine Learning SDK voor Python is geïnstalleerd. Zie Herbruikbare omgevingen maken en beheren voor training en implementatie met Azure Machine Learning voor meer informatie.
Een Machine Learning-werkruimte met een gepubliceerde pijplijn. U kunt de ingebouwde machine learning-pijplijnen maken en uitvoeren met azure Machine Learning SDK.
Pijplijnen activeren met Azure Machine Learning SDK voor Python
Als u een pijplijn wilt plannen, hebt u een verwijzing nodig naar uw werkruimte, de id van uw gepubliceerde pijplijn en de naam van het experiment waarin u de planning wilt maken. U kunt deze waarden ophalen met de volgende code:
import azureml.core
from azureml.core import Workspace
from azureml.pipeline.core import Pipeline, PublishedPipeline
from azureml.core.experiment import Experiment
ws = Workspace.from_config()
experiments = Experiment.list(ws)
for experiment in experiments:
print(experiment.name)
published_pipelines = PublishedPipeline.list(ws)
for published_pipeline in published_pipelines:
print(f"{published_pipeline.name},'{published_pipeline.id}'")
experiment_name = "MyExperiment"
pipeline_id = "aaaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
Een planning maken
Als u een pijplijn op terugkerende basis wilt uitvoeren, maakt u een planning. Een Schedule
koppelt een pijplijn, een experiment en een trigger. De trigger kan eenScheduleRecurrence
zijn die het wachten tussen taken beschrijft of een gegevensarchiefpad dat een map aangeeft die moet worden watch voor wijzigingen. In beide gevallen hebt u de pijplijn-id en de naam van het experiment nodig om de planning te maken.
Importeer bovenaan het Python-bestand de Schedule
klassen en ScheduleRecurrence
:
from azureml.pipeline.core.schedule import ScheduleRecurrence, Schedule
Een planning op basis van tijd maken
De ScheduleRecurrence
constructor heeft een vereist frequency
argument dat een van de volgende tekenreeksen moet zijn: 'Minuut', 'Uur', 'Dag', 'Week' of 'Maand'. Het vereist ook een argument geheel getal interval
dat aangeeft hoeveel van de frequency
eenheden moeten verlopen tussen de planningsstarts. Met optionele argumenten kunt u specifieker zijn over de begintijden, zoals wordt beschreven in de documentatie over de ScheduleRecurrence SDK.
Maak een Schedule
waarmee elke 15 minuten een taak wordt gestart:
recurrence = ScheduleRecurrence(frequency="Minute", interval=15)
recurring_schedule = Schedule.create(ws, name="MyRecurringSchedule",
description="Based on time",
pipeline_id=pipeline_id,
experiment_name=experiment_name,
recurrence=recurrence)
Een planning op basis van wijzigingen maken
Pijplijnen die worden geactiveerd door bestandswijzigingen, zijn mogelijk efficiënter dan planningen op basis van tijd. Als u iets wilt doen voordat een bestand wordt gewijzigd of wanneer een nieuw bestand wordt toegevoegd aan een gegevensmap, kunt u dat bestand vooraf verwerken. U kunt wijzigingen in een gegevensarchief of wijzigingen in een specifieke map in het gegevensarchief bewaken. Als u een specifieke map bewaakt, wordt er geen taak geactiveerd door wijzigingen in submappen van die map.
Notitie
Planningen op basis van wijzigingen ondersteunen alleen bewaking van Azure Blob Storage.
Als u een bestand-reactief Schedule
wilt maken, moet u de datastore
parameter in de aanroep instellen op Schedule.create. Als u een map wilt bewaken, stelt u het argument in path_on_datastore
.
Met polling_interval
het argument kunt u in minuten de frequentie opgeven waarmee het gegevensarchief wordt gecontroleerd op wijzigingen.
Als de pijplijn is gemaakt met een DataPathPipelineParameter, kunt u die variabele instellen op de naam van het gewijzigde bestand door het data_path_parameter_name
argument in te stellen.
datastore = Datastore(workspace=ws, name="workspaceblobstore")
reactive_schedule = Schedule.create(ws, name="MyReactiveSchedule", description="Based on input file change.",
pipeline_id=pipeline_id, experiment_name=experiment_name, datastore=datastore, data_path_parameter_name="input_data")
Optionele argumenten bij het maken van een planning
Naast de argumenten die eerder zijn besproken, kunt u het status
argument instellen op om "Disabled"
een inactieve planning te maken. Ten slotte continue_on_step_failure
kunt u een Booleaanse waarde doorgeven die het standaardfoutgedrag van de pijplijn overschrijft.
Uw geplande pijplijnen weergeven
Navigeer in uw webbrowser naar Azure Machine Learning. Kies pijplijneindpunten in de sectie Eindpunten van het navigatiedeelvenster. Hiermee gaat u naar een lijst met de pijplijnen die zijn gepubliceerd in de werkruimte.
Op deze pagina ziet u overzichtsinformatie over alle pijplijnen in de werkruimte: namen, beschrijvingen, status, enzovoort. Zoom in door in uw pijplijn te klikken. Op de resulterende pagina vindt u meer informatie over uw pijplijn en kunt u inzoomen op afzonderlijke taken.
De pijplijn deactiveren
Als u een Pipeline
hebt die is gepubliceerd, maar niet gepland, kunt u deze uitschakelen met:
pipeline = PublishedPipeline.get(ws, id=pipeline_id)
pipeline.disable()
Als de pijplijn is gepland, moet u de planning eerst annuleren. Haal de id van de planning op uit de portal of door het volgende uit te voeren:
ss = Schedule.list(ws)
for s in ss:
print(s)
Zodra u de functie hebt die u wilt uitschakelen, voert u het schedule_id
volgende uit:
def stop_by_schedule_id(ws, schedule_id):
s = next(s for s in Schedule.list(ws) if s.id == schedule_id)
s.disable()
return s
stop_by_schedule_id(ws, schedule_id)
Als u vervolgens opnieuw uitvoert Schedule.list(ws)
, krijgt u een lege lijst.
Azure Logic Apps gebruiken voor complexe triggers
Complexere triggerregels of -gedrag kunnen worden gemaakt met behulp van een logische Azure-app.
Als u een logische Azure-app wilt gebruiken om een Machine Learning-pijplijn te activeren, hebt u het REST-eindpunt nodig voor een gepubliceerde Machine Learning-pijplijn. Maak en publiceer uw pijplijn. Zoek vervolgens het REST-eindpunt van uw PublishedPipeline
met behulp van de pijplijn-id:
# You can find the pipeline ID in Azure Machine Learning studio
published_pipeline = PublishedPipeline.get(ws, id="<pipeline-id-here>")
published_pipeline.endpoint
Een logische app maken in Azure
Maak nu een azure Logic App-exemplaar . Nadat uw logische app is ingericht, gebruikt u deze stappen om een trigger voor uw pijplijn te configureren:
Maak een door het systeem toegewezen beheerde identiteit om de app toegang te geven tot uw Azure Machine Learning-werkruimte.
Navigeer naar de weergave logische app Designer en selecteer de sjabloon Lege logische app.
Zoek in de Designer naar blob. Selecteer de trigger Wanneer een blob wordt toegevoegd of gewijzigd (alleen eigenschappen) en voeg deze trigger toe aan uw logische app.
Vul de verbindingsgegevens in voor het Blob Storage-account dat u wilt controleren op blob-toevoegingen of -wijzigingen. Selecteer de container die u wilt bewaken.
Kies het interval en de frequentie om te peilen naar updates die voor u geschikt zijn.
Notitie
Met deze trigger wordt de geselecteerde container bewaakt, maar geen submappen.
Voeg een HTTP-actie toe die wordt uitgevoerd wanneer een nieuwe of gewijzigde blob wordt gedetecteerd. Selecteer + Nieuwe stap, zoek en selecteer de HTTP-actie.
Gebruik de volgende instellingen om uw actie te configureren:
Instelling | Waarde |
---|---|
HTTP-actie | POST |
URI | het eindpunt naar de gepubliceerde pijplijn die u hebt gevonden als een vereiste |
Verificatiemodus | Beheerde identiteit |
Stel uw planning in om de waarde in te stellen van alle DataPath PipelineParameters die u mogelijk hebt:
{ "DataPathAssignments": { "input_datapath": { "DataStoreName": "<datastore-name>", "RelativePath": "@{triggerBody()?['Name']}" } }, "ExperimentName": "MyRestPipeline", "ParameterAssignments": { "input_string": "sample_string3" }, "RunSource": "SDK" }
Gebruik de
DataStoreName
die u als vereiste hebt toegevoegd aan uw werkruimte.Selecteer Opslaan en uw planning is nu klaar.
Belangrijk
Als u op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) gebruikt om de toegang tot uw pijplijn te beheren, stelt u de machtigingen in voor uw pijplijnscenario (training of scoren).
Machine Learning-pijplijnen aanroepen vanuit Azure Data Factory-pijplijnen
In een Azure Data Factory-pijplijn voert de machine learning-activiteit Pijplijn uitvoeren een Azure Machine Learning-pijplijn uit. U vindt deze activiteit op de ontwerppagina van Data Factory onder de categorie Machine Learning :
Volgende stappen
In dit artikel hebt u de Azure Machine Learning SDK voor Python gebruikt om een pijplijn op twee verschillende manieren te plannen. Eén schema wordt herhaald op basis van de verstreken kloktijd. De andere planningstaken als een bestand wordt gewijzigd in een opgegeven Datastore
of in een map in dat archief. U hebt gezien hoe u de portal gebruikt om de pijplijn en afzonderlijke taken te onderzoeken. U hebt geleerd hoe u een planning uitschakelt, zodat de pijplijn niet meer wordt uitgevoerd. Ten slotte hebt u een logische Azure-app gemaakt om een pijplijn te activeren.
Zie voor meer informatie:
- Meer informatie over pijplijnen
- Meer informatie over het verkennen van Azure Machine Learning met Jupyter