Een Python-script uitvoeren als trainingstaak met CLI (v2)

Voltooid

Met de Azure Machine Learning CLI (v2) kunt u modellen trainen en volgen in een werkruimte.

Een van de gegevenswetenschappers van het fietsbedrijf heeft een klantverloopmodel getraind. U krijgt het Python-script dat wordt gebruikt om het model te trainen en de CSV-gegevensset, die een voorbeeld bevat van klantgegevens die worden gebruikt als invoer voor het model. Het data science-team wil het model laten trainen in de Azure Machine Learning-werkruimte, zodat het kan worden gedeeld met het marketingteam.

Het marketingteam kan niet wachten om het model te gebruiken. Ze verwachten dat het model waardevol is om gerichte promotie-e-mails te verzenden naar klanten die anders kunnen verloopen en kopen bij een concurrent.

U traint een model met behulp van een Python-script met de Azure Machine Learning CLI (v2).

Projecten

Als u machine learning-workloads in Azure Machine Learning wilt bijhouden, gebruikt u taken om modellen te trainen. Een Azure Machine Learning-taak voert een taak uit op basis van een opgegeven rekendoel.

Het trainen van een model is doorgaans een iteratief proces. Als u uw werk wilt bijhouden, kunt u een model trainen als een taak in Azure Machine Learning om de invoer en uitvoer te controleren.

De invoer van een model wordt vermeld in het YAML-bestand dat nodig is om een taak te verzenden. In dat YAML-bestand voegt u de basisbeginselen toe:

  • Wat moet u uitvoeren: het trainingsscript.
  • De code uitvoeren: de omgeving die nodig is om de code uit te voeren.
  • Waar u deze kunt uitvoeren: de berekening die wordt gebruikt om de code uit te voeren.

Wanneer u een taak verzendt, wordt er een experimentuitvoering gemaakt in de werkruimte. Alle uitvoer van een model, zoals metagegevens, metrische gegevens, logboeken en artefacten, worden opgeslagen met de uitvoering van het experiment. U vindt alle invoer en uitvoer van een taak in Azure Machine Learning Studio.

Een model trainen

Gebruik een taak om een machine learning-model te trainen en bij te houden in Azure Machine Learning.

U herinnert zich de data scientist van het fietsbedrijf, die u het trainingsscript en de CSV-gegevensset geeft, die worden gebruikt om het klantverloopmodel te trainen. Als u het script wilt uitvoeren en het model wilt trainen als taak, kunt u het volgende YAML-bestand gebruiken:

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: 
  local_path: src
command: >-
  python main.py 
environment: azureml:basic-env-scikit:1
compute: azureml:testdev-vm
experiment_name: customer-churn
description: Train a classification model on a sample customer dataset.

In het YAML-bestand wordt het volgende beschreven:

  • code.local_path: het lokale pad naar het trainingsscript.
  • command: de opdracht die moet worden uitgevoerd, namelijk het uitvoeren van het script met Python.
  • environment: De omgeving die nodig is om de opdracht uit te voeren. U kunt verwijzen naar een geregistreerde omgeving vanuit de werkruimte met behulp van het voorvoegsel azureml:of een inline omgeving definiĆ«ren.
  • compute: het rekendoel waarop de code wordt uitgevoerd. U kunt lokale berekeningen of het rekenproces of het cluster uit de werkruimte gebruiken.
  • experiment_name: De taak wordt opgeslagen als een experiment dat wordt uitgevoerd in de werkruimte. U kunt desgewenst de naam van het experiment toevoegen om het gemakkelijker te vinden in Studio. Standaard wordt er een naam voor u gemaakt.
  • description: Voeg eventueel een beschrijving toe om meer informatie te geven over wat de taak bevat.

Belangrijk

Telkens wanneer u naar een asset in uw Azure Machine Learning-werkruimte in het YAML-bestand van de taak wilt verwijzen, moet u het voorvoegsel azureml:gebruiken. Als u bijvoorbeeld een model wilt trainen op uw rekenproces met de naam 'testdv-vm', gebruikt azureml:testdv-vmu .

Als u een taak wilt verzenden, raadpleegt u het pad van het YAML-bestand dat is opgeslagen als job.yml en voert u de opdracht uit:

az ml job create --file job.yml --web

Notitie

In alle codevoorbeelden wordt ervan uitgegaan dat er een standaardresourcegroep en een Azure Machine Learning-werkruimte zijn geconfigureerd.

Wanneer u de parameter --webopneemt, wordt er een webpagina geopend nadat de taak is verzonden, zodat u de uitvoering van het experiment in Azure Machine Learning Studio kunt bewaken.

In De Studio wordt de taak weergegeven als een experimentuitvoering en worden de voortgang en details van de taak weergegeven. Op het tabblad Details ziet u de invoer, waar u de opdracht, omgeving, rekendoel en prestatiegegevens kunt vinden, zoals de nauwkeurigheid van het getrainde model.

Tip

Ga naar de az ml job referentiedocumentatie voor meer informatie over het beheren van Azure Machine Learning-taken met de CLI (v2).

Gegevensset toevoegen als invoer aan taak

Het trainen van een model is een iteratief proces. Als u meerdere modellen met verschillende invoergegevens maar hetzelfde trainingsscript wilt trainen, kunnen gegevenswetenschappers werken met invoerargumenten. Laten we eens kijken naar een voorbeeld van een argument voor gegevensinvoer.

Met behulp van het trainingsscript en de CSV-gegevensset hebt u een klantverloopmodel getraind met behulp van Azure Machine Learning Compute. U bent van plan om het model, wanneer u meer gegevens verzamelt, opnieuw te trainen om de nauwkeurigheid ervan te verbeteren. De gegevensset die wordt gebruikt als invoer voor het trainen van het model, wordt na verloop van tijd gewijzigd, omdat er meer gegevens worden verzameld en toegevoegd aan het CSV-bestand. Als u de invoergegevensset eenvoudig wilt wijzigen telkens wanneer u het model opnieuw wilt trainen, wilt u een invoerargument voor de gegevens maken.

In plaats van rechtstreeks vanuit het trainingsscript naar het lokaal opgeslagen CSV te verwijzen, wilt u de gegevensinvoer in het YAML-bestand opgeven. Er zijn twee overwegingen wanneer u deze aanpak volgt:

  • In het script: U definieert de invoerargumenten met behulp van de argparse module. U geeft de naam van het argument op, typt en eventueel een standaardwaarde.
  • In het YAML-bestand: u geeft de gegevensinvoer op, die wordt gekoppeld (standaardoptie) of gegevens naar het lokale bestandssysteem downloadt. U kunt verwijzen naar een openbare URI of een geregistreerde gegevensset in de Azure Machine Learning-werkruimte.

U hebt een gegevensset gemaakt voor de klantverloopgegevens, die zijn geregistreerd in de Azure Machine Learning-werkruimte. De gegevensset verwijst naar het CSV-bestand dat is opgeslagen in het blobarchief van de werkruimte. Als u de gegevensset wilt gebruiken als invoer voor het trainingsscript, in plaats van een lokaal CSV-bestand te gebruiken, gebruikt u de argparse module om een invoerargument --data-csv voor de gegevensset in het trainingsscript te definiƫren.

import argparse
import pandas as pd

parser = argparse.ArgumentParser()
parser.add_argument("--data-csv", dest='data_csv', type=str)

args = parser.parse_args()

df = pd.read_csv(args.data_csv)

Als u het script wilt uitvoeren en het model wilt trainen met een gegevensset als invoer, verwijst u naar een geregistreerde gegevensset in het YAML-bestand dat wordt gebruikt om de taak te verzenden:

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: 
  local_path: src
command: >-
  python main.py
  --data-csv ${{inputs.dataset}}
inputs:
  dataset: azureml:customer-churn-data:1
  mode: download 
environment: azureml:basic-env-scikit:1
compute: azureml:testdev-vm
experiment_name: customer-churn
description: Train a classification model on a sample customer dataset.

In dit voorbeeld wordt versie 1 van de gegevensset klantverloop uit uw Azure Machine Learning-werkruimte gebruikt, gedownload naar het bestandssysteem van de testdev-vm van het rekenproces en voert u vervolgens het main.py script uit met de gegevensset als invoerargument.

Nadat u de taak hebt verzonden met behulp van de az ml job create --file job.yml opdracht, kunt u de uitvoering bekijken in Azure Machine Learning Studio. Op het tabblad Details worden in de invoergegevenssets weergegeven welke gegevens zijn gebruikt om het experiment uit te voeren.

Wanneer u meerdere modellen met verschillende invoer moet trainen, kunt u eenvoudig uw werk bijhouden bij het gebruik van invoerargumenten voor gegevens- en modelparameters. Meer informatie over invoer en uitvoer vindt u in de documentatie over het trainen van een model met de CLI (v2).