Share via


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

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 AutoMLConfigausgelö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 FeaturizationConfigangeben. 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.

Nächste Schritte