Einrichten von automatisiertem ML zum Trainieren eines Modells zur Verarbeitung natürlicher Sprache mit Python (Vorschauversion)
GILT FÜR: Python SDK azureml v1
Wichtig
Dieses Feature ist zurzeit als öffentliche Preview verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar.
Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
In diesem Artikel erfahren Sie, wie Sie Modelle zur Verarbeitung natürlicher Sprache (NLP) mit automatisiertem ML im Azure Machine Learning Python-SDK trainieren.
Automatisiertes ML unterstützt NLP, mit dem ML-Spezialisten und Data Scientists eigene Textdaten verwenden und benutzerdefinierte Modelle für Aufgaben wie die Mehrklassen-Textklassifizierung, die Textklassifizierung mit mehreren Bezeichnungen und die Erkennung benannter Entitäten (Named Entity Recognition, NER) erstellen können.
Sie können die nahtlose Integration in die Azure Machine Learning Datenbezeichnungs-Funktion nutzen, um Ihre Textdaten zu bezeichnen, oder Ihre vorhandenen beschrifteten Daten einbringen. Automatisiertes ML bietet die Möglichkeit, verteiltes Training auf Computeclustern mit mehreren GPU zu verwenden, um das Modelltraining zu beschleunigen. Das daraus resultierende Modell kann durch die Nutzung der MLOps-Funktionen von Azure Machine Learning im großen Stil operationalisiert werden.
Voraussetzungen
Azure-Abonnement. Wenn Sie kein Azure-Abonnement haben, können Sie sich jetzt für die kostenlose oder kostenpflichtige Version von Azure Machine Learning registrieren.
Ein Azure Machine Learning-Arbeitsbereich mit einem GPU-Trainings-Compute. Informationen zum Erstellen des Arbeitsbereichs finden Sie unter Schnellstart: So erstellen Sie Arbeitsbereichsressourcen, die Sie für die ersten Schritte mit Azure Machine Learning benötigen. Weitere Informationen zu GPU-Instanzen, die von Azure bereitgestellt werden, finden Sie unter GPU-optimierte VM-Größen.
Warnung
Für mehrere NLP-Anwendungsfälle ist die Unterstützung für mehrsprachige Modelle und die Verwendung von Modellen mit einer längeren maximalen Sequenzlänge erforderlich, z. B. nicht englische Datasets und Dokumente mit längerer Spanne. Daher kann für diese Szenarien ein höherer GPU-Arbeitsspeicher erforderlich sein, damit das Modelltraining erfolgreich ist, z. B. die NC_v3- oder ND-Serie.
Installation des Azure Machine Learning Python SDK,
zum Installieren des SDK können Sie wie folgt vorgehen:
Erstellen Sie eine Compute-Instanz, wodurch das SDK automatisch installiert und für ML-Workflows vorkonfiguriert wird. Weitere Informationen hierzu finden Sie unter Erstellen und Verwalten einer Azure Machine Learning-Computeinstanz.
Installieren Sie das Paket
automl
selbst. Es enthält die Standardinstallation des SDK.
Wichtig
Für die Python-Befehle in diesem Artikel ist die neueste
azureml-train-automl
-Paketversion erforderlich.- Installieren Sie das neueste
azureml-train-automl
-Paket in Ihrer lokalen Umgebung. - Einzelheiten zum neuesten
azureml-train-automl
-Paket finden Sie in den Versionshinweisen.
In diesem Artikel werden Grundkenntnisse in der Einrichtung eines Experiments mit automatisiertem maschinellem Lernen vorausgesetzt. Machen Sie sich anhand des Tutorials oder der Anleitung mit den wichtigsten Entwurfsmustern für automatisierte ML-Experimente vertraut.
Auswählen ihrer NLP-Aufgabe
Bestimmen Sie, welche NLP-Aufgabe Sie ausführen möchten. Derzeit unterstützt automatisiertes ML die folgenden Deep Neural Network-NLP-Aufgaben.
Aufgabe | AutoMLConfig-Syntax | BESCHREIBUNG |
---|---|---|
Mehrklassige Textklassifizierung | task = 'text-classification' |
Es gibt mehrere mögliche Klassen, und jedes Beispiel kann als genau eine Klasse klassifiziert werden. Die Aufgabe besteht darin, die richtige Klasse für jedes Beispiel vorherzusagen. Beispielsweise das Klassifizieren eines Filmskripts als „Komödie“ oder „Romanze“. |
Textklassifizierung mit mehreren Bezeichnungen | task = 'text-classification-multilabel' |
Es gibt mehrere mögliche Klassen, und jedem Beispiel kann eine beliebige Anzahl von Klassen zugewiesen werden. Die Aufgabe besteht darin, für jedes Beispiel die Klasse vorherzusagen Beispielsweise das Klassifizieren eines Filmskripts als „Komödie“, „Romanze“ oder „Romantische Komödie“. |
Erkennung benannter Entitäten (NER) | task = 'text-ner' |
Es gibt mehrere mögliche Tags für Token in Sequenzen. Die Aufgabe besteht darin, für alle Token und für jede Sequenz die Tags vorherzusagen. Beispiel: Extrahieren domänenspezifischer Entitäten aus unstrukturiertem Text, z. B. Verträgen oder Finanzdokumenten |
Aufbereiten der Daten
Für NLP-Experimente in automatisierten ML können Sie ein Azure Machine Learning-Dataset mit dem .csv
-Format für Klassifizierungsaufgaben mit mehreren Klassen und mehreren Bezeichnungen verwenden. Für NER-Aufgaben werden zweispaltige .txt
-Dateien unterstützt, die ein Leerzeichen als Trennzeichen verwenden und dem CoNLL-Format entsprechen. Die folgenden Abschnitte enthalten zusätzliche Details zum Datenformat, das für die einzelnen Aufgaben akzeptiert wird.
Mehrere Klassen
Für die Klassifizierung mit mehreren Klassen kann das Dataset mehrere Textspalten und genau eine Bezeichnungsspalte enthalten. Das folgende Beispiel enthält nur eine Textspalte.
text,labels
"I love watching Chicago Bulls games.","NBA"
"Tom Brady is a great player.","NFL"
"There is a game between Yankees and Orioles tonight","MLB"
"Stephen Curry made the most number of 3-Pointers","NBA"
Mehrere Bezeichnungen
Bei der Klassifizierung mit mehreren Bezeichnungen sind die Dataset-Spalten identisch mit mehreren Klassen, es gibt jedoch besondere Formatanforderungen für Daten in der Bezeichnungsspalte. Die beiden akzeptierten Formate und Beispiele sind in der folgenden Tabelle aufgeführt.
Formatoptionen für Bezeichnungsspalten | Mehrere Bezeichnungen | Eine Bezeichnung | Keine Bezeichnungen |
---|---|---|---|
Nur-Text | "label1, label2, label3" |
"label1" |
"" |
Python-Liste mit Anführungszeichen | "['label1','label2','label3']" |
"['label1']" |
"[]" |
Wichtig
Verschiedene Parser werden verwendet, um Bezeichnungen für diese Formate zu lesen. Verwenden Sie bei Nutzung des Nur-Text-Formats nur alphabetische und numerische Zeichen und '_'
in Ihren Bezeichnungen. Alle anderen Zeichen werden als Trennzeichen von Bezeichnungen erkannt.
Wenn Ihre Bezeichnung beispielsweise "cs.AI"
lautet, wird sie als "cs"
und "AI"
gelesen. Während mit dem Python-Listenformat die Bezeichnung "['cs.AI']"
lautet, was als "cs.AI"
gelesen wird.
Beispieldaten für mehrere Bezeichnungen im Nur-Text-Format.
text,labels
"I love watching Chicago Bulls games.","basketball"
"The four most popular leagues are NFL, MLB, NBA and NHL","football,baseball,basketball,hockey"
"I like drinking beer.",""
Beispieldaten für mehrere Bezeichnungen in der Python-Liste mit Anführungszeichenformat.
text,labels
"I love watching Chicago Bulls games.","['basketball']"
"The four most popular leagues are NFL, MLB, NBA and NHL","['football','baseball','basketball','hockey']"
"I like drinking beer.","[]"
Erkennung benannter Entitäten (NER)
Im Gegensatz zu mehrklassigen oder mehrfachen Bezeichnungen, die Datasets im .csv
-Format verwenden, erfordert die Erkennung benannter Entitäten das CoNLL-Format. Die Datei muss genau zwei Spalten enthalten, und in jeder Zeile werden das Token und die Bezeichnung durch ein einzelnes Leerzeichen getrennt.
Beispiel:
Hudson B-loc
Square I-loc
is O
a O
famous O
place O
in O
New B-loc
York I-loc
City I-loc
Stephen B-per
Curry I-per
got O
three O
championship O
rings O
Datenvalidierung
Vor dem Training wendet das automatisierte ML Datenvalidierungsprüfungen auf die Eingabedaten an, um sicherzustellen, dass die Daten ordnungsgemäß vorverarbeitet werden können. Wenn eine dieser Überprüfungen fehlschlägt, schlägt die Ausführung mit der entsprechenden Fehlermeldung fehl. Im Folgenden sind die Anforderungen zum Bestehen von Datenvalidierungsprüfungen für die einzelnen Aufgaben enthalten.
Hinweis
Einige Datenvalidierungsprüfungen gelten sowohl für den Trainings- als auch für den Validierungssatz, während andere nur für den Trainingssatz gelten. Wenn das Test-Dataset die Datenvalidierung nicht bestehen konnte, bedeutet dies, dass das automatisierte ML es nicht erfassen konnte und es eine Möglichkeit eines Modellrückschlussfehlers oder einer Einbuße der Modellleistung gibt.
Aufgabe | Datenvalidierungsüberprüfung |
---|---|
Alle Aufgaben | – Sowohl Trainings- als auch Validierungssätze müssen bereitgestellt werden. – Mindestens 50 Trainingsbeispiele sind erforderlich. |
Mehrere Klassen und mehrere Bezeichnungen | Die Trainingsdaten und Validierungsdaten müssen folgendes vorweisen: – Die gleiche Gruppe von Spalten – Die gleiche Spaltenreihenfolge von links nach rechts – Denselben Datentyp für Spalten mit dem gleichen Namen – Mindestens zwei eindeutige Bezeichnungen – Eindeutige Spaltennamen innerhalb jedes Datasets (z. B. darf der Trainingssatz nicht mehrere Spalten mit dem Namen Alter enthalten) |
Nur mehrere Klassen | Keine |
Nur mehrere Bezeichnungen | – Das Format der Bezeichnungsspalte muss in einem zulässigen Format vorliegen – Mindestens ein Beispiel sollte über 0 oder mehr als 2 Bezeichnungen verfügen, andernfalls sollte es eine multiclass -Aufgabe sein – Alle Bezeichnungen sollten im str - oder int -Format vorliegen, ohne sich zu überschneiden. Sie sollten nicht sowohl die Bezeichnung 1 als auch die Bezeichnung '1' haben |
Nur NER | – Die Datei darf nicht mit einer leeren Zeile beginnen – Jede Zeile muss eine leere Zeile sein oder das Format {token} {label} aufweisen, wobei genau ein Leerzeichen zwischen dem Token und der Bezeichnung vorhanden ist und kein Leerraum nach der Bezeichnung vorhanden ist – Alle Bezeichnungen müssen mit I- oder B- beginnen oder genau O lauten. Groß-/Kleinschreibung beachten – Genau eine leere Zeile zwischen zwei Beispielen – Genau eine leere Zeile am Ende der Datei |
Konfigurieren des Experiments
Die NLP-Funktion des automatisierten ML wird über AutoMLConfig
ausgelöst. Dies ist derselbe Workflow wie für die Übermittlung automatisierter ML-Experimente für Klassifizierungs-, Regressions- und Vorhersageaufgaben. Sie können die meisten Parameter wie für diese Experimente festlegen, z. B. task
, compute_target
und Dateneingaben.
Es gibt jedoch wichtige Unterschiede:
- Sie können
primary_metric
ignorieren, da dies nur zu Berichtszwecken erfolgt. Derzeit trainiert das automatisierte ML nur ein Modell pro Ausführung für NLP, und es gibt keine Modellauswahl. - Der
label_column_name
-Parameter ist nur für Textklassifizierungs-Aufgaben mit mehreren Klassen und mehreren Bezeichnungen erforderlich. - Wenn die meisten der Stichproben in Ihrem Dataset mehr als 128 Wörter enthalten, wird dies als weitreichend betrachtet. In diesem Szenario können Sie die weitreichende Textoption mit dem Parameter
enable_long_range_text=True
in Ihrer AutoML-Konfiguration (AutoMLConfig
) aktivieren. Dies trägt zur Verbesserung der Modellleistung bei, erfordert jedoch längere Trainingszeiten.- Wenn Sie weitreichenden Text aktivieren, ist eine GPU mit höherem Arbeitsspeicher erforderlich – etwa aus der NCv3-Serie oder aus der ND-Serie.
- Der Parameter
enable_long_range_text
ist nur für Klassifizierungsaufgaben mit mehreren Klassen verfügbar.
automl_settings = {
"verbosity": logging.INFO,
"enable_long_range_text": True, # # You only need to set this parameter if you want to enable the long-range text setting
}
automl_config = AutoMLConfig(
task="text-classification",
debug_log="automl_errors.log",
compute_target=compute_target,
training_data=train_dataset,
validation_data=val_dataset,
label_column_name=target_column_name,
**automl_settings
)
Spracheinstellungen
Im Rahmen der NLP-Funktionalität unterstützt das automatisierte ML 104 Sprachen, die sprachspezifische und mehrsprachige vortrainierte Text-DNN-Modelle nutzen, z. B. die BERT-Modellfamilie. Derzeit ist die Sprachauswahl standardmäßig auf Englisch eingestellt.
In der folgenden Tabelle wird zusammengefasst, welches Modell basierend auf Aufgabentyp und Sprache angewendet wird. Hier finden Sie die vollständige Liste der unterstützten Sprachen und ihrer Codes.
Aufgabentyp | Syntax für dataset_language |
Textmodellalgorithmus |
---|---|---|
Textklassifizierung mit mehreren Bezeichnungen | 'eng' 'deu' 'mul' |
English BERT nicht Groß-/Kleinschreibung-sensitiv Deutsches BERT Mehrsprachiges BERT Für alle anderen Sprachen wendet das automatisierte ML mehrsprachiges BERT an |
Mehrklassige Textklassifizierung | 'eng' 'deu' 'mul' |
Englisches BERT Groß-/Kleinschreibung-sensitiv Mehrsprachiges BERT Für alle anderen Sprachen wendet das automatisierte ML mehrsprachiges BERT an |
Erkennung benannter Entitäten (NER) | 'eng' 'deu' 'mul' |
Englisches BERT Groß-/Kleinschreibung-sensitiv Deutsches BERT Mehrsprachiges BERT Für alle anderen Sprachen wendet das automatisierte ML mehrsprachiges BERT an |
Sie können ihre Dataset-Sprache in Ihrer FeaturizationConfig
angeben. BERT wird auch im Featurisierungsprozess des automatisierten ML-Experimenttrainings verwendet. Erfahren Sie mehr über die BERT-Integration und Featurisierung in automatisiertem ML.
from azureml.automl.core.featurization import FeaturizationConfig
featurization_config = FeaturizationConfig(dataset_language='{your language code}')
automl_config = AutomlConfig("featurization": featurization_config)
Verteiltes Training
Sie können Ihre NLP-Experimente auch mit verteiltem Training in einem Azure Machine Learning-Computecluster ausführen. Dies wird automatisch durch automatisiertes ML gehandhabt, wenn die Parameter max_concurrent_iterations = number_of_vms
und enable_distributed_dnn_training = True
während der Einrichtung des Experiments in Ihrer AutoMLConfig
bereitgestellt werden.
max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True
Auf diese Weise wird das verteilte Training der NLP-Modelle geplant und automatisch auf jede GPU auf Ihrem virtuellen Computer oder Cluster von virtuellen Computern skaliert. Die maximal zulässige Anzahl von virtuellen Computern (VM) beträgt 32. Das Training wird mit einer Anzahl virtueller Computer geplant, die in Zweierpotenzen angegeben ist.
Beispielnotebooks
Ausführliche Codebeispiele für jede NLP-Aufgabe finden Sie in den Beispielnotebooks.
- Textklassifizierung mit mehreren Klassen
- Textklassifizierung mit mehreren Bezeichnungen
- Erkennung benannter Entitäten