Die Identifizierung paraphrasierter Texte ist in vielen Anwendungsfällen von geschäftlichem Nutzen. Durch die Identifizierung von Satzparaphrasen könnte ein Textzusammenfassungssystem beispielsweise redundante Informationen entfernen. Eine weitere Anwendung besteht darin, plagiierte Dokumente zu identifizieren. In diesem Beitrag optimieren wir a Gesicht umarmen Transformator eingeschaltet Amazon Sage Maker paraphrasierte Satzpaare in wenigen Schritten zu identifizieren.
Ein wirklich robustes Modell kann paraphrasierten Text identifizieren, wenn die verwendete Sprache möglicherweise völlig unterschiedlich ist, und auch Unterschiede identifizieren, wenn die verwendete Sprache eine hohe lexikalische Überschneidung aufweist. In diesem Beitrag konzentrieren wir uns auf den letztgenannten Aspekt. Konkret prüfen wir, ob wir ein Modell trainieren können, das den Unterschied zwischen zwei Sätzen identifizieren kann, die eine hohe lexikalische Überlappung und sehr unterschiedliche oder gegensätzliche Bedeutungen aufweisen. Die folgenden Sätze haben beispielsweise genau die gleichen Wörter, aber entgegengesetzte Bedeutungen:
- Ich bin von New York nach Paris geflogen
- Ich bin von Paris nach New York geflogen
Lösungsüberblick
Wir führen Sie durch die folgenden übergeordneten Schritte:
- Richten Sie die Umgebung ein.
- Bereiten Sie die Daten vor.
- Tokenisieren Sie den Datensatz.
- Feinabstimmung des Modells.
- Stellen Sie das Modell bereit und führen Sie eine Inferenz durch.
- Bewerten Sie die Modellleistung.
Wenn Sie das Einrichten der Umgebung überspringen möchten, können Sie das folgende Notizbuch verwenden GitHub und führen Sie den Code in SageMaker aus.
Hugging Face und AWS gaben Anfang 2022 eine Partnerschaft bekannt, die es noch einfacher macht, Hugging Face-Modelle auf SageMaker zu trainieren. Diese Funktionalität ist durch die Entwicklung von Hugging Face verfügbar AWS Deep Learning Container (DLCs). Zu diesen Containern gehören Hugging Face Transformers, Tokenizer und die Datasets-Bibliothek, die es uns ermöglicht, diese Ressourcen für Trainings- und Inferenzaufgaben zu nutzen. Eine Liste der verfügbaren DLC-Bilder finden Sie unter Verfügbare Deep-Learning-Container-Images. Sie werden gewartet und regelmäßig mit Sicherheitspatches aktualisiert. Sie können viele Beispiele dafür finden, wie Sie Hugging Face-Modelle mit diesen DLCs und dem trainieren können Umarmendes Gesicht Python SDK im Folgenden GitHub Repo.
Der PAWS-Datensatz
Das Original erkennt den Mangel an effizienten Satzpaar-Datensätzen, die eine hohe lexikalische Überlappung aufweisen, ohne Paraphrasen zu sein PFOTEN Der 2019 veröffentlichte Datensatz zielt darauf ab, der NLP-Community (Natural Language Processing) eine neue Ressource für das Training und die Bewertung von Paraphrasenerkennungsmodellen bereitzustellen. PAWS-Satzpaare werden in zwei Schritten generiert Wikipedia und für Quora-Fragenpaare (QQP)-Datensatz. Ein Sprachmodell tauscht zunächst Wörter in einem Satzpaar mit demselben Bag of Words (BOW) aus, um ein Satzpaar zu generieren. Ein Rückübersetzungsschritt generiert dann Paraphrasen mit hoher BOW-Überlappung, aber mit einer anderen Wortreihenfolge. Der endgültige PAWS-Datensatz enthält insgesamt 108,000 von Menschen markierte und 656,000 laut markierte Paare.
In diesem Beitrag verwenden wir die PAWS-Wiki mit der Bezeichnung (Final) Datensatz von Hugging Face. Hugging Face hat die Datenaufteilung bereits für uns durchgeführt, was zu 49,000 Satzpaaren im Trainingsdatensatz und jeweils 8,000 Satzpaaren für die Validierungs- und Testdatensätze führt. Im folgenden Beispiel werden zwei Satzpaarbeispiele aus dem Trainingsdatensatz gezeigt. Die Bezeichnung 1 gibt an, dass die beiden Sätze Paraphrasen voneinander sind.
Satz 1 | Satz 2 | Label |
Obwohl austauschbar, sind die Karosserieteile der beiden Autos nicht ähnlich. | Obwohl sie ähnlich sind, sind die Karosserieteile der beiden Autos nicht austauschbar. | 0 |
Katz wurde 1947 in Schweden geboren und zog im Alter von 1 Jahr nach New York City. | Katz wurde 1947 in Schweden geboren und zog im Alter von einem Jahr nach New York. | 1 |
Voraussetzungen:
Sie müssen die folgenden Voraussetzungen erfüllen:
- Melden Sie sich für ein AWS-Konto an, falls Sie noch keins haben. Weitere Informationen finden Sie unter Einrichten von Amazon SageMaker-Voraussetzungen.
- Beginnen Sie mit der Verwendung SageMaker-Notebook-Instanzen.
- Richten Sie es richtig ein AWS Identity and Access Management and (IAM)-Berechtigungen. Weitere Informationen finden Sie unter SageMaker-Rollen.
Richten Sie die Umgebung ein
Bevor wir mit der Untersuchung und Vorbereitung unserer Daten für die Feinabstimmung des Modells beginnen, müssen wir unsere Umgebung einrichten. Beginnen wir mit dem Hochfahren einer SageMaker-Notebook-Instanz. Wählen Sie in Ihrem AWS-Konto eine AWS-Region aus und befolgen Sie die Anweisungen Erstellen Sie eine SageMaker-Notebook-Instanz. Es kann einige Minuten dauern, bis die Notebook-Instanz hochgefahren ist.
Wenn die Notebook-Instanz ausgeführt wird, wählen Sie conda_pytorch_p38
als Ihr Kerneltyp. Um den Hugging Face-Datensatz verwenden zu können, müssen wir zunächst die Hugging Face-Bibliothek installieren und importieren:
Als nächstes richten wir eine SageMaker-Sitzung ein. Wir verwenden die Standardeinstellung Amazon Simple Storage-Service (Amazon S3)-Bucket, der der SageMaker-Sitzung zum Speichern des PAWS-Datensatzes und der Modellartefakte zugeordnet ist:
Bereiten Sie die Daten vor
Wir können die Hugging Face-Version des PAWS-Datensatzes mit laden load_dataset()
Befehl. Dieser Aufruf lädt das PAWS-Python-Verarbeitungsskript aus dem Hugging Face GitHub-Repository herunter und importiert es, das dann den PAWS-Datensatz von der im Skript gespeicherten Original-URL herunterlädt und die Daten als Arrow-Tabelle auf dem Laufwerk zwischenspeichert. Siehe den folgenden Code:
Bevor wir mit der Feinabstimmung unseres vorab trainierten BERT-Modells beginnen, werfen wir einen Blick auf die Verteilung unserer Zielklassen. Für unseren Anwendungsfall verfügt der PAWS-Datensatz über binäre Beschriftungen (0 gibt an, dass das Satzpaar keine Paraphrase ist, und 1 gibt an, dass es sich um eine Paraphrase handelt). Erstellen wir ein Säulendiagramm, um die Klassenverteilung anzuzeigen, wie im folgenden Code gezeigt. Wir sehen, dass es in unserem Trainingssatz ein leichtes Klassenungleichgewicht gibt (56 % negative Proben vs. 44 % positive Proben). Das Ungleichgewicht ist jedoch gering genug, um den Einsatz von Techniken zur Minderung des Klassenungleichgewichts zu vermeiden.
Tokenisieren Sie den Datensatz
Bevor wir mit der Feinabstimmung beginnen können, müssen wir unseren Datensatz tokenisieren. Nehmen wir als Ausgangspunkt an, wir möchten das verfeinern und bewerten roberta-base
Transformator. Wir haben ausgewählt roberta-base
weil es sich um einen Allzwecktransformator handelt, der anhand eines großen Korpus englischer Daten vorab trainiert wurde und bei einer Vielzahl von NLP-Aufgaben häufig eine hohe Leistung gezeigt hat. Das Modell wurde ursprünglich in der Arbeit vorgestellt RoBERTa: Ein robust optimierter BERT-Pretraining-Ansatz.
Wir führen eine Tokenisierung der Sätze mit a durch roberta-base
Tokenizer von Hugging Face, der Byte-Pair-Codierung auf Byte-Ebene verwendet, um das Dokument in Token aufzuteilen. Weitere Einzelheiten zum RoBERTa-Tokenizer finden Sie unter RobertaTokenizer. Da es sich bei unseren Eingaben um Satzpaare handelt, müssen wir beide Sätze gleichzeitig tokenisieren. Da die meisten BERT-Modelle erfordern, dass die Eingabe eine feste tokenisierte Eingabelänge hat, legen wir die folgenden Parameter fest: max_len=128
und truncation=True
. Siehe folgenden Code:
Der letzte Vorverarbeitungsschritt zur Feinabstimmung unseres BERT-Modells besteht darin, die tokenisierten Zug- und Validierungsdatensätze in PyTorch-Tensoren umzuwandeln und sie in unseren S3-Bucket hochzuladen:
Optimieren Sie das Modell
Da wir nun mit der Datenvorbereitung fertig sind, können wir unsere vorab trainierten Daten verfeinern roberta-base
Modell zur Paraphrasen-Identifikationsaufgabe. Wir können die SageMaker Hugging Face Estimator-Klasse verwenden, um den Feinabstimmungsprozess in zwei Schritten einzuleiten. Der erste Schritt besteht darin, die Trainingshyperparameter und Metrikdefinitionen anzugeben. Die Variable „Metrikdefinitionen“ teilt dem Hugging Face Estimator mit, welche Arten von Metriken aus den Trainingsprotokollen des Modells extrahiert werden sollen. Hier sind wir in erster Linie daran interessiert, Validierungssatzmetriken für jede Trainingsepoche zu extrahieren.
Der zweite Schritt besteht darin, den Hugging Face Estimator zu instanziieren und den Feinabstimmungsprozess mit dem zu starten .fit()
Verfahren:
Der Feinabstimmungsprozess dauert unter Verwendung der angegebenen Hyperparameter etwa 30 Minuten.
Stellen Sie das Modell bereit und führen Sie eine Inferenz durch
SageMaker bietet je nach Anwendungsfall mehrere Bereitstellungsoptionen. Für dauerhafte Echtzeitendpunkte, die jeweils eine Vorhersage treffen, empfehlen wir die Verwendung SageMaker-Echtzeit-Hosting-Dienste. Wenn Sie Workloads haben, bei denen es zwischen Verkehrsschüben Leerlaufzeiten gibt und Kaltstarts toleriert werden können, empfehlen wir die Verwendung Serverlose Inferenz. Serverlose Endpunkte starten automatisch Rechenressourcen und skalieren sie abhängig vom Datenverkehr, sodass keine Instanztypen ausgewählt oder Skalierungsrichtlinien verwaltet werden müssen. Wir zeigen, wie wir unser fein abgestimmtes Hugging Face-Modell sowohl auf einem Echtzeit-Inferenzendpunkt als auch auf einem serverlosen Inferenzendpunkt bereitstellen.
Bereitstellung auf einem Echtzeit-Inferenzendpunkt
Sie können ein Trainingsobjekt auf dem Echtzeit-Inferenz-Hosting in SageMaker bereitstellen, indem Sie Folgendes verwenden: .deploy()
Methode. Eine vollständige Liste der akzeptierten Parameter finden Sie unter Umarmendes Gesichtsmodell. Zunächst stellen wir das Modell auf einer Instanz bereit, indem wir die folgenden Parameter übergeben: initial_instance_count
, instance_type
und endpoint_name
. Siehe folgenden Code:
Die Bereitstellung des Modells dauert einige Minuten. Nachdem das Modell bereitgestellt wurde, können wir Beispieldatensätze aus dem unsichtbaren Testdatensatz zur Inferenz an den Endpunkt senden.
Bereitstellung auf einem serverlosen Inferenzendpunkt
Um unser Trainingsobjekt auf einem serverlosen Endpunkt bereitzustellen, müssen wir zunächst eine serverlose Konfigurationsdatei mit angeben memory_size_in_mb
und max_concurrency
Argumente:
memory_size_in_mb
definiert die gesamte RAM-Größe Ihres serverlosen Endpunkts; Die minimale RAM-Größe beträgt 1024 MB (1 GB) und kann auf bis zu 6144 MB (6 GB) skaliert werden. Im Allgemeinen sollten Sie eine Speichergröße wählen, die mindestens so groß ist wie die Größe Ihres Modells. max_concurrency
Definiert das Kontingent dafür, wie viele gleichzeitige Aufrufe gleichzeitig (bis zu 50 gleichzeitige Aufrufe) für einen einzelnen Endpunkt verarbeitet werden können.
Wir müssen auch den Hugging Face-Inferenzbild-URI bereitstellen, den Sie mit dem folgenden Code abrufen können:
Da wir nun über die serverlose Konfigurationsdatei verfügen, können wir mithilfe von einen serverlosen Endpunkt auf die gleiche Weise wie unseren Echtzeit-Inferenzendpunkt erstellen .deploy()
Verfahren:
Der Endpunkt sollte in wenigen Minuten erstellt werden.
Führen Sie eine Modellinferenz durch
Um Vorhersagen zu treffen, müssen wir das Satzpaar erstellen, indem wir Folgendes hinzufügen [CLS]
und [SEP]
spezielle Tokens und übermitteln die Eingabe anschließend an die Modellendpunkte. Die Syntax für Echtzeit-Inferenz und serverlose Inferenz ist dieselbe:
In den folgenden Beispielen können wir sehen, dass das Modell in der Lage ist, korrekt zu klassifizieren, ob das Eingabesatzpaar umschriebene Sätze enthält.
Das Folgende ist ein Echtzeit-Inferenzbeispiel.
Das Folgende ist ein Beispiel für eine serverlose Inferenz.
Bewerten Sie die Modellleistung
Um das Modell auszuwerten, erweitern wir den vorherigen Code und übermitteln alle 8,000 unsichtbaren Testdatensätze an den Echtzeit-Endpunkt:
Als Nächstes können wir mithilfe der extrahierten Vorhersagen einen Klassifizierungsbericht erstellen:
Wir erhalten die folgenden Testergebnisse.
Das können wir beobachten roberta-base
hat einen kombinierten makrodurchschnittlichen F1-Score von 92 % und schneidet etwas besser bei der Erkennung von Sätzen ab, bei denen es sich um Paraphrasen handelt. Der roberta-base
Das Modell weist eine gute Leistung auf, es empfiehlt sich jedoch, die Modellleistung mit mindestens einem anderen Modell zu berechnen.
Die folgende Tabelle vergleicht roberta-base
Leistungsergebnisse des gleichen Testsatzes im Vergleich zu einem anderen fein abgestimmten Transformator paraphrase-mpnet-base-v2
, ein Satztransformator, der speziell für die Aufgabe der Paraphrasenerkennung vorab trainiert wurde. Beide Modelle wurden auf einer ml.p3.8xlarge-Instanz trainiert.
Die Ergebnisse zeigen, dass roberta-base
hat einen um 1 % höheren F1-Score bei sehr ähnlichen Trainings- und Inferenzzeiten unter Verwendung von Echtzeit-Inferenz-Hosting auf SageMaker. Der Leistungsunterschied zwischen den Modellen ist jedoch relativ gering. roberta-base
ist letztendlich der Gewinner, da es geringfügig bessere Leistungsmetriken und nahezu identische Trainings- und Inferenzzeiten aufweist.
Präzision | Erinnern | F1-Punktzahl | Schulungszeit (abrechnungsfähig) | Inferenzzeit (vollständiger Testsatz) | |
Roberta-Basis | 0.92 | 0.93 | 0.92 | 18 Мinuten | 2 Мinuten |
paraphrase-mpnet- Basis-v2 |
0.92 | 0.91 | 0.91 | 17 Мinuten | 2 Мinuten |
Aufräumen
Wenn Sie mit der Verwendung der Modellendpunkte fertig sind, können Sie sie löschen, um zukünftige Gebühren zu vermeiden:
Zusammenfassung
In diesem Beitrag haben wir besprochen, wie man mit Hugging Face-Transformatoren auf SageMaker schnell ein Paraphrasen-Identifikationsmodell erstellen kann. Wir haben zwei vorab trainierte Transformatoren verfeinert, roberta-base
und paraphrase-mpnet-base-v2
, unter Verwendung des PAWS-Datensatzes (der Satzpaare mit hoher lexikalischer Überlappung enthält). Wir haben die Vorteile von Echtzeit-Inferenz im Vergleich zur serverlosen Inferenz-Bereitstellung demonstriert und diskutiert. Letztere ist eine neue Funktion, die auf Spitzenlasten abzielt und die Verwaltung von Skalierungsrichtlinien überflüssig macht. Bei einem bisher unbekannten Testsatz mit 8,000 Datensätzen haben wir gezeigt, dass beide Modelle einen F1-Score von mehr als 90 % erreichten.
Um diese Lösung zu erweitern, berücksichtigen Sie Folgendes:
- Versuchen Sie die Feinabstimmung mit Ihrem eigenen benutzerdefinierten Datensatz. Wenn Sie nicht über genügend Trainingsbezeichnungen verfügen, können Sie die Leistung eines fein abgestimmten Modells wie dem in diesem Beitrag gezeigten anhand eines benutzerdefinierten Testdatensatzes bewerten.
- Integrieren Sie dieses fein abgestimmte Modell in eine nachgelagerte Anwendung, die Informationen darüber benötigt, ob zwei Sätze (oder Textblöcke) Paraphrasen voneinander sind.
Fröhliches Bauen!
Über die Autoren
Bala Krishnamoorthy ist Data Scientist bei AWS Professional Services, wo er gerne maschinelles Lernen anwendet, um Geschäftsprobleme von Kunden zu lösen. Er ist auf Anwendungsfälle zur Verarbeitung natürlicher Sprache spezialisiert und hat mit Kunden in Branchen wie Software, Finanzen und Gesundheitswesen zusammengearbeitet. In seiner Freizeit probiert er gerne neues Essen aus, schaut sich Komödien und Dokumentationen an, trainiert bei Orange Theory und ist auf dem Wasser (Paddeln, Schnorcheln und hoffentlich bald tauchen).
Ivan Cui ist Data Scientist bei AWS Professional Services, wo er Kunden bei der Entwicklung und Bereitstellung von Lösungen mit maschinellem Lernen auf AWS unterstützt. Er hat mit Kunden aus verschiedenen Branchen zusammengearbeitet, darunter Software, Finanzen, Pharma und Gesundheitswesen. In seiner Freizeit liest er gerne, verbringt Zeit mit seiner Familie und maximiert sein Aktienportfolio.
- Coinsmart. Europas beste Bitcoin- und Krypto-Börse.
- Platoblockkette. Web3-Metaverse-Intelligenz. Wissen verstärkt. DEN FREIEN ZUGANG.
- CryptoHawk. Altcoin-Radar. Kostenlose Testphase.
- Quelle: https://aws.amazon.com/blogs/machine-learning/identify-paraphrased-text-with-hugging-face-on-amazon-sagemaker/
- '
- "
- 000
- 10
- 100
- 2019
- 2022
- 84
- Über uns
- Zugang
- Konto
- erreicht
- über
- Alle
- bereits
- Amazon
- angekündigt
- Ein anderer
- Anwendung
- Anwendung
- ca.
- Argumente
- verfügbar
- AWS
- Sein
- Vorteile
- Körper
- Grenze
- bauen
- Geschäft
- rufen Sie uns an!
- fähig
- Autos
- Fälle
- Gebühren
- Auswählen
- Stadt
- Klasse
- Einstufung
- Code
- Kolonne
- kombiniert
- community
- uneingeschränkt
- Berechnen
- Vertrauen
- Behälter
- enthält
- könnte
- erstellen
- erstellt
- Original
- Kunde
- Kunden
- technische Daten
- Datenwissenschaftler
- zeigen
- weisen nach, dass
- Abhängig
- einsetzen
- Einsatz
- Einsatz
- Details
- Entdeckung
- Entwicklung
- anders
- Verteilung
- Dokumentationen
- Unterlagen
- Downloads
- Antrieb
- effizient
- Endpunkt
- Englisch
- Arbeitsumfeld
- etablieren
- bewerten
- Beispiel
- zeigen
- Erweitern Sie die Funktionalität der
- Gesicht
- Familie
- Merkmal
- Finanzen
- Vorname
- Flugkosten
- Setzen Sie mit Achtsamkeit
- folgen
- Folgende
- Nahrung,
- Frei
- voller
- Funktion
- Funktionalität
- Zukunft
- allgemeiner Zweck
- allgemein
- erzeugen
- GitHub
- gut
- mehr
- Gesundheitswesen
- Höhe
- hilft
- hier
- High
- höher
- Hosting
- Ultraschall
- Hilfe
- HTTPS
- Login
- identifizieren
- Identifizierung
- Identitätsschutz
- Image
- das
- Einschließlich
- Branchen
- Information
- Varianten des Eingangssignals:
- installieren
- interessiert
- Problem
- IT
- Jobs
- Etiketten
- Sprache
- grosse
- starten
- lernen
- Bibliothek
- Liste
- Belastung
- Maschine
- Maschinelles Lernen
- MACHT
- verwalten
- Memory
- Metrik
- ML
- Modell
- für
- mehr
- vor allem warme
- mehrere
- Natürliche
- Negativ
- New York
- New York City
- Notizbuch
- Angebote
- optimiert
- Optionen
- Auftrag
- Andere
- besitzen
- Papier
- Paris
- Partnerschaft
- Bestehen
- Patches
- Leistung
- Zeiträume
- Biowissenschaften
- Points
- Politik durchzulesen
- Mappe
- positiv
- Praxis
- Prognose
- Prognosen
- Probleme
- Prozessdefinierung
- Verarbeitung
- Professionell
- die
- Frage
- Quoren
- RAM
- and
- Lesebrillen
- Echtzeit
- empfehlen
- Aufzeichnungen
- freigegeben
- berichten
- Quelle
- erfordern
- Ressourcen
- Downloads
- Die Ergebnisse
- Rückkehr
- Führen Sie
- Laufen
- Skalieren
- Skalierung
- Wissenschaftler
- Sicherheitdienst
- ausgewählt
- Serverlos
- Leistungen
- kompensieren
- Einstellung
- ähnlich
- Einfacher
- Größe
- klein
- Software
- solide
- Lösung
- Lösungen
- LÖSEN
- besondere
- spezialisiert
- speziell
- Ausgabe
- Wirbelsäule ... zu unterstützen.
- gespalten
- Anfang
- begonnen
- beginnt
- -bestands-
- Lagerung
- speichern
- Anschließend
- liefern
- Schweden
- System
- Target
- und Aufgaben
- Techniken
- erzählt
- Test
- Durch
- Zeit
- Tokenisierung
- Tokenisiert
- Tokens
- Top
- Fackel
- der Verkehr
- Ausbildung
- Übersetzungen
- us
- -
- Bestätigung
- Wert
- Vielfalt
- Anzeigen
- Wasser
- Was
- ob
- Wikipedia
- .
- ohne
- Worte
- gearbeitet
- arbeiten,
- ausarbeiten