Delen via


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

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.jsonhet resultaat is, moet u de abonnements-id, resourcegroep en werkruimte handmatig introduceren wanneer u het MLClientmaakt.

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.

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
Average
Naïef
SeasonalAverage

Met andere algoritmen:

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_recallen 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_erroren 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_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 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.

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