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 deze handleiding leert u hoe u een geautomatiseerde machine learning-, AutoML-trainingstaak 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. Deze handleiding bevat details van de verschillende opties die u kunt gebruiken om geautomatiseerde ML-experimenten te configureren.

Als u liever geen code gebruikt, kunt u ook AutoML-training zonder code instellen in de Azure Machine Learning-studio.

Vereisten

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 dat ook doen:

  • Maak een rekenproces dat al de nieuwste Azure Machine Learning Python SDK heeft geïnstalleerd en vooraf is geconfigureerd voor ML-werkstromen. Zie Een Azure Machine Learning-rekenproces maken voor meer informatie.
  • De SDK installeren op uw lokale computer

Uw werkruimte instellen

Als u verbinding wilt maken met een werkruimte, moet u een abonnement, resourcegroep en werkruimtenaam 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, samen met de standaardconfiguratie van de werkruimte of vanuit een config.json bestand dat u in de mappenstructuur hebt gekopieerd. Als er geen config.json is gevonden, moet u de subscription_id handmatig introduceren, resource_group en werkruimte bij het maken MLClient.

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

Als u trainingsgegevens wilt verstrekken aan AutoML in SDK v2, 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), hoewel voor achterwaartse compatibiliteit ook v1 tabelgegevenssets van v1 (een geregistreerde tabellaire gegevensset) worden ondersteund via dezelfde eigenschappen van de invoergegevensset. Het wordt echter aangeraden MLTable te gebruiken dat beschikbaar is in v2. In dit voorbeeld wordt ervan uitgegaan dat de gegevens worden 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/MLTabledat de bestandsindeling en laadinstructies bevat.

./train_data De map bevat nu het MLTable-definitiebestand plus het gegevensbestand. bank_marketing_train_data.csv

Zie het artikel mltable-instructies voor meer informatie over MLTable

Trainings-, validatie- en testgegevens

U kunt afzonderlijke trainingsgegevens en validatiegegevenssets opgeven, maar trainingsgegevens moeten worden verstrekt aan de training_data parameter in de fabrieksfunctie van uw geautomatiseerde ML-taak.

Als u niet expliciet een validation_data of n_cross_validation parameter opgeeft, past geautomatiseerde 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 De gegevenssplitsing train/validatie 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 10 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 ML-taken met de Python SDK v2 (of CLI v2) worden momenteel alleen ondersteund op externe Azure Machine Learning-rekenprocessen (cluster- of rekenproces).

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 ML-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 5 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
)

Selecteer uw machine learning-taaktype (ML-probleem)

Voordat u uw geautomatiseerde ML-taak kunt indienen, moet u het soort machine learning-probleem bepalen dat u wilt oplossen. Dit probleem bepaalt welke functie uw geautomatiseerde ML-taak gebruikt en welke modelalgoritmen het toepast.

Geautomatiseerde ML ondersteunt taken op basis van gegevens in tabelvorm (classificatie, regressie, prognose), computer vision-taken (zoals afbeeldingsclassificatie en objectdetectie) en taken voor verwerking van natuurlijke taal (zoals tekstclassificatie en entiteitsherkenningstaken). Zie ons artikel over taaktypen voor meer informatie. Zie onze handleiding voor tijdreeksprognoses 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/modellen die moeten worden toegepast. Gebruik de allowed_training_algorithms of blocked_training_algorithms parameters in de training configuratie van de AutoML-taak om iteraties verder te wijzigen met de beschikbare modellen die moeten worden opgenomen of uitgesloten.

In de volgende lijst met koppelingen kunt u de ondersteunde algoritmen per machine learning-taak verkennen die hieronder worden vermeld.

Classificatie Regressie Tijdreeksvoorspelling
Logistieke regressie* Elastisch net* AutoARIMA
Licht GBM* Licht GBM* Profeet
Kleurovergang verhogen* Kleurovergang verhogen* Elastisch net
Beslissingsstructuur* Beslissingsstructuur* Licht GBM
K dichtstbijzijnde buren* K dichtstbijzijnde buren* K Nearest Neighbors
Lineaire SVC* LARS Lasso* Beslissingsstructuur
Support Vector Classification (SVC)* Stochastische gradiëntafname (SGD)* Arimax
Willekeurig forest* Willekeurig forest LARS Lasso
Extreem gerandomiseerde bomen* Extreem gerandomiseerde bomen* Extreem gerandomiseerde bomen*
Xgboost* Xgboost* Willekeurig forest
Naïve Bayes* Xgboost TCNForecaster
Stochastische gradiëntafname (SGD)* Stochastische gradiëntafname (SGD) Kleurovergang verhogen
ExponentialSmoothing
SeasonalNaive
Gemiddeld
Naïef
SeasonalAverage

Met aanvullende algoritmen hieronder.

Volg deze koppeling , bijvoorbeeld notebooks van elk taaktype.

Primaire metrische gegevens

De primary_metric parameter bepaalt de metrische waarde die moet worden gebruikt tijdens de modeltraining voor optimalisatie. De beschikbare metrische gegevens die u kunt selecteren, worden bepaald door het taaktype dat u kiest.

Het kiezen van een primaire metriek voor geautomatiseerde ML 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 (gegevensgrootte, bereik, klassedistributie, enzovoort). In de volgende secties worden de aanbevolen primaire metrische gegevens samengevat op basis van het taaktype en het bedrijfsscenario.

Meer informatie over de specifieke definities van deze metrische gegevens in Inzicht in geautomatiseerde machine learning-resultaten.

Metrische gegevens voor classificatiescenario's met meerdere klassen

Deze metrische gegevens zijn van toepassing op alle classificatiescenario's, waaronder tabelgegevens, afbeeldingen/computervisie en NLP-Text.

Metrische gegevens die afhankelijk zijn van drempelwaarden, zoals accuracy, recall_score_weighted, norm_macro_recallen precision_score_weighted kunnen niet ook worden geoptimaliseerd voor gegevenssets die klein zijn, grote klasse-scheeftrekken 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 ML is voltooid, kunt u het winnende model kiezen op basis van de metrische gegevens die het meest geschikt zijn voor uw bedrijfsbehoeften.

Metric Voorbeeld van use-case(s)
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 is multilabel momenteel 'Nauwkeurigheid' de enige primaire metriek die wordt ondersteund.

  • Voor afbeeldingsclassificatie met meerdere labels worden de ondersteunde primaire metrische gegevens gedefinieerd in de Enum ClassificationMultilabelPrimaryMetrics

Metrische gegevens voor NLP Text NER-scenario's (Named Entity Recognition)

  • Voor NLP Text NER (Named Entity Recognition) is momenteel 'Nauwkeurigheid' de enige primaire metriek die wordt ondersteund.

Metrische gegevens voor regressiescenario's

r2_scoreen normalized_mean_absolute_errornormalized_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. Dit 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 rangschikking, in plaats van de exacte waarde van belang is, spearman_correlation kan dit een betere keuze zijn omdat hiermee de rangcorrelatie tussen reële waarden en voorspellingen wordt berekend.

AutoML biedt momenteel geen ondersteuning voor primaire metrische gegevens die het relatieve verschil tussen voorspellingen en waarnemingen meten. De metrische gegevens, normalized_mean_absolute_erroren normalized_root_mean_squared_error zijn alle metingen r2_scorevan 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 AutoML uitvoeren met een ondersteunde primaire metriek en vervolgens het model selecteren met het beste mean_absolute_percentage_error of root_mean_squared_log_error. Houd er rekening mee dat deze metrische gegevens niet gedefinieerd zijn wanneer waarnemingswaarden nul zijn, zodat ze mogelijk niet altijd goede keuzes zijn.

Metric Voorbeeld van use-case(s)
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 die zijn genoteerd voor regressiescenario's.

Metric Voorbeeld van use-case(s)
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 objectdetectionPrimaryMetrics Enum

Metrische gegevens voor segmentatiescenario's van het exemplaar van installatiekopieën

  • Voor scenario's met segmentatie van installatiekopieën worden de ondersteunde primaire metrische gegevens gedefinieerd in de Enum InstanceSegmentationPrimaryMetrics

Gegevensmetrisatie

In elk geautomatiseerd ML-experiment worden uw gegevens automatisch getransformeerd naar getallen en vectoren van getallen en 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 (functienormalisatie, verwerking van ontbrekende gegevens, het converteren van tekst naar numeriek, enzovoort) worden onderdeel van het onderliggende model. Wanneer u het model voor voorspellingen gebruikt, worden dezelfde featurization-stappen die tijdens de training worden toegepast, automatisch toegepast op uw invoergegevens.

Bij het configureren van uw geautomatiseerde ML-taken 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. 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 uw experiment te beëindigen voordat de taak is voltooid.

Criteria beschrijving
Geen criteria Als u geen afsluitparameters definieert, gaat het experiment door totdat er geen verdere voortgang wordt gemaakt op 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 6 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 setup- en featurization- en trainingsuitvoeringen, maar bevat niet de ensembling- en modeluitlichtingsuitvoeringen aan het einde van het proces, omdat deze acties moeten plaatsvinden zodra 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 AutoML-taak. Als dit niet is opgegeven, is de standaardwaarde 1000 proefversies. Als u enable_early_termination het aantal gebruikte experimenten gebruikt, kan kleiner zijn.
max_concurrent_trials Vertegenwoordigt het maximum aantal experimenten (onderliggende taken) dat parallel wordt uitgevoerd. Het is een goede gewoonte om dit aantal te vergelijken met het aantal knooppunten dat uw cluster heeft

Experiment uitvoeren

Notitie

Als u een experiment met dezelfde configuratie-instellingen en primaire metrische gegevens meerdere keren uitvoert, ziet u waarschijnlijk variatie in de uiteindelijke score voor metrische gegevens en gegenereerde modellen voor elke experimenten. De geautomatiseerde ML-algoritmen hebben inherente willekeurigheid die kleine variatie in de modellen kan veroorzaken door het experiment en de uiteindelijke score voor metrische gegevens van het aanbevolen model, zoals nauwkeurigheid. U ziet waarschijnlijk ook resultaten met dezelfde modelnaam, maar verschillende gebruikte hyperparameters.

Waarschuwing

Als u regels hebt ingesteld in de firewall en/of netwerkbeveiligingsgroep via uw werkruimte, controleert u of vereiste machtigingen zijn verleend voor binnenkomend en uitgaand netwerkverkeer, zoals gedefinieerd in Binnenkomend en uitgaand netwerkverkeer configureren.

Dien het experiment in om een model uit te voeren en te genereren. 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. Maar als er vrije knooppunten zijn, wordt in het nieuwe experiment geautomatiseerde ONDERLIGGENDE ML-uitvoeringen parallel uitgevoerd in de beschikbare knooppunten/VM's.

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 gewenste aantal gelijktijdige onderliggende uitvoeringen/iteraties.

Configureer max_concurrent_iterations deze in de limits configuratie. Als deze niet is geconfigureerd, is standaard slechts één gelijktijdige onderliggende uitvoering/iteratie per experiment toegestaan. In het geval van een rekenproces max_concurrent_trials kan worden ingesteld op hetzelfde aantal kernen op de VM van het rekenproces.

Modellen en metrische gegevens verkennen

Geautomatiseerde ML biedt opties voor het bewaken en evalueren van uw trainingsresultaten.

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 is implementatie met één klik beschikbaar via de Azure Machine Learning-studio. Zie hoe u geregistreerde modellen implementeert vanuit de studio.

AutoML in pijplijnen

Als u AutoML wilt gebruiken in uw MLOps-werkstromen, kunt u Stappen voor AutoML-taken toevoegen aan uw Azure Machine Learning-pijplijnen. Hierdoor kunt u uw hele werkstroom automatiseren door uw gegevensvoorbereidingsscripts te koppelen aan AutoML en vervolgens het resulterende beste model te registreren en te valideren.

Hieronder ziet u een voorbeeldpijplijn met een AutoML-classificatieonderdeel en een opdrachtonderdeel waarin de resulterende AutoML-uitvoer wordt weergegeven. Let op hoe in verschillende stappen naar de invoer (training en validatiegegevens) en de uitvoer (beste model) wordt verwezen.

# 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

Bekijk onze opslagplaats voorbeelden voor meer voorbeelden over het opnemen van AutoML in uw pijplijnen.

AutoML op schaal: gedistribueerde training

Voor scenario's met grote gegevens ondersteunt AutoML 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. AutoML 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, moet u de training_mode en max_nodes eigenschappen van het taakobject instellen.

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

Als u wilt weten hoe gedistribueerde training werkt voor prognosetaken, raadpleegt u ons artikel over prognose op schaal . Als u gedistribueerde training wilt gebruiken voor prognoses, moet u de training_mode, enable_dnn_trainingen max_nodeseventueel 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 Dit 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 verzenden van configuraties en taken voor voorbeelden van volledige configuratiecode.

Volgende stappen