Einrichten einer AutoML-Trainingsausführung für tabellarische Daten mit der Azure Machine Learning-CLI und dem Python SDK
GILT FÜR:Azure CLI ML-Erweiterung v2 (aktuell)Python SDK azure-ai-ml v2 (aktuell)
In diesem Leitfaden erfahren Sie, wie Sie einen Trainingsauftrag für automatisiertes maschinelles Lernen (AutoML) mit dem Azure Machine Learning Python SDK v2 einrichten. Das automatisierte ML wählt einen Algorithmus und Hyperparameter für Sie aus und generiert ein Modell, das Sie anschließend bereitstellen können. Dieser Leitfaden enthält Details zu den verschiedenen Optionen, die Sie zum Konfigurieren von automatisierten ML-Experimenten verwenden können.
Wenn Sie lieber ohne Code arbeiten, finden Sie hier Informationen zum Einrichten von AutoML-Training in Azure Machine Learning Studio ohne Code.
Voraussetzungen
- Ein Azure-Abonnement. Wenn Sie nicht über ein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen. Probieren Sie die kostenlose oder kostenpflichtige Version von Azure Machine Learning aus.
- Ein Azure Machine Learning-Arbeitsbereich. Wenn Sie keine haben, können Sie die Schritte im Artikel Ressourcen erstellen, um zu beginnen ausführen.
Installieren Sie zur Verwendung der SDK-Informationen das Azure Machine Learning SDK v2 für Python.
zum Installieren des SDK können Sie wie folgt vorgehen:
- Erstellen Sie eine Compute-Instanz, auf der das neueste Azure Machine Learning Python SDK bereits installiert und für ML-Workflows vorkonfiguriert ist. Weitere Informationen finden Sie unter Erstellen einer Azure Machine Learning-Compute-Instanz.
- Installieren des SDK auf dem lokalen Computer
Einrichten des Arbeitsbereichs
Um eine Verbindung mit einem Arbeitsbereich herzustellen, müssen Sie ein Abonnement, eine Ressourcengruppe und den Namen des Arbeitsbereichs angeben.
Die Arbeitsbereichsdetails werden im MLClient
von azure.ai.ml
verwendet, um Zugriff auf den gewünschten Azure Machine Learning-Arbeitsbereich zu erhalten.
Im folgenden Beispiel wird die standardmäßige Azure-Authentifizierung zusammen mit der standardmäßigen Arbeitsbereichskonfiguration oder einer beliebigen config.json
-Datei verwendet, die Sie möglicherweise in die Ordnerstruktur kopiert haben. Wenn keine config.json
gefunden wird, müssen Sie die Werte für „subscription_id“, „resource_group“ und „workspace“ bei der MLClient
-Erstellung manuell eingeben.
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)
Datenquelle und Datenformat
Um Trainingsdaten für AutoML in SDK v2 bereitzustellen, müssen Sie diese über eine MLTable in die Cloud hochladen.
Voraussetzungen für das Laden von Daten in eine MLTable:
- Die Daten müssen in Tabellenform vorliegen.
- Der Wert, der vorhergesagt werden soll (Zielspalte), muss in den Daten vorhanden sein.
Auf die Trainingsdaten muss von der Remotecomputeressource aus zugegriffen werden können. AutoML v2 (Python SDK und CLI/YAML) akzeptiert MLTable-Datenressourcen (v2), unterstützt aber aus Gründen der Abwärtskompatibilität auch tabellarische v1-Datasets (registrierte tabellarische Datasets) über dieselben Eingabedateneigenschaften. Es wird jedoch empfohlen, die in v2 verfügbare MLTable zu verwenden. In diesem Beispiel wird davon ausgegangen, dass die Daten im lokalen Pfad, ./train_data/bank_marketing_train_data.csv
, gespeichert sind.
Sie können eine MLTable mit dem mltable Python SDK erstellen, wie im folgenden Beispiel gezeigt:
import mltable
paths = [
{'file': './train_data/bank_marketing_train_data.csv'}
]
train_table = mltable.from_delimited_files(paths)
train_table.save('./train_data')
Mit diesem Code wird eine neue Datei,./train_data/MLTable
, erstellt, die das Dateiformat und die Ladeanweisungen enthält.
./train_data
Der Ordner enthält nun die MLTable-Definitionsdatei sowie die Datendatei, bank_marketing_train_data.csv
.
Weitere Informationen zu MLTable finden Sie im Artikel mltable-Anleitung.
Trainieren, Überprüfen und Testen von Daten
Sie können separate Trainings- und Validierungsdatasets angeben, aber die Trainingsdaten müssen im Parameter training_data
in der factory-Funktion Ihres AutoML-Auftrags angegeben werden.
Wenn Sie keinen validation_data
- oder n_cross_validation
-Parameter explizit angeben, wendet das automatisierte maschinelle Lernen Standardverfahren an, um zu bestimmen, wie die Überprüfung durchgeführt wird. Diese Bestimmung hängt von der Anzahl der Zeilen im Dataset ab, das Ihrem training_data
-Parameter zugewiesen wird.
Umfang der Trainingsdaten | Validierungsverfahren |
---|---|
Mehr als 20.000 Zeilen | Es wird eine Aufteilung in Trainings- und Validierungsdaten vorgenommen. Standardmäßig werden 10 % des ursprünglichen Trainingsdatasets als Validierungsset verwendet. Dieses Validierungsset wird seinerseits für die Metrikberechnung verwendet. |
Weniger als oder gleich 20.000 Zeilen | Der Kreuzvalidierungsansatz wird angewendet. Die Standardanzahl der Faltungen (Folds) hängt von der Zeilenanzahl ab. Wenn das Dataset weniger als 1.000 Zeilen aufweist, werden 10 Faltungen verwendet. Wenn die Anzahl der Zeilen gleich oder zwischen 1.000 und 20.000 liegt, werden drei Faltungen verwendet. |
Computeziel zum Ausführen des Experiments
AutoML-Aufträge mit dem Python SDK v2 (oder CLI v2) werden derzeit nur für Azure Machine Learning-Remotecomputeressourcen unterstützt (Cluster oder Compute-Instanz).
Erfahren Sie mehr über das Erstellen von Compute-Instanzen mit dem Python SDKv2 (oder CLIv2).
Konfigurieren der Experimenteinstellungen
Es gibt mehrere Optionen zum Konfigurieren von Experimenten mit automatisiertem ML. Diese Konfigurationsparameter werden in Ihrer Aufgabenmethode festgelegt. Mit den Einstellungen training
und limits
können Sie außerdem Einstellungen für das Auftragstraining und Beendigungskriterien festlegen.
Das folgende Beispiel zeigt die erforderlichen Parameter für eine Klassifizierungsaufgabe, die die Genauigkeit als primäre Metrik und eine 5-fache Kreuzvalidierung festlegt.
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
)
Auswählen des Aufgabentyps für maschinelles Lernen (ML-Problem)
Bevor Sie Ihren AutoML-Auftrag übermitteln können, müssen Sie die Art des ML-Problems bestimmen, das Sie lösen möchten. Dieses Problem bestimmt, welche Funktion Ihr AutoML-Auftrag verwendet und welche Modellalgorithmen angewendet werden.
Automatisierte ML unterstützt Aufgaben, die auf tabellarischen Daten basieren (Klassifizierung, Regression, Vorhersage), Aufgaben für maschinelles Sehen (z. B. Bildklassifizierung und Objekterkennung) und Aufgaben zur Verarbeitung natürlicher Sprache (z. B. Textklassifizierung und Entitätserkennung). Weitere Informationen finden Sie in unserem Artikel zu Aufgabentypen. Weitere Informationen zum Einrichten von Vorhersageaufträgen finden Sie in unserem Leitfaden zur Zeitreihenvorhersage.
Unterstützte Algorithmen
Beim automatisierten maschinellen Lernen werden während des Automatisierungs- und Optimierungsprozesses verschiedene Modelle und Algorithmen getestet. Benutzer müssen den Algorithmus nicht angeben.
Die Aufgabenmethode bestimmt die Liste der Algorithmen/Modelle, die angewendet werden sollen. Verwenden Sie die Parameter allowed_training_algorithms
oder blocked_training_algorithms
in der Konfiguration des AutoML-Auftrags training
, um die Iterationen mit den verfügbaren Modellen weiter zu modifizieren, um sie ein- oder auszuschließen.
In der folgenden Liste mit Links können Sie die unterstützten Algorithmen für die unten aufgeführten Machine Learning-Aufgaben erkunden.
Klassifizierung | Regression | Zeitreihe und Vorhersage |
---|---|---|
Logistische Regression* | Elastisches Netz* | AutoARIMA |
Light GBM* | Light GBM* | Prophet |
Gradient Boosting* | Gradient Boosting* | Elastisches Netz |
Entscheidungsstruktur* | Entscheidungsstruktur* | Light GBM |
K nächste Nachbarn* | K nächste Nachbarn* | K nächste Nachbarn |
Lineare SVC* | LARS-Lasso* | Entscheidungsstruktur |
Support Vector Classification (SVC)* | Stochastisches Gradientenabstiegsverfahren (SGD)* | Arimax |
Zufällige Gesamtstruktur* | Random Forest | LARS Lasso |
Extremely Randomized Trees* | Extremely Randomized Trees* | Extremely Randomized Trees* |
XGBoost* | XGBoost* | Random Forest |
Naive Bayes* | Xgboost | TCNForecaster |
Stochastisches Gradientenabstiegsverfahren (SGD)* | Stochastisches Gradientenabstiegsverfahren (SGD) | Gradient Boosting |
ExponentialSmoothing | ||
SeasonalNaive | ||
Average | ||
Naiv | ||
SeasonalAverage |
Mit zusätzlichen Algorithmen unten.
- Algorithmen für die Bildklassifizierung mit mehreren Klassen
- Algorithmen für die Bildklassifizierung mit mehreren Bezeichnungen
- Algorithmen für die Bildobjekterkennung
- Algorithmen für die Klassifizierung mit mehreren Bezeichnungen basierend auf NLP-Text
- Algorithmen für die Erkennung benannter Entitäten basierend auf NLP-Text
Unter diesem Link finden Sie Beispielnotebooks für jeden Aufgabentyp.
Primary metric (Primäre Metrik)
Der Parameter primary_metric
bestimmt die Metrik, die während des Modelltrainings für die Optimierung verwendet werden soll. Die verfügbaren Metriken, die Sie auswählen können, richten sich nach der Art der ausgewählten Aufgabe.
Bei der Auswahl einer primären Metrik für optimiertes automatisiertes ML muss eine Vielzahl von Faktoren berücksichtigt werden. Der wichtigste Aspekt sollte sein, welche Metrik Ihre Geschäftsanforderungen am besten widerspiegelt. Anschließend sollten Sie überprüfen, ob die Metrik für Ihr Datasetprofil (Datengröße, Datenbereich, Klassenverteilung usw.) geeignet ist. In den folgenden Abschnitten werden die empfohlenen primären Metriken basierend auf dem Aufgabentyp und Geschäftsszenario zusammengefasst.
Informationen zu den speziellen Definitionen dieser Metriken finden Sie unter Grundlagen von Ergebnissen des automatisierten maschinellen Lernens.
Metriken für Szenarien zur Klassifizierung mit mehreren Klassen
Diese Metriken gelten für alle Klassifizierungsszenarien, Tabellendaten, Bilder/maschinelles Sehen und NLP-Text eingeschlossen.
Schwellenwertabhängige Metriken wie accuracy
, recall_score_weighted
, norm_macro_recall
und precision_score_weighted
sind möglicherweise nicht optimal für kleine Datensätze, die eine große Klassenschiefe (Klassenungleichgewicht) aufweisen, oder wenn der erwartete Metrikwert sehr nahe bei 0,0 oder 1,0 liegt. In diesen Fällen eignet sich AUC_weighted
möglicherweise besser als primäre Metrik. Nach Abschluss des automatisierten ML können Sie das stärkste Modell basierend auf der Metrik auswählen, die sich am besten für Ihre Geschäftsanforderungen eignet.
Metrik | Beispiel eines Anwendungsfalls |
---|---|
accuracy |
Bildklassifizierung, Stimmungsanalyse, Vorhersage der Kundenabwanderung |
AUC_weighted |
Betrugserkennung, Bildklassifizierung, Anomalie-/Spamerkennung |
average_precision_score_weighted |
Stimmungsanalyse |
norm_macro_recall |
Vorhersage der Kundenabwanderung |
precision_score_weighted |
Metriken für Szenarien zur Klassifizierung mit mehreren Bezeichnungen
Für die Textklassifizierung mit mehreren Bezeichnungen ist „Genauigkeit“ derzeit die einzige primäre Metrik, die unterstützt wird.
Für die Bildklassifizierung mit mehreren Bezeichnungen werden die unterstützten primären Metriken in der ClassificationMultilabelPrimaryMetrics-Enumeration definiert.
Metriken für Szenarien zur Erkennung benannter Entitäten basierend auf NLP-Text
- Für die Erkennung benannter Entitäten basierend auf NLP-Text ist „Genauigkeit“ derzeit die einzige primäre Metrik, die unterstützt wird.
Metriken für Regressionsszenarien
r2_score
, normalized_mean_absolute_error
und normalized_root_mean_squared_error
versuchen alle, die Vorhersagefehler zu minimieren. r2_score
und normalized_root_mean_squared_error
minimieren beide die durchschnittlichen quadratischen Abweichungen, während normalized_mean_absolute_error
den durchschnittlichen absoluten Wert der Fehler minimiert. Der absolute Wert behandelt Fehler aller Größenordnungen gleich, und quadrierte Fehler haben einen viel größeren Nachteil für Fehler mit größeren absoluten Werten. Je nachdem, ob größere Fehler stärker bestraft werden sollen oder nicht, kann man wählen, ob man den quadratischen Fehler oder den absoluten Fehler optimiert.
Der Hauptunterschied zwischen r2_score
und normalized_root_mean_squared_error
ist die Art und Weise, wie sie normalisiert werden, und ihre Bedeutung. normalized_root_mean_squared_error
ist der mittlere quadratische Fehler, normiert auf den Bereich und kann als durchschnittliche Fehlergröße für die Vorhersage interpretiert werden. r2_score
ist der mittlere quadratische Fehler, normalisiert durch eine Schätzung der Varianz der Daten. Es ist der Anteil der Variation, der durch das Modell erfasst werden kann.
Hinweis
r2_score
und normalized_root_mean_squared_error
verhalten sich auch als primäre Metriken ähnlich. Wenn ein fester Validierungssatz verwendet wird, optimieren diese beiden Metriken dasselbe Ziel, nämlich den mittleren quadratischen Fehler, und werden von demselben Modell optimiert. Wenn nur ein Trainingsset zur Verfügung steht und Kreuzvalidierung angewendet wird, würden sie sich leicht unterscheiden, da der Normalisierer für normalized_root_mean_squared_error
als Bereich des Trainingssets festgelegt ist, aber der Normalisierer für r2_score
würde für jede Falte variieren, da er die Varianz für jede Falte darstellt.
Wenn der Rang und nicht der genaue Wert von Interesse ist, kann spearman_correlation
die bessere Wahl sein, da er die Rangkorrelation zwischen realen Werten und Vorhersagen misst.
AutoML unterstützt derzeit keine primären Metriken, die den relativen Unterschied zwischen Vorhersagen und Beobachtungen messen. Die Metriken r2_score
, normalized_mean_absolute_error
und normalized_root_mean_squared_error
sind Measures der absoluten Differenz. Wenn sich eine Vorhersage beispielsweise von einer Beobachtung um 10 Einheiten unterscheidet, berechnen diese Metriken den gleichen Wert, wenn die Beobachtung 20 Einheiten oder 20.000 Einheiten ist. Im Gegensatz dazu ergibt eine prozentuale Differenz, die ein relatives Maß ist, Fehler von 50 % bzw. 0,05 %! Um relative Unterschiede zu optimieren, können Sie AutoML mit einer unterstützten primären Metrik ausführen und dann das Modell mit dem besten mean_absolute_percentage_error
oder root_mean_squared_log_error
auswählen. Beachten Sie, dass diese Metriken nicht definiert sind, wenn alle Beobachtungswerte 0 sind, sodass sie möglicherweise nicht immer eine gute Wahl sind.
Metrik | Beispiel eines Anwendungsfalls |
---|---|
spearman_correlation |
|
normalized_root_mean_squared_error |
Preisvorhersage (Haus/Produkt/Trinkgeld), Vorhersage eines Bewertungsergebnisses |
r2_score |
Verspätungen bei Fluggesellschaften, Gehaltsschätzung, erforderlicher Zeitaufwand bis zur Problemlösung |
normalized_mean_absolute_error |
Metriken für Szenarien zur Zeitreihenvorhersage
Die Empfehlungen ähneln den Empfehlungen für Regressionsszenarien.
Metrik | Beispiel eines Anwendungsfalls |
---|---|
normalized_root_mean_squared_error |
Preisvorhersage, Bestandoptimierung, Bedarfsvorhersage |
r2_score |
Preisvorhersage, Bestandoptimierung, Bedarfsvorhersage |
normalized_mean_absolute_error |
Metriken für Szenarien zur Bildobjekterkennung
- Für die Bildobjekterkennung werden die unterstützten primären Metriken in der ObjectDetectionPrimaryMetrics-Enumeration definiert.
Metriken für Szenarien zur Bildinstanzsegmentierung
- Für Szenarien zur Bildinstanzsegmentierung werden die unterstützten primären Metriken in der InstanceSegmentationPrimaryMetrics-Enumeration definiert.
Merkmalerstellung für Daten
Bei jedem AutoML-Experiment werden Ihre Daten automatisch in Zahlen und Zahlenvektoren umgewandelt und außerdem skaliert und normalisiert, um Algorithmen zu unterstützen, die empfindlich auf Features in unterschiedlichen Skalierungen reagieren. Diese Datentransformationen werden als Featurisierung bezeichnet.
Hinweis
Die Schritte zur Featurebereitstellung bei automatisiertem maschinellen Lernen (Featurenormalisierung, Behandlung fehlender Daten, Umwandlung von Text in numerische Daten usw.) werden Teil des zugrunde liegenden Modells. Bei Verwendung des Modells für Vorhersagen werden die während des Trainings angewendeten Schritte zur Featurebereitstellung automatisch auf Ihre Eingabedaten angewendet.
Beim Konfigurieren Ihrer automatisierten ML-Aufträge können Sie die featurization
-Einstellungen aktivieren/deaktivieren.
Die folgende Tabelle zeigt die akzeptierten Einstellungen für die Featurisierung.
Konfiguration der Featurebereitstellung | BESCHREIBUNG |
---|---|
"mode": 'auto' |
Gibt an, dass im Rahmen der Vorverarbeitung die folgenden Schritte für Datenschutzmaßnahmen und Featurebereitstellung automatisch durchgeführt werden. Standardeinstellung. |
"mode": 'off' |
Gibt an, dass der Featurisierungsschritt nicht automatisch durchgeführt werden soll |
"mode": 'custom' |
Gibt an, dass ein angepasster Featurebereitstellungsschritt verwendet werden soll. |
Der folgende Code zeigt, wie Sie die benutzerdefinierte Featurisierung in diesem Fall für einen Regressionsauftrag bereitstellen können.
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"},
)
Exit Criteria (Beendigungskriterien)
Sie können in der Funktion set_limits()
einige Optionen definieren, um Ihr Experiment vor der Beendigung des Auftrags zu beenden.
Kriterien | description |
---|---|
Keine Kriterien | Wenn Sie keine Beendigungsparameter definieren, wird das Experiment fortgesetzt, bis kein weiterer Fortschritt bei Ihrer primären Metrik erzielt wird. |
timeout |
Legt fest, wie lange (in Minuten) Ihr Experiment noch ausgeführt werden soll. Ohne diese Angabe beträgt der Gesamttimeout für den Auftrag standardmäßig 6 Tage (8.640 Minuten). Wenn Sie ein Timeout angeben möchten, das kleiner oder gleich 1 Stunde (60 Minuten) ist, stellen Sie sicher, dass die Größe Ihres Datasets maximal 10.000.000 (Zeilen mal Spalte) beträgt, da es andernfalls zu einem Fehler kommt. Dieses Timeout schließt Setup, Featurisierung und Trainingsausführungen ein, nicht jedoch die Ensembling- und Modellerklärbarkeitsausführungen am Ende des Prozesses, da diese Aktionen erst nach Abschluss aller Testläufe (Unteraufträge) ausgeführt werden müssen. |
trial_timeout_minutes |
Die maximale Dauer in Minuten, die jeder Testlauf (Unterauftrag) ausgeführt werden kann, bevor er beendet wird. Sofern nicht angegeben, wird der Wert auf 1 Monat bzw. 43.200 Minuten festgelegt. |
enable_early_termination |
Gibt an, ob der Auftrag beendet wird, wenn sich die Bewertung kurzfristig nicht verbessert. |
max_trials |
Die maximale Anzahl von Testläufen/Ausführungen mit unterschiedlichen Kombinationen von Algorithmen und Hyperparametern, die während eines AutoML-Auftrags ausprobiert werden. Sofern nicht angegeben, wird der Wert standardmäßig auf 1.000 Testläufe festgelegt. Bei Verwendung von enable_early_termination kann die Anzahl der verwendeten Testläufe niedriger sein. |
max_concurrent_trials |
Repräsentiert die maximale Anzahl von Testläufen (Unteraufträge), die parallel ausgeführt werden sollen. Es empfiehlt sich, diese Zahl an die Anzahl der Knoten Ihres Clusters anzupassen. |
Ausführen des Experiments
Hinweis
Wenn Sie ein Experiment mit denselben Konfigurationseinstellungen und derselben primären Metrik mehrmals durchführen, werden Sie wahrscheinlich bei jedem Experiment eine Abweichung in der abschließenden metrischen Bewertung und in den generierten Modellen sehen. Die Algorithmen, die beim automatisierten maschinellen Lernen eingesetzt werden, weisen eine inhärente Zufälligkeit auf, die zu geringfügigen Abweichungen bei den im Experiment ausgegebenen Modellen und der abschließenden metrischen Bewertung eines empfohlenen Modells führen kann, z. B. bei der Genauigkeit. Sie werden wahrscheinlich auch Ergebnisse mit demselben Modellnamen, aber unterschiedlichen verwendeten Hyperparametern erhalten.
Warnung
Wenn Sie für Ihren Arbeitsbereich Firewallregeln und/oder eine Netzwerksicherheitsgruppe festgelegt haben, vergewissern Sie sich, dass die erforderlichen Berechtigungen für den ein- und ausgehenden Netzwerkdatenverkehr gemäß der Definition in Konfigurieren von ein- und ausgehendem Netzwerkdatenverkehr erteilt wurden.
Übermitteln Sie das auszuführende Experiment, um ein Modell zu generieren. Mit dem im Rahmen der erforderlichen Vorbereitungen erstellten MLClient
können Sie den folgenden Befehl im Arbeitsbereich ausführen.
# 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
Mehrere untergeordnete Ausführungen auf Clustern
Untergeordnete Ausführungen von automatisierten ML-Experimenten können auf einem Cluster durchgeführt werden, auf dem bereits ein anderes Experiment ausgeführt wird. Das Timing hängt jedoch davon ab, über wie viele Knoten der Cluster verfügt und ob diese Knoten zur Ausführung eines anderen Experiments zur Verfügung stehen.
Jeder Knoten im Cluster fungiert als einzelner virtueller Computer (VM), der eine einzelne Trainingsausführung durchführen kann. Für automatisiertes ML bedeutet dies eine untergeordnete Ausführung. Wenn alle Knoten ausgelastet sind, wird ein neues Experiment in die Warteschlange gestellt. Wenn es jedoch freie Knoten gibt, führt das neue Experiment untergeordnete Ausführungen von automatisiertem ML parallel auf den verfügbaren Knoten/VMs aus.
Um die Verwaltung von untergeordneten Ausführungen und deren Zeitpunkt der Durchführung zu erleichtern, empfehlen wir Ihnen, einen dedizierten Cluster pro Experiment zu erstellen und die Anzahl von max_concurrent_iterations
Ihres Experiments an die Anzahl der Knoten im Cluster anzupassen. Auf diese Weise verwenden Sie alle Clusterknoten gleichzeitig mit der von Ihnen gewünschten Anzahl von gleichzeitigen untergeordneten Ausführungen/Iterationen.
Konfigurieren Sie max_concurrent_iterations
in der limits
-Konfiguration. Wenn es nicht konfiguriert ist, ist standardmäßig nur eine gleichzeitige untergeordnete Ausführung/Iteration pro Experiment zulässig.
Im Fall einer Compute-Instanz kann max_concurrent_trials
auf die gleiche Anzahl von Kernen wie auf dem virtuellen Computer der Compute-Instanz festgelegt werden.
Untersuchen von Modellen und Metriken
Automatisiertes ML bietet Ihnen Möglichkeiten zur Überwachung und Auswertung Ihrer Trainingsergebnisse.
Definitionen und Beispiele für die Leistungsdiagramme und Metriken, die für jede Ausführung bereitgestellt werden, finden Sie unter Auswerten der Ergebnisse von Experimenten des automatisierten maschinellen Lernens.
Eine Zusammenfassung der Featurisierung und Informationen zu den Features, die zu einem bestimmten Modell hinzugefügt wurden, finden Sie unter Transparenz der Featurisierung.
Über die Seite „Modelle“ in der Benutzeroberfläche von Azure Machine Learning können Sie auch die Hyperparameter anzeigen, die beim Training eines bestimmten Modells verwendet werden. Außerdem können Sie den verwendeten Trainingscode des internen Modells anzeigen und anpassen.
Registrieren und Bereitstellen von Modellen
Nachdem Sie ein Modell getestet und entschieden haben, es in der Produktion einzusetzen, können Sie es zur späteren Verwendung registrieren.
Tipp
Für registrierte Modelle steht in Azure Machine Learning Studio die Bereitstellung mit nur einem Klick zur Verfügung. Weitere Informationen finden Sie unter Bereitstellen registrierter Modelle aus Studio.
AutoML in Pipelines
Um AutoML in Ihren MLOps-Workflows zu nutzen, können Sie AutoML-Auftragsschritte Ihren Azure Machine Learning-Pipelines hinzufügen. Damit können Sie Ihren gesamten Workflow automatisieren, indem Sie Ihre Datenvorbereitungsskripts mit AutoML verbinden und dann das daraus resultierende beste Modell registrieren und validieren.
Nachfolgend finden Sie ein Beispiel für eine Pipeline mit einer AutoML-Klassifizierungskomponente und einer Befehlskomponente, die die resultierende AutoML-Ausgabe zeigt. Beachten Sie, dass auf die Eingaben (Trainings- und Validierungsdaten) und Ausgaben (bestes Modell) in verschiedenen Schritten Bezug genommen wird.
# 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
Weitere Beispiele dafür, wie Sie AutoML in Ihre Pipelines einbeziehen können, finden Sie in unserem Beispielrepository.
AutoML im großen Stil: verteiltes Training
Für Große Datenszenarien unterstützt AutoML verteiltes Training für eine begrenzte Gruppe von Modellen:
Verteilter Algorithmus | Unterstützte Aufgaben | Grenzwert für die Datengröße (ungefähr) |
---|---|---|
LightGBM | Klassifizierung, Regression | 1 TB |
TCNForecaster | Vorhersagen | 200GB |
Verteilte Trainingsalgorithmen partitionieren und verteilen Ihre Daten für das Modelltraining automatisch auf mehrere Computeknoten.
Hinweis
Kreuzvalidierung, Ensemblemodelle, ONNX-Unterstützung und Codegenerierung werden im verteilten Trainingsmodus derzeit nicht unterstützt. Außerdem kann AutoML Entscheidungen treffen, z. B. das Einschränken verfügbarer Featurizer und Subsamplingdaten, die für die Validierung, Erklärbarkeit und Modellauswertung verwendet werden.
Verteiltes Training für Klassifizierung und Regression
Um verteiltes Training für Klassifizierung oder Regression zu verwenden, müssen Sie die Eigenschaften training_mode
und max_nodes
des Auftragsobjekts festlegen.
Eigenschaft | BESCHREIBUNG |
---|---|
training_mode | Gibt den Trainingsmodus an; distributed oder non_distributed . Wird standardmäßig auf non_distributed festgelegt. |
max_nodes | Die Anzahl der Knoten, die für das Training durch jede AutoML-Testversion verwendet werden sollen. Diese Einstellung muss größer als oder gleich 4 sein. |
Das folgende Codebeispiel zeigt ein Beispiel für diese Einstellungen für einen Klassifizierungsauftrag:
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
)
Hinweis
Derzeit unterstützt verteiltes Training für Klassifizierungs- und Regressionsaufgaben mehrere gleichzeitige Testversionen nicht. Modelltests werden sequenziell mit jeder Testversion mithilfe von max_nodes
-Knoten ausgeführt. Die Grenzwerteinstellung max_concurrent_trials
wird derzeit ignoriert.
Verteiltes Training für Vorhersagen
Informationen dazu, wie verteiltes Training für Vorhersageaufgaben funktioniert, finden Sie in unserem Artikel Vorhersagen im großen Stil. Um verteiltes Training für Vorhersagen zu verwenden, müssen Sie die Eigenschaften training_mode
, enable_dnn_training
, max_nodes
und optional max_concurrent_trials
des Auftragsobjekts festlegen.
Eigenschaft | BESCHREIBUNG |
---|---|
training_mode | Gibt den Trainingsmodus an; distributed oder non_distributed . Wird standardmäßig auf non_distributed festgelegt. |
enable_dnn_training | Flag, um Deep Neural Network-Modelle zu aktivieren. |
max_concurrent_trials | Dies ist die maximale Anzahl von Testmodellen, die parallel trainiert werden. Der Standardwert lautet 1. |
max_nodes | Die Gesamtanzahl der Knoten, die für das Training verwendet werden sollen. Diese Einstellung muss größer als oder gleich 2 sein. Für Vorhersageaufgaben wird jedes Testmodell mithilfe der Knoten $\text{max}\left(2, \text{floor}( \text{max_nodes} / \text{max_concurrent_trials}) \right)$ trainiert. |
Das folgende Codebeispiel zeigt ein Beispiel für diese Einstellungen für einen Vorhersageauftrag:
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
)
Beispiele für vollständigen Konfigurationscode finden Sie in den vorherigen Abschnitten zur Konfiguration und Auftragsübermittlung.
Nächste Schritte
- Lernen Sie, wie und wo Sie Modelle bereitstellen können.
- Erfahren Sie mehr über das Einrichten von AutoML zum Trainieren eines Zeitreihenvorhersagemodells.