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:
Een Azure Machine Learning-werkruimte. Zie Werkruimtebronnen maken om de werkruimte te maken.
De Azure Machine Learning Python SDK is geïnstalleerd. Als u de SDK wilt installeren, kunt u dat ook doen:
Maak een rekenproces, waarmee de SDK automatisch wordt geïnstalleerd en vooraf is geconfigureerd voor ML-werkstromen. Zie Een Azure Machine Learning-rekenproces maken en beheren voor meer informatie.
Installeer het
automl
pakket zelf, inclusief de standaardinstallatie van de SDK.
Belangrijk
Voor de Python-opdrachten in dit artikel is de meest recente
azureml-train-automl
pakketversie vereist.- Installeer het meest recente
azureml-train-automl
pakket in uw lokale omgeving. - Zie de releaseopmerkingen voor meer informatie over het nieuwste
azureml-train-automl
pakket.
Waarschuwing
Python 3.8 is niet compatibel met
automl
.
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
, regression
en 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. |
Tip
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:
- Geef testgegevens door aan uw AutoMLConfig-object.
- Test de geautomatiseerde ML-modellen die zijn gegenereerd voor uw experiment.
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.
Voor regressie, online gradiëntafnameregressor en snelle lineaire regressor
Voor classificatie, gemiddelde perceptronclassificatie en lineaire SVM-classificatie; waarbij de lineaire SVM-classificatie zowel grote gegevens als kleine gegevensversies heeft.
Als u deze heuristieken wilt overschrijven, past u de volgende instellingen toe:
Opdracht | Instelling | Opmerkingen |
---|---|---|
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 | ||
Externe ML-rekenclusters |
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.
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_recall
en 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 |
Sentimentanalyse |
norm_macro_recall |
Voorspelling voor verloop |
precision_score_weighted |
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. 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_error
en 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 featurization
in- of uitschakelen. In de volgende tabel ziet u de geaccepteerde instellingen voor featurization in het AutoMLConfig-object.
Configuratie van featurization | Beschrijving |
---|---|
"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 tegenkomt: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 zijnLogisticRegression
bedoeld voor classificatietaken (ofLogisticRegressionCV
als kruisvalidatie is ingeschakeld) enElasticNet
voor regressie-/prognosetaken (ofElasticNetCV
als kruisvalidatie is ingeschakeld). Deze parameter kan een van de volgende tekenreeksen zijn:LogisticRegression
,LogisticRegressionCV
,LightGBMClassifier
,ElasticNet
,ElasticNetCV
, , ,LightGBMRegressor
ofLinearRegression
.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 is0.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 uw trainingsresultaten bekijken in een widget of inline als u zich in een notitieblok bevindt. Zie Geautomatiseerde machine learning-uitvoeringen bewaken voor meer informatie.
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.
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()
Tip
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()
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.
Waarschuwing
Deze functie is niet beschikbaar voor de volgende geautomatiseerde ML-scenario's
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 predictions.csv-bestand 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.
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.
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
Meer informatie over hoe en waar u een model kunt implementeren.
Meer informatie over het trainen van een regressiemodel met geautomatiseerde machine learning.