AutoML-training instellen voor tabelgegevens met de Azure Machine Learning CLI en Python SDK
VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)
In dit artikel leert u hoe u een geautomatiseerde machine learning-trainingstaak (AutoML) instelt met de Azure Machine Learning Python SDK v2. Geautomatiseerde ML kiest een algoritme en hyperparameters voor u en genereert een model dat gereed is voor implementatie. Dit artikel bevat informatie over de verschillende opties die u kunt gebruiken om geautomatiseerde machine learning-experimenten te configureren.
Als u liever geen code gebruikt, kunt u ook geautomatiseerde ML-training zonder code instellen voor tabellaire gegevens met de gebruikersinterface van studio.
Vereisten
- 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 er nog geen hebt, raadpleegt u Resources maken om aan de slag te gaan.
Als u de SDK-informatie wilt gebruiken, installeert u de Azure Machine Learning SDK v2 voor Python.
Als u de SDK wilt installeren, kunt u het volgende doen:
- Maak een rekenproces dat al de nieuwste Azure Machine Learning Python SDK heeft en is geconfigureerd voor ML-werkstromen. Zie Een Azure Machine Learning-rekenproces maken voor meer informatie.
- Installeer de SDK op uw lokale computer.
Uw werkruimte instellen
Als u verbinding wilt maken met een werkruimte, moet u een abonnement, resourcegroep en werkruimte opgeven.
De details van de werkruimte worden in de MLClient
van azure.ai.ml
waaruit gebruikt om een ingang op te halen naar de vereiste Azure Machine Learning-werkruimte.
In het volgende voorbeeld wordt de standaardVerificatie van Azure gebruikt met de standaardconfiguratie of -configuratie van een config.json
bestand in de mappenstructuur. Als dit niet config.json
het resultaat is, moet u de abonnements-id, resourcegroep en werkruimte handmatig introduceren wanneer u het MLClient
maakt.
from azure.identity import DefaultAzureCredential
from azure.ai.ml import MLClient
credential = DefaultAzureCredential()
ml_client = None
try:
ml_client = MLClient.from_config(credential)
except Exception as ex:
print(ex)
# Enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
ml_client = MLClient(credential, subscription_id, resource_group, workspace)
Gegevensbron en -indeling opgeven
Als u trainingsgegevens in SDK v2 wilt bieden, moet u deze uploaden naar de cloud via een MLTable.
Vereisten voor het laden van gegevens in een MLTable:
- Gegevens moeten in tabelvorm zijn.
- De waarde die moet worden voorspeld, de doelkolom, moet in de gegevens staan.
Trainingsgegevens moeten toegankelijk zijn vanaf de externe berekening. Geautomatiseerde ML v2 (Python SDK en CLI/YAML) accepteert MLTable-gegevensassets (v2). Voor compatibiliteit met eerdere versies ondersteunt het ook v1 Tabellaire gegevenssets van v1, een geregistreerde tabelgegevensset, via dezelfde eigenschappen van de invoergegevensset. U wordt aangeraden MLTable te gebruiken, beschikbaar in v2. In dit voorbeeld worden de gegevens opgeslagen op het lokale pad. /train_data/bank_marketing_train_data.csv.
U kunt een MLTable maken met behulp van de Mltable Python SDK , zoals in het volgende voorbeeld:
import mltable
paths = [
{'file': './train_data/bank_marketing_train_data.csv'}
]
train_table = mltable.from_delimited_files(paths)
train_table.save('./train_data')
Met deze code maakt u een nieuw bestand, ./train_data/MLTable, dat de bestandsindeling en laadinstructies bevat.
De map ./train_data bevat nu het MLTable-definitiebestand plus het gegevensbestand, bank_marketing_train_data.csv.
Zie Werken met tabellen in Azure Machine Learning voor meer informatie over MLTable.
Trainings-, validatie- en testgegevens
U kunt afzonderlijke trainingsgegevens en validatiegegevenssets opgeven. Trainingsgegevens moeten worden verstrekt aan de training_data
parameter in de factory-functie van uw geautomatiseerde machine learning-taak.
Als u niet expliciet een validation_data
of n_cross_validation
parameter opgeeft, past Automated ML standaardtechnieken toe om te bepalen hoe validatie wordt uitgevoerd. Deze bepaling is afhankelijk van het aantal rijen in de gegevensset die is toegewezen aan uw training_data
parameter.
Grootte van trainingsgegevens | Validatietechniek |
---|---|
Groter dan 20.000 rijen | Het splitsen van trainings- en validatiegegevens wordt toegepast. De standaardinstelling is om 10% van de initiële trainingsgegevensset als validatieset te gebruiken. Op zijn beurt wordt die validatieset gebruikt voor het berekenen van metrische gegevens. |
Kleiner dan of gelijk aan 20.000 rijen | De benadering voor kruisvalidatie wordt toegepast. Het standaardaantal vouwen is afhankelijk van het aantal rijen. Als de gegevensset minder dan 1000 rijen is, worden er tien vouwen gebruikt. Als de rijen gelijk zijn aan of tussen 1.000 en 20.000, worden er drie vouwen gebruikt. |
Compute en uitvoering van het experiment instellen
Geautomatiseerde machine learning-taken met de Python SDK v2 (of CLI v2) worden momenteel alleen ondersteund in een extern rekencluster of rekenproces van Azure Machine Learning. Zie Modellen trainen met Azure Machine Learning CLI, SDK en REST API voor meer informatie over het maken van berekeningen met python SDKv2 of CLIv2.
Uw experimentinstellingen configureren
Er zijn verschillende opties die u kunt gebruiken om uw geautomatiseerde machine learning-experiment te configureren. Deze configuratieparameters worden ingesteld in uw taakmethode. U kunt ook instellingen voor taaktraining instellen en criteria afsluiten met de training
en limits
instellingen.
In het volgende voorbeeld ziet u de vereiste parameters voor een classificatietaak waarmee de nauwkeurigheid wordt opgegeven als primaire metrische gegevens en vijf kruisvalidatievouws.
from azure.ai.ml.constants import AssetTypes
from azure.ai.ml import automl, Input
# note that this is a code snippet -- you might have to modify the variable values to run it successfully
# make an Input object for the training data
my_training_data_input = Input(
type=AssetTypes.MLTABLE, path="./data/training-mltable-folder"
)
# configure the classification job
classification_job = automl.classification(
compute=my_compute_name,
experiment_name=my_exp_name,
training_data=my_training_data_input,
target_column_name="y",
primary_metric="accuracy",
n_cross_validations=5,
enable_model_explainability=True,
tags={"my_custom_tag": "My custom value"}
)
# Limits are all optional
classification_job.set_limits(
timeout_minutes=600,
trial_timeout_minutes=20,
max_trials=5,
enable_early_termination=True,
)
# Training properties are optional
classification_job.set_training(
blocked_training_algorithms=["logistic_regression"],
enable_onnx_compatible_models=True
)
Het type machine learning-taak selecteren
Voordat u uw geautomatiseerde ML-taak kunt indienen, bepaalt u het soort machine learning-probleem dat u wilt oplossen. Dit probleem bepaalt welke functie uw taak gebruikt en welke modelalgoritmen worden toegepast.
Geautomatiseerde ML ondersteunt verschillende taaktypen:
Taken op basis van gegevens in tabelvorm
- classificatie
- regressie
- Vooruitzichten
Computer Vision-taken, waaronder
- Classificatie van afbeeldingen
- Objectdetectie
Taken voor verwerking van natuurlijke taal, waaronder
- Tekstclassificatie
- Herkenning van entiteiten
Zie taaktypen voor meer informatie. Zie AutoML instellen voor het trainen van een tijdreeksprognosemodel voor meer informatie over het instellen van prognosetaken.
Ondersteunde algoritmen
Geautomatiseerde machine learning probeert verschillende modellen en algoritmen tijdens het automatiserings- en afstemmingsproces. Als gebruiker hoeft u het algoritme niet op te geven.
De taakmethode bepaalt de lijst met algoritmen of modellen die moeten worden toegepast. Als u iteraties verder wilt wijzigen met de beschikbare modellen die u wilt opnemen of uitsluiten, gebruikt u de allowed_training_algorithms
of blocked_training_algorithms
parameters in de training
configuratie van de taak.
In de volgende tabel verkent u de ondersteunde algoritmen per machine learning-taak.
Met andere algoritmen:
- Algoritmen voor afbeeldingsclassificatie met meerdere klassen
- Algoritmen voor afbeeldingsclassificatie met meerdere labels
- Algoritmen voor objectdetectie van afbeeldingen
- Algoritmen voor NLP-tekstclassificatie met meerdere labels
- Algoritmen voor NLP Text Named Entity Recognition (NER)
Zie bijvoorbeeld notebooks van elk taaktype, automl-standalone-jobs.
Primaire metrische gegevens
De primary_metric
parameter bepaalt de metrische waarde die moet worden gebruikt tijdens de modeltraining voor optimalisatie. Het taaktype dat u kiest, bepaalt de metrische gegevens die u kunt selecteren.
Het kiezen van een primaire metriek voor geautomatiseerde machine learning die moet worden geoptimaliseerd, is afhankelijk van veel factoren. We raden u aan om een metrische waarde te kiezen die het beste bij uw zakelijke behoeften past. Overweeg vervolgens of de metrische waarde geschikt is voor uw gegevenssetprofiel, inclusief gegevensgrootte, bereik en klassedistributie. In de volgende secties worden de aanbevolen primaire metrische gegevens samengevat op basis van het taaktype en het bedrijfsscenario.
Zie De resultaten van geautomatiseerde machine learning-experimenten evalueren voor meer informatie over de specifieke definities van deze metrische gegevens.
Metrische gegevens voor classificatiescenario's met meerdere klassen
Deze metrische gegevens zijn van toepassing op alle classificatiescenario's, waaronder tabelgegevens, afbeeldingen of computervisie en tekst voor natuurlijke taalverwerking (NLP-Text).
Drempelwaardeafhankelijke metrische gegevens, zoals accuracy
, recall_score_weighted
, norm_macro_recall
en precision_score_weighted
kunnen niet zo goed worden geoptimaliseerd voor gegevenssets die klein zijn, grote klasseverschil hebben (onevenwichtige klasse) of wanneer de verwachte metrische waarde zeer dicht bij 0,0 of 1,0 ligt. In die gevallen AUC_weighted
kan dit een betere keuze zijn voor de primaire metrische gegevens. Nadat geautomatiseerde machine learning is voltooid, kunt u het winnende model kiezen op basis van de metrische gegevens die het meest geschikt zijn voor uw bedrijfsbehoeften.
Metrische gegevens | Gebruiksvoorbeelden |
---|---|
accuracy |
Afbeeldingsclassificatie, Sentimentanalyse, Verloopvoorspelling |
AUC_weighted |
Fraudedetectie, afbeeldingsclassificatie, anomaliedetectie/spamdetectie |
average_precision_score_weighted |
Sentimentanalyse |
norm_macro_recall |
Voorspelling voor verloop |
precision_score_weighted |
Metrische gegevens voor classificatiescenario's met meerdere labels
Voor tekstclassificatie met meerdere labels is 'Nauwkeurigheid' momenteel de enige primaire metriek die wordt ondersteund.
Voor afbeeldingsclassificatie met meerdere labels worden de ondersteunde primaire metrische gegevens gedefinieerd in de ClassificationMultilabelPrimaryMetrics
enum.
Metrische gegevens voor NLP Text Named Entity Recognition-scenario's
Voor NLP Text Named Entity Recognition (NER) is momenteel 'Nauwkeurigheid' de enige primaire metriek die wordt ondersteund.
Metrische gegevens voor regressiescenario's
r2_score
, normalized_mean_absolute_error
en normalized_root_mean_squared_error
proberen allemaal voorspellingsfouten te minimaliseren. r2_score
en normalized_root_mean_squared_error
minimaliseert zowel de gemiddelde kwadratische fouten terwijl normalized_mean_absolute_error
de gemiddelde absolute waarde van fouten wordt geminimaliseerd. Absolute waarde behandelt fouten op alle grootten en kwadratische fouten hebben een veel grotere boete voor fouten met grotere absolute waarden. Afhankelijk van of grotere fouten meer of niet moeten worden gestraft, kunt u ervoor kiezen om kwadratische fouten of absolute fouten te optimaliseren.
Het belangrijkste verschil tussen r2_score
en normalized_root_mean_squared_error
is de manier waarop ze worden genormaliseerd en hun betekenissen. normalized_root_mean_squared_error
is wortelgemiddelde kwadratische fout genormaliseerd per bereik en kan worden geïnterpreteerd als de gemiddelde grootte van de fout voor voorspelling. r2_score
is gemiddelde kwadratische fout genormaliseerd door een schatting van de variantie van gegevens. Het is het aandeel variatie dat door het model kan worden vastgelegd.
Notitie
r2_score
en normalized_root_mean_squared_error
gedraagt zich ook op dezelfde manier als primaire metrische gegevens. Als er een vaste validatieset wordt toegepast, optimaliseren deze twee metrische gegevens hetzelfde doel, gemiddelde kwadratische fout en worden deze geoptimaliseerd door hetzelfde model. Wanneer er alleen een trainingsset beschikbaar is en kruisvalidatie wordt toegepast, zouden ze iets anders zijn dan de normalizer voor normalized_root_mean_squared_error
het bereik van de trainingsset, maar de normalizer voor r2_score
elke vouw zou variëren omdat het de variantie voor elke vouw is.
Als de rang, in plaats van de exacte waarde, van belang is, spearman_correlation
kan een betere keuze zijn. Het meet de rangcorrelatie tussen reële waarden en voorspellingen.
Geautomatiseerde ML biedt momenteel geen ondersteuning voor primaire metrische gegevens die het relatieve verschil tussen voorspellingen en waarnemingen meten. De metrische gegevens, normalized_mean_absolute_error
en normalized_root_mean_squared_error
zijn alle metingen r2_score
van absoluut verschil. Als een voorspelling bijvoorbeeld verschilt van een observatie met 10 eenheden, berekenen deze metrische gegevens dezelfde waarde als de observatie 20 eenheden of 20.000 eenheden is. Een percentageverschil, een relatieve meting, geeft daarentegen fouten van respectievelijk 50% en 0,05%. Als u wilt optimaliseren voor relatief verschil, kunt u Geautomatiseerde ML uitvoeren met een ondersteunde primaire metriek en vervolgens het model selecteren met het beste mean_absolute_percentage_error
of root_mean_squared_log_error
. Deze metrische gegevens zijn niet gedefinieerd wanneer waarnemingswaarden nul zijn, zodat ze mogelijk niet altijd goede keuzes zijn.
Metrische gegevens | Gebruiksvoorbeelden |
---|---|
spearman_correlation |
|
normalized_root_mean_squared_error |
Prijsvoorspelling (huis/product/tip), scorevoorspelling beoordelen |
r2_score |
Vertraging van de luchtvaartmaatschappij, salarisraming, foutoplossingstijd |
normalized_mean_absolute_error |
Metrische gegevens voor time series-prognosescenario's
De aanbevelingen zijn vergelijkbaar met de aanbevelingen voor regressiescenario's.
Metrische gegevens | Gebruiksvoorbeelden |
---|---|
normalized_root_mean_squared_error |
Prijsvoorspelling (prognoses), Voorraadoptimalisatie, Vraagprognose |
r2_score |
Prijsvoorspelling (prognoses), Voorraadoptimalisatie, Vraagprognose |
normalized_mean_absolute_error |
Metrische gegevens voor scenario's voor objectdetectie van afbeeldingen
Voor afbeeldingsobjectdetectie worden de ondersteunde primaire metrische gegevens gedefinieerd in de ObjectDetectionPrimaryMetrics
enum.
Metrische gegevens voor segmentatiescenario's van het exemplaar van installatiekopieën
Voor scenario's met segmentatie van het installatiekopieënexemplaren worden de ondersteunde primaire metrische gegevens gedefinieerd in de InstanceSegmentationPrimaryMetrics
enum.
Gegevensmetrisatie
In elk geautomatiseerd machine learning-experiment worden uw gegevens automatisch omgezet in getallen en vectoren van getallen. De gegevens worden ook geschaald en genormaliseerd om algoritmen te helpen die gevoelig zijn voor functies die zich op verschillende schalen bevinden. Deze gegevenstransformaties worden featurization genoemd.
Notitie
Geautomatiseerde machine learning-featurisatiestappen, zoals functienormalisatie, het verwerken van ontbrekende gegevens en het converteren van tekst naar numeriek, worden onderdeel van het onderliggende model. Wanneer u het model gebruikt voor voorspellingen, worden dezelfde featurization-stappen die tijdens de training worden toegepast, automatisch toegepast op uw invoergegevens.
Wanneer u geautomatiseerde machine learning-taken configureert, kunt u de featurization
instellingen in- of uitschakelen.
In de volgende tabel ziet u de geaccepteerde instellingen voor featurization.
Configuratie van featurization | Beschrijving |
---|---|
"mode": 'auto' |
Geeft aan dat, als onderdeel van voorverwerking, gegevensbeveiligings- en featurisatiestappen automatisch worden uitgevoerd. Deze waarde is de standaardinstelling. |
"mode": 'off' |
Hiermee wordt aangegeven dat de functiestap niet automatisch moet worden uitgevoerd. |
"mode": 'custom' |
Geeft aan dat de aangepaste featurization-stap moet worden gebruikt. |
De volgende code laat zien hoe aangepaste featurization in dit geval kan worden verstrekt voor een regressietaak.
from azure.ai.ml.automl import ColumnTransformer
transformer_params = {
"imputer": [
ColumnTransformer(fields=["CACH"], parameters={"strategy": "most_frequent"}),
ColumnTransformer(fields=["PRP"], parameters={"strategy": "most_frequent"}),
],
}
regression_job.set_featurization(
mode="custom",
transformer_params=transformer_params,
blocked_transformers=["LabelEncoding"],
column_name_and_types={"CHMIN": "Categorical"},
)
Criteria voor afsluiten
Er zijn enkele opties die u in de set_limits()
functie kunt definiëren om het experiment te beëindigen voordat de taak is voltooid.
Criteria | beschrijving |
---|---|
Geen criteria | Als u geen afsluitparameters definieert, wordt het experiment voortgezet totdat er geen verdere voortgang wordt gemaakt voor uw primaire metrische gegevens. |
timeout |
Hiermee definieert u hoe lang, in minuten, uw experiment moet blijven worden uitgevoerd. Als dit niet is opgegeven, is de totale time-out van de standaardtaak zes dagen (8.640 minuten). Als u een time-out wilt opgeven die kleiner is dan of gelijk is aan 1 uur (60 minuten), moet u ervoor zorgen dat de grootte van uw gegevensset niet groter is dan 10.000.000 (rijtijdenkolom) of een foutresultaat. Deze time-out omvat installatie-, featurization- en trainingsuitvoeringen, maar bevat niet de ensembling- en modeltoelichtingsuitvoeringen aan het einde van het proces, omdat deze acties moeten plaatsvinden nadat alle proefversies (kindertaken) zijn uitgevoerd. |
trial_timeout_minutes |
Maximale tijd in minuten waarvoor elke proefversie (onderliggende taak) kan worden uitgevoerd voordat deze wordt beëindigd. Als dit niet is opgegeven, wordt een waarde van 1 maand of 43200 minuten gebruikt. |
enable_early_termination |
Of de taak moet worden beëindigd als de score op korte termijn niet wordt verbeterd. |
max_trials |
Het maximum aantal experimenten/uitvoeringen elk met een andere combinatie van algoritme en hyperparameters om te proberen tijdens een taak. Als dit niet is opgegeven, is de standaardwaarde 1000 proefversies. Als u gebruikt enable_early_termination , kan het aantal gebruikte experimenten kleiner zijn. |
max_concurrent_trials |
Vertegenwoordigt het maximum aantal experimenten (onderliggende taken) dat parallel wordt uitgevoerd. Het is een goed idee om dit nummer te vergelijken met het aantal knooppunten dat uw cluster heeft. |
Experiment uitvoeren
Dien het experiment in om een model uit te voeren en te genereren.
Notitie
Als u een experiment met dezelfde configuratie-instellingen en primaire metrische gegevens meerdere keren uitvoert, ziet u mogelijk variatie in de uiteindelijke score voor metrische gegevens en gegenereerde modellen voor elke experimenten. De algoritmen die geautomatiseerde machine learning gebruiken, hebben inherente willekeurigheid die lichte variatie in de modellen kan veroorzaken door het experiment en de uiteindelijke score voor metrische gegevens van het model, zoals nauwkeurigheid. Mogelijk ziet u ook resultaten met dezelfde modelnaam, maar verschillende gebruikte hyperparameters.
Waarschuwing
Als u regels hebt ingesteld in de firewall of netwerkbeveiligingsgroep via uw werkruimte, controleert u of de vereiste machtigingen zijn verleend voor inkomend en uitgaand netwerkverkeer, zoals gedefinieerd in Binnenkomend en uitgaand netwerkverkeer configureren.
Nu de MLClient
vereisten zijn gemaakt, kunt u de volgende opdracht uitvoeren in de werkruimte.
# Submit the AutoML job
returned_job = ml_client.jobs.create_or_update(
classification_job
) # submit the job to the backend
print(f"Created job: {returned_job}")
# Get a URL for the status of the job
returned_job.services["Studio"].endpoint
Meerdere onderliggende uitvoeringen op clusters
Onderliggende uitvoeringen van geautomatiseerde ML-experimenten kunnen worden uitgevoerd op een cluster waarop al een ander experiment wordt uitgevoerd. De timing is echter afhankelijk van het aantal knooppunten dat het cluster heeft en of deze knooppunten beschikbaar zijn om een ander experiment uit te voeren.
Elk knooppunt in het cluster fungeert als een afzonderlijke virtuele machine (VM) die één trainingsuitvoering kan uitvoeren. Voor Geautomatiseerde ML betekent dit een onderliggende uitvoering. Als alle knooppunten bezet zijn, wordt er een nieuw experiment in de wachtrij geplaatst. Als er vrije knooppunten zijn, worden met het nieuwe experiment onderliggende uitvoeringen parallel uitgevoerd in de beschikbare knooppunten of virtuele machines.
Voor het beheren van onderliggende uitvoeringen en wanneer ze kunnen worden uitgevoerd, raden we u aan een toegewezen cluster per experiment te maken en het aantal van max_concurrent_iterations
uw experiment te koppelen aan het aantal knooppunten in het cluster. Op deze manier gebruikt u alle knooppunten van het cluster tegelijkertijd met het aantal gelijktijdige onderliggende uitvoeringen en iteraties dat u wilt.
Configureer max_concurrent_iterations
deze in de limits
configuratie. Als deze niet is geconfigureerd, is standaard slechts één gelijktijdige onderliggende uitvoering/iteratie toegestaan per experiment. Voor een rekenproces max_concurrent_trials
kan worden ingesteld op hetzelfde aantal kernen op de virtuele machine van het rekenproces.
Modellen en metrische gegevens verkennen
Geautomatiseerde ML biedt opties voor het bewaken en evalueren van uw trainingsresultaten.
Zie De resultaten van geautomatiseerde machine learning-experimenten evalueren voor definities en voorbeelden van de prestatiegrafieken en metrische gegevens voor elke uitvoering.
Zie Featurization-transparantie om een overzicht te krijgen van de functies die aan een bepaald model zijn toegevoegd.
Vanuit de Azure Machine Learning-gebruikersinterface op de pagina van het model kunt u ook de hyperparameters bekijken die worden gebruikt bij het trainen van een bepaald model en ook de trainingscode van het interne model weergeven en aanpassen.
Modellen registreren en implementeren
Nadat u een model hebt getest en hebt bevestigd dat u het in productie wilt gebruiken, kunt u het voor later gebruik registreren.
Tip
Voor geregistreerde modellen kunt u implementatie met één klik gebruiken met behulp van de Azure Machine Learning-studio. Zie Uw model implementeren.
AutoML gebruiken in pijplijnen
Als u Geautomatiseerde ML wilt gebruiken in uw werkstromen voor machine learning-bewerkingen, kunt u AutoML-taakstappen toevoegen aan uw Azure Machine Learning-pijplijnen. Met deze aanpak kunt u uw hele werkstroom automatiseren door uw scripts voor gegevensvoorbereiding te koppelen aan Geautomatiseerde ML. Registreer en valideer vervolgens het resulterende beste model.
Deze code is een voorbeeldpijplijn met een geautomatiseerd ML-classificatieonderdeel en een opdrachtonderdeel dat de resulterende uitvoer weergeeft. De code verwijst naar de invoer (trainings- en validatiegegevens) en de uitvoer (beste model) in verschillende stappen.
# Define pipeline
@pipeline(
description="AutoML Classification Pipeline",
)
def automl_classification(
classification_train_data,
classification_validation_data
):
# define the automl classification task with automl function
classification_node = classification(
training_data=classification_train_data,
validation_data=classification_validation_data,
target_column_name="y",
primary_metric="accuracy",
# currently need to specify outputs "mlflow_model" explictly to reference it in following nodes
outputs={"best_model": Output(type="mlflow_model")},
)
# set limits and training
classification_node.set_limits(max_trials=1)
classification_node.set_training(
enable_stack_ensemble=False,
enable_vote_ensemble=False
)
command_func = command(
inputs=dict(
automl_output=Input(type="mlflow_model")
),
command="ls ${{inputs.automl_output}}",
environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:latest"
)
show_output = command_func(automl_output=classification_node.outputs.best_model)
pipeline_job = automl_classification(
classification_train_data=Input(path="./training-mltable-folder/", type="mltable"),
classification_validation_data=Input(path="./validation-mltable-folder/", type="mltable"),
)
# set pipeline level compute
pipeline_job.settings.default_compute = compute_name
# submit the pipeline job
returned_pipeline_job = ml_client.jobs.create_or_update(
pipeline_job,
experiment_name=experiment_name
)
returned_pipeline_job
# ...
# Note that this is a snippet from the bankmarketing example you can find in our examples repo -> https://github.com/Azure/azureml-examples/tree/main/sdk/python/jobs/pipelines/1h_automl_in_pipeline/automl-classification-bankmarketing-in-pipeline
Zie de opslagplaats met voorbeelden voor meer voorbeelden over het opnemen van Geautomatiseerde ML in uw pijplijnen.
AutoML op schaal gebruiken: gedistribueerde training
Voor scenario's met grote gegevens biedt Automated ML ondersteuning voor gedistribueerde training voor een beperkte set modellen:
Gedistribueerd algoritme | Ondersteunde taken | Gegevensgroottelimiet (geschat) |
---|---|---|
LightGBM | Classificatie, regressie | 1 TB |
TCNForecaster | Prognoses opstellen | 200 GB |
Gedistribueerde trainingsalgoritmen partitioneren en distribueren uw gegevens automatisch over meerdere rekenknooppunten voor modeltraining.
Notitie
Kruisvalidatie, ensemblemodellen, ONNX-ondersteuning en codegeneratie worden momenteel niet ondersteund in de gedistribueerde trainingsmodus. Automatische ML kan ook keuzes maken, zoals het beperken van beschikbare featurizers en subsamplinggegevens die worden gebruikt voor validatie, uitleg en modelevaluatie.
Gedistribueerde training voor classificatie en regressie
Als u gedistribueerde training wilt gebruiken voor classificatie of regressie, stelt u de training_mode
en max_nodes
eigenschappen van het taakobject in.
Eigenschappen | Beschrijving |
---|---|
training_mode | Geeft de trainingsmodus aan: distributed of non_distributed . Standaard ingesteld op non_distributed . |
max_nodes | Het aantal knooppunten dat moet worden gebruikt voor elke proefversie. Deze instelling moet groter zijn dan of gelijk zijn aan 4. |
In het volgende codevoorbeeld ziet u een voorbeeld van deze instellingen voor een classificatietaak:
from azure.ai.ml.constants import TabularTrainingMode
# Set the training mode to distributed
classification_job.set_training(
allowed_training_algorithms=["LightGBM"],
training_mode=TabularTrainingMode.DISTRIBUTED
)
# Distribute training across 4 nodes for each trial
classification_job.set_limits(
max_nodes=4,
# other limit settings
)
Notitie
Gedistribueerde training voor classificatie- en regressietaken biedt momenteel geen ondersteuning voor meerdere gelijktijdige proefversies. Modeltests worden opeenvolgend uitgevoerd met elke proefversie met behulp van max_nodes
knooppunten. De max_concurrent_trials
limietinstelling wordt momenteel genegeerd.
Gedistribueerde training voor prognose
Zie Prognose op schaal voor meer informatie over hoe gedistribueerde training werkt voor het voorspellen van taken. Als u gedistribueerde training wilt gebruiken voor prognoses, moet u de training_mode
, enable_dnn_training
en max_nodes
eventueel de max_concurrent_trials
eigenschappen van het taakobject instellen.
Eigenschappen | Beschrijving |
---|---|
training_mode | Geeft de trainingsmodus aan; distributed of non_distributed . Standaard ingesteld op non_distributed . |
enable_dnn_training | Vlag om deep neurale netwerkmodellen in te schakelen. |
max_concurrent_trials | Deze waarde is het maximum aantal proefmodellen dat parallel moet worden getraind. Standaardwaarde is 1. |
max_nodes | Het totale aantal knooppunten dat moet worden gebruikt voor training. Deze instelling moet groter zijn dan of gelijk zijn aan 2. Voor prognosetaken wordt elk proefmodel getraind met behulp van $\text{max}\left(2, \text{floor}( \text{max_nodes} / \text{max_concurrent_trials}) \right)$ knooppunten. |
In het volgende codevoorbeeld ziet u een voorbeeld van deze instellingen voor een prognosetaak:
from azure.ai.ml.constants import TabularTrainingMode
# Set the training mode to distributed
forecasting_job.set_training(
enable_dnn_training=True,
allowed_training_algorithms=["TCNForecaster"],
training_mode=TabularTrainingMode.DISTRIBUTED
)
# Distribute training across 4 nodes
# Train 2 trial models in parallel => 2 nodes per trial
forecasting_job.set_limits(
max_concurrent_trials=2,
max_nodes=4,
# other limit settings
)
Zie de vorige secties over het indienen van configuraties en taken voor voorbeelden van volledige configuratiecode.
Gerelateerde inhoud
- Meer informatie over hoe en waar u een model kunt implementeren.
- Meer informatie over het instellen van AutoML voor het trainen van een tijdreeksprognosemodel.