Delen via


Machine Learning-pijplijnen activeren

VAN TOEPASSING OP: Python SDK azureml v1

In dit artikel leert u hoe u programmatisch een pijplijn kunt plannen om te worden uitgevoerd in Azure. U kunt een planning maken op basis van verstreken tijd of wijzigingen in het bestandssysteem. Planningen op basis van tijd kunnen worden gebruikt om routinetaken uit te voeren, zoals bewaking voor gegevensdrift. Planningen 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 gebruikt om pijplijnen uit te voeren. Met een logische Azure-app kunt u complexere triggerlogica of -gedrag uitvoeren. Met Azure Data Factory-pijplijnen kunt u een machine learning-pijplijn aanroepen als onderdeel van een grotere pijplijn voor gegevensindeling.

Vereisten

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 pijplijn, een experiment en een trigger worden gekoppeld. De trigger kan eenScheduleRecurrence beschrijving zijn van de wachttijd tussen taken of een gegevensarchiefpad waarmee een map wordt opgegeven om te controleren op wijzigingen. In beide gevallen hebt u de pijplijn-id en de naam van het experiment nodig waarin u de planning wilt maken.

Importeer de Schedule en ScheduleRecurrence klassen bovenaan uw Python-bestand:


from azureml.pipeline.core.schedule import ScheduleRecurrence, Schedule

Een schema 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'. Er is ook een geheel getal-argument interval vereist dat aangeeft hoeveel van de frequency eenheden er tussen de planningsstarts moeten zijn verstreken. Met optionele argumenten kunt u specifieker zijn over de begintijden, zoals beschreven in de Documentatie over de ScheduleRecurrence SDK.

Maak een Schedule taak die elke 15 minuten begint:

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 schema op basis van wijzigingen maken

Pijplijnen die worden geactiveerd door bestandswijzigingen, kunnen efficiënter zijn dan planningen op basis van tijd. Wanneer 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, worden wijzigingen in submappen van die map geen taak geactiveerd.

Notitie

Planningen op basis van wijzigingen ondersteunen alleen het bewaken van Azure Blob Storage.

Als u een bestand reactief Schedulewilt maken, moet u de datastore parameter instellen in de aanroep naar Schedule.create. Als u een map wilt bewaken, stelt u het path_on_datastore argument in.

Met polling_interval het argument kunt u in minuten de frequentie opgeven waarmee het gegevensarchief wordt gecontroleerd op wijzigingen.

Als de pijplijn is samengesteld 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 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 in de sectie Eindpunten van het navigatiedeelvenster pijplijneindpunten. Hiermee gaat u naar een lijst met de pijplijnen die zijn gepubliceerd in de werkruimte.

Pagina Pijplijnen van AML

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 gepubliceerde, maar niet geplande versie hebt, kunt u deze uitschakelen met:

pipeline = PublishedPipeline.get(ws, id=pipeline_id)
pipeline.disable()

Als de pijplijn is gepland, moet u eerst het schema 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 bestand 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 exemplaar van een logische Azure-app . Nadat uw logische app is ingericht, gebruikt u deze stappen om een trigger voor uw pijplijn te configureren:

  1. Maak een door het systeem toegewezen beheerde identiteit om de app toegang te geven tot uw Azure Machine Learning-werkruimte.

  2. Navigeer naar de weergave Ontwerpfunctie voor logische apps en selecteer de sjabloon Lege logische app.

    Lege sjabloon

  3. Zoek in de ontwerpfunctie naar blob. Selecteer de trigger Wanneer een blob wordt toegevoegd of gewijzigd (alleen eigenschappen) en voeg deze trigger toe aan uw logische app.

    Trigger toevoegen

  4. Vul de verbindingsgegevens in voor het Blob Storage-account dat u wilt controleren op toevoegingen of wijzigingen van blobs. Selecteer de container die u wilt bewaken.

    Kies het interval en de frequentie om te peilen naar updates die voor u werken.

    Notitie

    Met deze trigger wordt de geselecteerde container bewaakt, maar worden geen submappen bewaakt.

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

Zoeken naar HTTP-actie

Gebruik de volgende instellingen om uw actie te configureren:

Instelling Weergegeven als
HTTP-actie POSTEN
URI het eindpunt voor de gepubliceerde pijplijn die u hebt gevonden als een vereiste
Verificatiemodus Beheerde identiteit
  1. 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 aan uw werkruimte hebt toegevoegd als een vereiste.

    HTTP-instellingen

  2. Selecteer Opslaan en uw planning is nu gereed.

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 score).

Machine Learning-pijplijnen aanroepen vanuit Azure Data Factory-pijplijnen

In een Azure Data Factory-pijplijn voert de activiteit Machine Learning-pijplijn uitvoeren een Azure Machine Learning-pijplijn uit. U vindt deze activiteit op de ontwerppagina van Data Factory onder de categorie Machine Learning :

Schermopname van de ML-pijplijnactiviteit in de Azure Data Factory-ontwerpomgeving

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 recurs op basis van verstreken kloktijd. De andere planningstaken als een bestand wordt gewijzigd op een opgegeven Datastore of in een map in dat archief. U hebt gezien hoe u de portal kunt gebruiken 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: