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
- 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, kunt u de stappen in het artikel Resources maken gebruiken 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 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/MLTable
dat 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.
- 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)
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_recall
en 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_score
en normalized_mean_absolute_error
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. 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_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 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.
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 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_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 | 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
- Meer informatie over hoe en waar u een model kunt implementeren.
- Meer informatie over het instellen van AutoML voor het trainen van een tijdreeksprognosemodel.