AutoML-training instellen met Python

VAN TOEPASSING OP: Python SDK azureml v1

In deze handleiding leert u hoe u een geautomatiseerde machine learning, AutoML, training kunt instellen met de Azure Machine Learning Python SDK met behulp van geautomatiseerde ML van Azure Machine Learning. 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.

Zie zelfstudie: AutoML- regressiemodel trainen voor een end-to-end-voorbeeld.

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

Vereisten

Voor dit artikel hebt u het volgende nodig:

Het type experimenten selecteren

Voordat u begint met uw experiment, moet u het soort machine learning-probleem bepalen dat u wilt oplossen. Geautomatiseerde machine learning ondersteunt taaktypen classification, regressionen forecasting. Meer informatie over taaktypen.

Notitie

Ondersteuning voor NLP-taken (Natural Language Processing): afbeeldingsclassificatie (meerdere klassen en meerdere labels) en herkenning van benoemde entiteiten is beschikbaar in openbare preview. Meer informatie over NLP-taken in geautomatiseerde ML.

Deze preview-mogelijkheden worden aangeboden zonder een service level agreement. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte functionaliteit. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

De volgende code gebruikt de task parameter in de AutoMLConfig constructor om het experimenttype op te geven als classification.

from azureml.train.automl import AutoMLConfig

# task can be one of classification, regression, forecasting
automl_config = AutoMLConfig(task = "classification")

Gegevensbron en -indeling

Geautomatiseerde machine learning biedt ondersteuning voor gegevens die zich bevinden op de lokale desktop of in de cloud, zoals Azure Blob Storage. De gegevens kunnen worden gelezen in een Pandas DataFrame of een Azure Machine Learning TabularDataset. Meer informatie over gegevenssets.

Vereisten voor trainingsgegevens in machine learning:

  • Gegevens moeten in tabelvorm zijn.
  • De waarde die moet worden voorspeld, de doelkolom, moet in de gegevens staan.

Belangrijk

Geautomatiseerde ML-experimenten bieden geen ondersteuning voor training met gegevenssets die gebruikmaken van op identiteit gebaseerde gegevenstoegang.

Voor externe experimenten moeten trainingsgegevens toegankelijk zijn vanaf de externe berekening. Geautomatiseerde ML accepteert alleen Azure Machine Learning TabularDatasets bij het werken op een externe berekening.

Azure Machine Learning-gegevenssets bieden functionaliteit voor:

  • Gegevens eenvoudig overdragen van statische bestanden of URL-bronnen naar uw werkruimte.
  • Het beschikbaar maken van uw gegevens voor trainingsscripts bij uitvoering in computeresources in de cloud. Zie Hoe u traint met gegevenssets voor een voorbeeld van het gebruik van de Dataset klasse om gegevens te koppelen aan uw externe rekendoel.

Met de volgende code wordt een TabularDataset gemaakt op basis van een web-URL. Zie Een TabularDataset maken voor codevoorbeelden over het maken van gegevenssets uit andere bronnen, zoals lokale bestanden en gegevensarchieven.

from azureml.core.dataset import Dataset
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)

Voor lokale rekenexperimenten raden we pandas-dataframes aan voor snellere verwerkingstijden.

import pandas as pd
from sklearn.model_selection import train_test_split

df = pd.read_csv("your-local-file.csv")
train_data, test_data = train_test_split(df, test_size=0.1, random_state=42)
label = "label-col-name"

Trainings-, validatie- en testgegevens

U kunt afzonderlijke trainingsgegevens en validatiegegevenssets rechtstreeks in de AutoMLConfig constructor opgeven. Meer informatie over het configureren van training, validatie, kruisvalidatie en testgegevens voor uw AutoML-experimenten.

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 20.000 rijen De benadering voor kruisvalidatie wordt toegepast. Het standaardaantal vouwen is afhankelijk van het aantal rijen.
Als de gegevensset kleiner is dan 1000 rijen, worden er 10 vouwen gebruikt.
Als de rijen tussen 1.000 en 20.000 liggen, worden er drie vouwen gebruikt.

Fooi

U kunt testgegevens (preview) uploaden om modellen te evalueren die door geautomatiseerde ML voor u zijn gegenereerd. Deze functies zijn experimentele preview-mogelijkheden en kunnen op elk gewenst moment worden gewijzigd. Leer hoe u het volgende doet:

Als u liever geen code gebruikt, raadpleegt u stap 12 in AutoML instellen met de gebruikersinterface van studio

Grote gegevens

Geautomatiseerde ML ondersteunt een beperkt aantal algoritmen voor het trainen van grote gegevens waarmee modellen voor big data kunnen worden gebouwd op kleine virtuele machines. Geautomatiseerde ML-heuristieken zijn afhankelijk van eigenschappen zoals gegevensgrootte, geheugengrootte van virtuele machines, time-out van experimenten en featurisatie-instellingen om te bepalen of deze grote gegevensalgoritmen moeten worden toegepast. Meer informatie over welke modellen worden ondersteund in geautomatiseerde ML.

Als u deze heuristieken wilt overschrijven, past u de volgende instellingen toe:

Opdracht Instelling Aantekeningen
Algoritmen voor gegevensstreaming blokkeren blocked_models in uw AutoMLConfig object en vermeld de modellen die u niet wilt gebruiken. Resulteert in een uitvoeringsfout of een lange uitvoeringstijd
Algoritmen voor gegevensstreaming gebruiken allowed_models in uw AutoMLConfig object en vermeld de modellen die u wilt gebruiken.
Algoritmen voor gegevensstreaming gebruiken
(experimenten met de gebruikersinterface van studio)
Alle modellen blokkeren, behalve de big data-algoritmen die u wilt gebruiken.

Compute en uitvoering van het experiment instellen

Bepaal vervolgens waar het model wordt getraind. Een geautomatiseerd ML-trainingsexperiment kan worden uitgevoerd op de volgende rekenopties.

  • Kies een lokaal rekenproces: als uw scenario betrekking heeft op eerste verkenningen of demo's met behulp van kleine gegevens en korte treinen (d.w.w. seconden of een paar minuten per onderliggende uitvoering), is training op uw lokale computer mogelijk een betere keuze. Er is geen installatietijd, de infrastructuurbronnen (uw pc of VM) zijn rechtstreeks beschikbaar. Bekijk dit notebook voor een lokaal compute-voorbeeld.

  • Kies een extern ML-rekencluster: als u traint met grotere gegevenssets, zoals bij het maken van productietrainingen die langere treinen nodig hebben, biedt externe berekening veel betere end-to-end-prestaties, omdat AutoML treinen parallel worden uitgevoerd op de knooppunten van het cluster. Op een externe berekening wordt de opstarttijd voor de interne infrastructuur ongeveer 1,5 minuten per onderliggende uitvoering toegevoegd, plus extra minuten voor de clusterinfrastructuur als de VM's nog niet actief zijn.Azure Machine Learning Managed Compute is een beheerde service waarmee u machine learning-modellen kunt trainen op clusters van virtuele Azure-machines. Het rekenproces wordt ook ondersteund als rekendoel.

  • Een Azure Databricks-cluster in uw Azure-abonnement. Meer informatie vindt u in Een Azure Databricks-cluster instellen voor geautomatiseerde ML. Ga naar deze GitHub-site voor voorbeelden van notebooks met Azure Databricks.

Houd rekening met deze factoren bij het kiezen van uw rekendoel:

Voordelen (voordelen) Nadelen (handicaps)
Lokaal rekendoel
  • Geen opstarttijd voor omgeving
  • Subset van functies
  • Uitvoeringen kunnen niet parallel worden uitgevoerd
  • Erger voor grote gegevens.
  • Geen gegevensstreaming tijdens het trainen
  • Geen op DNN gebaseerde featurization
  • Alleen Python SDK
  • Externe ML-rekenclusters
  • Volledige set functies
  • Onderliggende uitvoeringen parallelliseren
  • Ondersteuning voor grote gegevens
  • Op DNN gebaseerde featurization
  • Dynamische schaalbaarheid van rekencluster op aanvraag
  • Er is ook geen code-ervaring (webgebruikersinterface) beschikbaar
  • Opstarttijd voor clusterknooppunten
  • Opstarttijd voor elke onderliggende uitvoering
  • Uw experimentinstellingen configureren

    Er zijn verschillende opties die u kunt gebruiken om uw geautomatiseerde ML-experiment te configureren. Deze parameters worden ingesteld door een AutoMLConfig object te instantiëren. Zie de AutoMLConfig-klasse voor een volledige lijst met parameters.

    Het volgende voorbeeld is voor een classificatietaak. Het experiment maakt gebruik van AUC gewogen als primaire metriek en heeft een time-out voor het experiment ingesteld op 30 minuten en 2 kruisvalidatievouws.

        automl_classifier=AutoMLConfig(task='classification',
                                       primary_metric='AUC_weighted',
                                       experiment_timeout_minutes=30,
                                       blocked_models=['XGBoostClassifier'],
                                       training_data=train_data,
                                       label_column_name=label,
                                       n_cross_validations=2)
    

    U kunt ook prognosetaken configureren. Hiervoor is extra installatie vereist. Zie het artikel AutoML instellen voor het voorspellen van tijdreeksen voor meer informatie.

        time_series_settings = {
                                'time_column_name': time_column_name,
                                'time_series_id_column_names': time_series_id_column_names,
                                'forecast_horizon': n_test_periods
                               }
        
        automl_config = AutoMLConfig(
                                     task = 'forecasting',
                                     debug_log='automl_oj_sales_errors.log',
                                     primary_metric='normalized_root_mean_squared_error',
                                     experiment_timeout_minutes=20,
                                     training_data=train_data,
                                     label_column_name=label,
                                     n_cross_validations=5,
                                     path=project_folder,
                                     verbosity=logging.INFO,
                                     **time_series_settings
                                    )
    

    Ondersteunde modellen

    Geautomatiseerde machine learning probeert verschillende modellen en algoritmen tijdens het automatiserings- en afstemmingsproces. Als gebruiker hoeft u het algoritme niet op te geven.

    De drie verschillende task parameterwaarden bepalen de lijst met algoritmen of modellen die moeten worden toegepast. Gebruik de allowed_models of blocked_models parameters om iteraties verder te wijzigen met de beschikbare modellen om op te nemen of uit te sluiten. De volgende tabel bevat een overzicht van de ondersteunde modellen per taaktype.

    Notitie

    Als u van plan bent om uw geautomatiseerde ML gemaakte modellen te exporteren naar een ONNX-model, kunnen alleen de algoritmen die zijn aangegeven met een * (sterretje) worden geconverteerd naar de ONNX-indeling. Meer informatie over het converteren van modellen naar ONNX.

    Houd er ook rekening mee dat ONNX momenteel alleen classificatie- en regressietaken ondersteunt.

    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* Kleurovergang verhogen
    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* Stochastische gradiëntafname (SGD)
    Xgboost* Xgboost* Willekeurig forest
    Gemiddeld perceptronclassificatie Online gradiëntafnameregressor Xgboost
    Naïve Bayes* Snelle lineaire regressor ForecastTCN
    Stochastische gradiëntafname (SGD)* Naïef
    Lineaire SVM-classificatie* SeasonalNaive
    Average
    SeasonalAverage
    ExponentialSmoothing

    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

    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, zeer 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 ML is voltooid, kunt u het winnende model kiezen op basis van de metrische gegevens die het meest geschikt zijn voor uw bedrijfsbehoeften.

    Metrische gegevens Voorbeeld van use-case(s)
    accuracy Afbeeldingsclassificatie, Sentimentanalyse, Verloopvoorspelling
    AUC_weighted Fraudedetectie, afbeeldingsclassificatie, anomaliedetectie/spamdetectie
    average_precision_score_weighted Gevoelsanalyse
    norm_macro_recall Voorspelling voor verloop
    precision_score_weighted

    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. Het is het aandeel variatie dat kan worden vastgelegd door het model.

    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.

    Momenteel zijn er echter geen primaire metrische gegevens voor regressie adressen relatief verschil. Alle , normalized_mean_absolute_erroren normalized_root_mean_squared_error behandelen een voorspellingsfout van $ 20k hetzelfde voor een werkrol met een salaris van r2_score$ 30.000 als een werknemer die $ 20M verdient, als deze twee gegevenspunten deel uitmaken van dezelfde gegevensset voor regressie of dezelfde tijdreeks die is opgegeven door de tijdreeks-id. Hoewel in werkelijkheid slechts $ 20k van een salaris van $ 20M zeer dichtbij is (een klein 0,1% relatief verschil), terwijl $ 20k van $ 30k niet dicht is (een groot 67% relatief verschil). Als u het probleem van het relatieve verschil wilt oplossen, kunt u een model trainen met beschikbare primaire metrische gegevens en vervolgens het model selecteren met het beste mean_absolute_percentage_error of root_mean_squared_log_error.

    Metrische gegevens 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 tijdreeksprognosescenario's

    De aanbevelingen zijn vergelijkbaar met de aanbevelingen die zijn genoteerd voor regressiescenario's.

    Metrische gegevens Voorbeeld van use-case(s)
    normalized_root_mean_squared_error Prijsvoorspelling (prognoses), Voorraadoptimalisatie, Vraagprognose
    r2_score Prijsvoorspelling (prognoses), Voorraadoptimalisatie, Vraagprognose
    normalized_mean_absolute_error

    Gegevensmetrisatie

    In elk geautomatiseerd ML-experiment worden uw gegevens automatisch geschaald en genormaliseerd om bepaalde algoritmen te helpen die gevoelig zijn voor functies die zich op verschillende schalen bevinden. Deze schaal- en normalisatie wordt aangeduid als featurization. Zie Featurization in AutoML voor meer details en codevoorbeelden.

    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.

    Wanneer u uw experimenten in uw AutoMLConfig object configureert, kunt u de instelling featurizationin- of uitschakelen. In de volgende tabel ziet u de geaccepteerde instellingen voor featurization in het AutoMLConfig-object.

    Configuratie van featurization Omschrijving
    "featurization": 'auto' Geeft aan dat als onderdeel van voorverwerking, gegevensbeveiligings- en featurisatiestappen automatisch worden uitgevoerd. Standaardinstelling.
    "featurization": 'off' Hiermee wordt aangegeven dat de functiestap niet automatisch moet worden uitgevoerd.
    "featurization": 'FeaturizationConfig' Geeft aan dat de aangepaste featurization-stap moet worden gebruikt. Meer informatie over het aanpassen van featurization.

    Ensembleconfiguratie

    Ensemblemodellen zijn standaard ingeschakeld en worden weergegeven als de uiteindelijke uitvoeringsiteraties in een AutoML-uitvoering. Momenteel worden VotingEnsemble en StackEnsemble ondersteund.

    Stem implementeert soft-voting, waarbij gewogen gemiddelden worden gebruikt. De stacking-implementatie maakt gebruik van een implementatie met twee lagen, waarbij de eerste laag dezelfde modellen heeft als het stemensemble en het tweede laagmodel wordt gebruikt om de optimale combinatie van de modellen uit de eerste laag te vinden.

    Als u ONNX-modellen gebruikt of model-uitlegmogelijkheden hebt ingeschakeld, is stacking uitgeschakeld en wordt alleen gestemd.

    Ensembletraining kan worden uitgeschakeld met behulp van de enable_voting_ensemble en enable_stack_ensemble booleaanse parameters.

    automl_classifier = AutoMLConfig(
                                     task='classification',
                                     primary_metric='AUC_weighted',
                                     experiment_timeout_minutes=30,
                                     training_data=data_train,
                                     label_column_name=label,
                                     n_cross_validations=5,
                                     enable_voting_ensemble=False,
                                     enable_stack_ensemble=False
                                    )
    

    Als u het standaard ensemblegedrag wilt wijzigen, zijn er meerdere standaardargumenten die kunnen worden opgegeven als kwargs in een AutoMLConfig object.

    Belangrijk

    De volgende parameters zijn geen expliciete parameters van de Klasse AutoMLConfig.

    • ensemble_download_models_timeout_sec: Tijdens votingEnsemble en StackEnsemble modelgeneratie worden meerdere aangepaste modellen van de vorige onderliggende uitvoeringen gedownload. Als u deze fout krijgt: AutoMLEnsembleException: Could not find any models for running ensembling, moet u mogelijk meer tijd geven om de modellen te kunnen downloaden. De standaardwaarde is 300 seconden voor het parallel downloaden van deze modellen en er is geen maximale time-outlimiet. Configureer deze parameter met een hogere waarde dan 300 sec. Als er meer tijd nodig is.

      Notitie

      Als de time-out is bereikt en er modellen zijn gedownload, gaat de sembling verder met zoveel modellen die zijn gedownload. Het is niet vereist dat alle modellen moeten worden gedownload om binnen die time-out te voltooien. De volgende parameters zijn alleen van toepassing op StackEnsemble-modellen :

    • stack_meta_learner_type: de meta-learner is een model dat is getraind op de uitvoer van de afzonderlijke heterogene modellen. Standaardmetalers zijn LogisticRegression bedoeld voor classificatietaken (of LogisticRegressionCV als kruisvalidatie is ingeschakeld) en ElasticNet voor regressie-/prognosetaken (of ElasticNetCV als kruisvalidatie is ingeschakeld). Deze parameter kan een van de volgende tekenreeksen zijn: LogisticRegression, LogisticRegressionCV, LightGBMClassifier, ElasticNet, ElasticNetCV, , , LightGBMRegressorof LinearRegression.

    • stack_meta_learner_train_percentage: geeft het aandeel van de trainingsset op (bij het kiezen van het trainings- en validatietype) dat moet worden gereserveerd voor het trainen van de meta-learner. De standaardwaarde is 0.2.

    • stack_meta_learner_kwargs: optionele parameters die moeten worden doorgegeven aan de initialisatiefunctie van de meta-learner. Deze parameters en parametertypen weerspiegelen de parameters en parametertypen van de bijbehorende modelconstructor en worden doorgestuurd naar de modelconstructor.

    De volgende code toont een voorbeeld van het opgeven van aangepast ensemblegedrag in een AutoMLConfig object.

    ensemble_settings = {
                         "ensemble_download_models_timeout_sec": 600
                         "stack_meta_learner_type": "LogisticRegressionCV",
                         "stack_meta_learner_train_percentage": 0.3,
                         "stack_meta_learner_kwargs": {
                                                        "refit": True,
                                                        "fit_intercept": False,
                                                        "class_weight": "balanced",
                                                        "multi_class": "auto",
                                                        "n_jobs": -1
                                                      }
                        }
    automl_classifier = AutoMLConfig(
                                     task='classification',
                                     primary_metric='AUC_weighted',
                                     experiment_timeout_minutes=30,
                                     training_data=train_data,
                                     label_column_name=label,
                                     n_cross_validations=5,
                                     **ensemble_settings
                                    )
    

    Criteria voor afsluiten

    Er zijn enkele opties die u in uw AutoMLConfig kunt definiëren om uw experiment te beëindigen.

    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.
    Na een lange tijdsduur Gebruik experiment_timeout_minutes in uw instellingen om te definiëren hoe lang, in minuten, uw experiment moet blijven worden uitgevoerd.

    Om time-outfouten met experimenten te voorkomen, is er minimaal 15 minuten of 60 minuten als de rij per kolom groter is dan 10 miljoen.
    Er is een score bereikt Gebruik experiment_exit_score voltooit het experiment nadat een opgegeven primaire metrische score is bereikt.

    Experiment uitvoeren

    Waarschuwing

    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.

    Voor geautomatiseerde ML maakt u een Experiment object, een benoemd object in een Workspace gebruikt om experimenten uit te voeren.

    from azureml.core.experiment import Experiment
    
    ws = Workspace.from_config()
    
    # Choose a name for the experiment and specify the project folder.
    experiment_name = 'Tutorial-automl'
    project_folder = './sample_projects/automl-classification'
    
    experiment = Experiment(ws, experiment_name)
    

    Dien het experiment in om een model uit te voeren en te genereren. Geef de AutoMLConfig methode door aan de submit methode om het model te genereren.

    run = experiment.submit(automl_config, show_output=True)
    

    Notitie

    Afhankelijkheden worden eerst geïnstalleerd op een nieuwe computer. Het kan tot 10 minuten duren voordat de uitvoer wordt weergegeven. Instellen show_output op True resultaten in uitvoer die op de console wordt weergegeven.

    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 het nieuwe 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 in uw AutoMLConfig object. Als deze niet is geconfigureerd, is standaard slechts één gelijktijdige onderliggende uitvoering/iteratie per experiment toegestaan. In het geval van een rekenproces max_concurrent_iterations 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.

    U kunt de hyperparameters, de schaal- en normalisatietechnieken en het algoritme bekijken dat wordt toegepast op een specifieke geautomatiseerde ML-uitvoering met de aangepaste codeoplossing. print_model()

    Fooi

    Met geautomatiseerde ML kunt u ook de gegenereerde modeltrainingscode voor getrainde Auto ML-modellen bekijken. Deze functionaliteit is beschikbaar als openbare preview en kan op elk gewenst moment worden gewijzigd.

    Geautomatiseerde machine learning-uitvoeringen bewaken

    Voor geautomatiseerde ML-uitvoeringen moet u de grafieken uit een vorige uitvoering openen door <<experiment_name>> de juiste naam van het experiment:

    from azureml.widgets import RunDetails
    from azureml.core.run import Run
    
    experiment = Experiment (workspace, <<experiment_name>>)
    run_id = 'autoML_my_runID' #replace with run_ID
    run = Run(experiment, run_id)
    RunDetails(run).show()
    

    Jupyter notebook widget for Automated Machine Learning

    Modellen testen (preview)

    Belangrijk

    Het testen van uw modellen met een testgegevensset om geautomatiseerde door ML gegenereerde modellen te evalueren, is een preview-functie. Deze mogelijkheid is een experimentele preview-functie en kan op elk gewenst moment worden gewijzigd.

    Door de test_data of test_size parameters door te geven aan de AutoMLConfig, wordt automatisch een externe testuitvoering geactiveerd die gebruikmaakt van de opgegeven testgegevens om het beste model te evalueren dat geautomatiseerde ML aanbeveelt na voltooiing van het experiment. Deze externe testuitvoering wordt uitgevoerd aan het einde van het experiment, zodra het beste model is bepaald. Bekijk hoe u testgegevens doorgeeft aan uw AutoMLConfig.

    Resultaten van testtaak ophalen

    U kunt de voorspellingen en metrische gegevens ophalen uit de externe testtaak uit de Azure Machine Learning-studio of met de volgende code.

    best_run, fitted_model = remote_run.get_output()
    test_run = next(best_run.get_children(type='automl.model_test'))
    test_run.wait_for_completion(show_output=False, wait_post_processing=True)
    
    # Get test metrics
    test_run_metrics = test_run.get_metrics()
    for name, value in test_run_metrics.items():
        print(f"{name}: {value}")
    
    # Get test predictions as a Dataset
    test_run_details = test_run.get_details()
    dataset_id = test_run_details['outputDatasets'][0]['identifier']['savedId']
    test_run_predictions = Dataset.get_by_id(workspace, dataset_id)
    predictions_df = test_run_predictions.to_pandas_dataframe()
    
    # Alternatively, the test predictions can be retrieved via the run outputs.
    test_run.download_file("predictions/predictions.csv")
    predictions_df = pd.read_csv("predictions.csv")
    
    

    Met de modeltesttaak wordt het bestand predictions.csv gegenereerd dat is opgeslagen in het standaardgegevensarchief dat is gemaakt met de werkruimte. Dit gegevensarchief is zichtbaar voor alle gebruikers met hetzelfde abonnement. Testtaken worden niet aanbevolen voor scenario's als een van de gegevens die worden gebruikt voor of gemaakt door de testtaak privé moet blijven.

    Bestaand geautomatiseerd ML-model testen

    Als u andere bestaande geautomatiseerde ML-modellen wilt testen die zijn gemaakt, de beste taak of onderliggende taak, gebruikt ModelProxy() u om een model te testen nadat de belangrijkste AutoML-uitvoering is voltooid. ModelProxy() retourneert al de voorspellingen en metrische gegevens en vereist geen verdere verwerking om de uitvoer op te halen.

    Notitie

    ModelProxy is een experimentele preview-klasse en kan op elk gewenst moment veranderen.

    De volgende code laat zien hoe u een model test vanuit elke uitvoering met behulp van de methode ModelProxy.test(). In de methode test() kunt u opgeven of u alleen de voorspellingen van de testuitvoering wilt zien met de include_predictions_only parameter.

    from azureml.train.automl.model_proxy import ModelProxy
    
    model_proxy = ModelProxy(child_run=my_run, compute_target=cpu_cluster)
    predictions, metrics = model_proxy.test(test_data, include_predictions_only= True
    )
    

    Modellen registreren en implementeren

    Nadat u een model hebt getest en hebt bevestigd dat u het in productie wilt gebruiken, kunt u het model registreren voor later gebruik en

    Als u een model wilt registreren bij een geautomatiseerde ML-uitvoering, gebruikt u de register_model() methode.

    
    best_run = run.get_best_child()
    print(fitted_model.steps)
    
    model_name = best_run.properties['model_name']
    description = 'AutoML forecast example'
    tags = None
    
    model = run.register_model(model_name = model_name, 
                                      description = description, 
                                      tags = tags)
    

    Zie hoe en waar u een model implementeert voor meer informatie over het maken van een implementatieconfiguratie en het implementeren van een geregistreerd model in een webservice.

    Fooi

    Voor geregistreerde modellen is implementatie met één klik beschikbaar via de Azure Machine Learning-studio. Zie hoe u geregistreerde modellen implementeert vanuit de studio.

    Interpreteerbaarheid van modellen

    Met modelinterpreteerbaarheid kunt u begrijpen waarom uw modellen voorspellingen hebben gedaan en de onderliggende waarde voor functiebelang. De SDK bevat verschillende pakketten voor het inschakelen van modelinterpretabiliteitsfuncties, zowel tijdens training als deductietijd, voor lokale en geïmplementeerde modellen.

    Bekijk hoe u interpreteerbaarheidsfuncties specifiek kunt inschakelen binnen geautomatiseerde ML-experimenten.

    Zie het conceptartikel over interpreteerbaarheid voor algemene informatie over hoe modeluitleg en functiebelang kunnen worden ingeschakeld op andere gebieden van de SDK buiten geautomatiseerde machine learning.

    Notitie

    Het ForecastTCN-model wordt momenteel niet ondersteund door de Explanation Client. Dit model retourneert geen uitlegdashboard als het wordt geretourneerd als het beste model en biedt geen ondersteuning voor uitvoeringen van uitleg op aanvraag.

    Volgende stappen