Share via


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

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

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 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:

  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 logische app Designer en selecteer de sjabloon Lege logische app.

    Lege sjabloon

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

    Trigger toevoegen

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

  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 Waarde
HTTP-actie POST
URI het eindpunt naar 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 als vereiste hebt toegevoegd aan uw werkruimte.

    HTTP-instellingen

  2. 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 :

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 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: