Im NLP-Bereich hat es in letzter Zeit viele Fortschritte gegeben. Vortrainierte Modelle und vollständig verwaltete NLP-Dienste haben den Zugang und die Akzeptanz von NLP demokratisiert. Amazon verstehen ist ein vollständig verwalteter Dienst, der NLP-Aufgaben wie benutzerdefinierte Entitätserkennung, Themenmodellierung, Stimmungsanalyse und mehr ausführen kann, um Erkenntnisse aus Daten zu extrahieren, ohne dass vorherige ML-Erfahrung erforderlich ist.
Letztes Jahr kündigte AWS a Partnerschaft mit Gesicht umarmen um Modelle zur Verarbeitung natürlicher Sprache (NLP) schneller in die Produktion zu bringen. Hugging Face ist eine Open-Source-KI-Community, die sich auf NLP konzentriert. Ihre Python-basierte Bibliothek (Transformatoren) bietet Tools zur einfachen Verwendung beliebter, hochmoderner Transformer-Architekturen wie BERT, RoBERTa und GPT. Sie können diese Modelle auf eine Vielzahl von NLP-Aufgaben anwenden, darunter Textklassifizierung, Informationsextraktion und Fragenbeantwortung Extras.
Amazon Sage Maker ist ein vollständig verwalteter Dienst, der Entwicklern und Datenwissenschaftlern die Möglichkeit bietet, Modelle für maschinelles Lernen (ML) schnell zu erstellen, zu trainieren und bereitzustellen. SageMaker entfernt die schwere Arbeit aus jedem Schritt des ML-Prozesses und erleichtert so die Entwicklung hochwertiger Modelle. Das SageMaker Python SDK bietet Open-Source-APIs und -Container zum Trainieren und Bereitstellen von Modellen auf SageMaker unter Verwendung mehrerer verschiedener ML- und Deep-Learning-Frameworks.
Die Hugging Face-Integration mit SageMaker ermöglicht es Ihnen, Hugging Face-Modelle in großem Maßstab für Ihre eigenen domänenspezifischen Anwendungsfälle zu erstellen.
In diesem Beitrag führen wir Sie durch ein Beispiel für die Erstellung und Bereitstellung einer benutzerdefinierten Hugging Face-Textzusammenfassung in SageMaker. Zu diesem Zweck verwenden wir Pegasus [1], das erste Transformer-basierte Modell, das speziell auf ein Ziel vortrainiert wurde, das auf die Zusammenfassung abstrakter Texte zugeschnitten ist. BERT ist darauf trainiert, zufällige Wörter in einem Satz zu maskieren; Im Gegensatz dazu werden während des Vortrainings von Pegasus Sätze aus einem Eingabedokument maskiert. Das Modell generiert dann die fehlenden Sätze als einzelne Ausgabesequenz, wobei alle unmaskierten Sätze als Kontext verwendet werden, und erstellt als Ergebnis eine Zusammenfassung des Dokuments.
Dank der Flexibilität der HuggingFace-Bibliothek können Sie den in diesem Beitrag gezeigten Code problemlos für andere Arten von Transformatormodellen wie t5, BART und mehr anpassen.
Laden Sie Ihren eigenen Datensatz, um ein Hugging Face-Modell zu optimieren
Um einen benutzerdefinierten Datensatz aus einer CSV-Datei zu laden, verwenden wir die load_dataset
Methode aus dem Transformers-Paket. Wir können die Tokenisierung auf das geladene Dataset anwenden, indem wir die verwenden datasets.Dataset.map
Funktion. Das map
Die Funktion iteriert über das geladene Dataset und wendet die Tokenisierungsfunktion auf jedes Beispiel an. Der tokenisierte Datensatz kann dann zur Feinabstimmung des Modells an den Trainer weitergegeben werden. Siehe folgenden Code:
Erstellen Sie Ihr Trainingsskript für den Hugging Face SageMaker-Schätzer
Wie im Beitrag erklärt AWS und Hugging Face arbeiten zusammen, um die Einführung von Natural Language Processing-Modellen zu vereinfachen und zu beschleunigen, das Trainieren eines Hugging Face-Modells auf SageMaker war noch nie so einfach. Wir können dies tun, indem wir den Hugging Face-Schätzer von verwenden SageMaker-SDK.
Das folgende Code-Snippet verfeinert Pegasus auf unserem Datensatz. Sie können auch viele finden Beispielnotizbücher die Sie durch die Feinabstimmung verschiedener Arten von Modellen führen, die direkt im GitHub-Repository von Transformers verfügbar sind. Um verteiltes Training zu ermöglichen, können wir die verwenden Bibliothek für Datenparallelität in SageMaker, das in die HuggingFace Trainer API integriert wurde. Um Datenparallelität zu ermöglichen, müssen wir die definieren distribution
Parameter in unserem Hugging Face Schätzer.
Die maximale Trainingsbatchgröße, die Sie konfigurieren können, hängt von der Modellgröße und dem GPU-Speicher der verwendeten Instanz ab. Wenn das verteilte Training von SageMaker aktiviert ist, ist die Gesamtbatchgröße die Summe aller Batches, die auf jedes Gerät/GPU verteilt werden. Wenn wir anstelle einer ml.g4dn.xlarge-Instanz eine ml.g16dn.4xlarge mit verteiltem Training verwenden, haben wir achtmal (8 GPUs) so viel Arbeitsspeicher wie eine ml.g4dn.xlarge-Instanz (1 GPU). Die Batchgröße pro Gerät bleibt gleich, aber acht Geräte trainieren parallel.
Wie bei SageMaker üblich, erstellen wir eine train.py
Skript zur Verwendung mit dem Skriptmodus und zum Übergeben von Hyperparametern für das Training. Das folgende Code-Snippet für Pegasus lädt das Modell und trainiert es mit den Transformers Trainer
Klasse:
Den vollständigen Code finden Sie unter GitHub.
Stellen Sie das trainierte Hugging Face-Modell in SageMaker bereit
Unsere Freunde bei Hugging Face haben die Rückschlüsse auf SageMaker für Transformers-Modelle dank der einfacher als je zuvor gemacht SageMaker Hugging Face Inference Toolkit. Sie können das zuvor trainierte Modell direkt bereitstellen, indem Sie einfach die Umgebungsvariable einrichten "HF_TASK":"summarization"
(Anleitung siehe Pegasus-Modelle), auswählen Deploy, und dann auswählen Amazon Sage Maker, ohne dass ein Inferenzskript geschrieben werden muss.
Wenn Sie jedoch eine bestimmte Methode zum Generieren oder Nachbearbeiten von Vorhersagen benötigen, z. B. das Generieren mehrerer zusammenfassender Vorschläge basierend auf einer Liste verschiedener Textgenerierungsparameter, kann das Schreiben eines eigenen Inferenzskripts nützlich und relativ einfach sein:
Wie im vorherigen Code gezeigt, benötigt ein solches Inferenzskript für HuggingFace auf SageMaker nur die folgenden Vorlagenfunktionen:
- model_fn () – Liest den Inhalt dessen aus, was am Ende des Trainingsjobs im Inneren gespeichert wurde
SM_MODEL_DIR
, oder aus einem vorhandenen Modellgewichtsverzeichnis, das als tar.gz-Datei in gespeichert ist Amazon Simple Storage-Service (Amazon S3). Es wird verwendet, um das trainierte Modell und den zugehörigen Tokenizer zu laden. - input_fn () – Formatiert die Daten, die von einer Anfrage an den Endpunkt empfangen werden.
- Predict_FN () – Ruft die Ausgabe von auf
model_fn()
(das Modell und der Tokenizer), um die Inferenz auf die Ausgabe von auszuführeninput_fn()
(die formatierten Daten).
Optional können Sie eine erstellen output_fn()
Funktion für die Inferenzformatierung unter Verwendung der Ausgabe von predict_fn()
, die wir in diesem Beitrag nicht demonstriert haben.
Wir können dann das trainierte Hugging Face-Modell mit dem zugehörigen Inferenzskript für SageMaker bereitstellen, indem wir die verwenden Umarmendes Gesicht SageMaker-Modell Klasse:
Testen Sie das bereitgestellte Modell
Für diese Demo haben wir das Modell auf dem trainiert E-Commerce-Bekleidungsbewertungs-Datensatz für Damen, das Bewertungen von Bekleidungsartikeln (die wir als Eingabetext betrachten) und die zugehörigen Titel (die wir als Zusammenfassungen betrachten) enthält. Nachdem wir Artikel mit fehlenden Titeln entfernt haben, enthält der Datensatz 19,675 Rezensionen. Die Feinabstimmung des Pegasus-Modells auf einem Trainingsset, das 70 % dieser Artikel für fünf Epochen enthielt, dauerte auf einer ml.p3.5xlarge-Instanz ungefähr 3.16 Stunden.
Anschließend können wir das Modell bereitstellen und mit einigen Beispieldaten aus dem Testset testen. Das Folgende ist eine Beispielbewertung, die einen Pullover beschreibt:
Dank unseres benutzerdefinierten Inferenzskripts, das in einem SageMaker-Endpunkt gehostet wird, können wir mehrere Zusammenfassungen für diese Überprüfung mit unterschiedlichen Textgenerierungsparametern erstellen. Beispielsweise können wir den Endpunkt bitten, eine Reihe von sehr kurzen bis mäßig langen Zusammenfassungen zu generieren, die unterschiedliche Längenstrafen angeben (je kleiner die Längenstrafe, desto kürzer die generierte Zusammenfassung). Im Folgenden finden Sie einige Beispiele für Parametereingaben und die anschließenden maschinell erstellten Zusammenfassungen:
Welche Zusammenfassung bevorzugen Sie? Der erste generierte Titel erfasst alle wichtigen Fakten zur Rezension mit einem Viertel der Wortzahl. Im Gegensatz dazu verwendet die letzte nur drei Wörter (weniger als 1/10 der Länge der ursprünglichen Rezension), um sich auf das wichtigste Merkmal des Pullovers zu konzentrieren.
Zusammenfassung
Mit diesem einfachen Beispiel, das unter verfügbar ist, können Sie eine Textzusammenfassung für Ihr benutzerdefiniertes Dataset optimieren und für die Produktion auf SageMaker bereitstellen GitHub. Zusätzlich Beispielnotizbücher zum Trainieren und Bereitstellen von Hugging Face-Modellen auf SageMaker sind ebenfalls verfügbar.
Wie immer freut sich AWS über Feedback. Bitte senden Sie Kommentare oder Fragen.
Bibliographie
[1] PEGASUS: Vortraining mit extrahierten Lückensätzen für die abstrakte Zusammenfassung
Über die Autoren
Viktor Malešević ist Machine Learning Engineer bei AWS Professional Services und hat eine Leidenschaft für Natural Language Processing und MLOps. Er arbeitet mit Kunden zusammen, um anspruchsvolle Deep-Learning-Modelle zu entwickeln und auf AWS in Produktion zu bringen. In seiner Freizeit genießt er es, mit Freunden ein Glas Rotwein und etwas Käse zu trinken.
Aamna Najmi ist Data Scientist bei AWS Professional Services. Sie ist leidenschaftlich daran interessiert, Kunden bei der Innovation mit Big Data und Technologien der künstlichen Intelligenz zu unterstützen, um Geschäftswert und Erkenntnisse aus Daten zu erschließen. In ihrer Freizeit arbeitet sie gerne im Garten und bereist neue Orte.
- AI
- Kunst
- KI-Kunstgenerator
- KI-Roboter
- Amazon Sage Maker
- künstliche Intelligenz
- Zertifizierung für künstliche Intelligenz
- Künstliche Intelligenz im Bankwesen
- Roboter mit künstlicher Intelligenz
- Roboter mit künstlicher Intelligenz
- Software für künstliche Intelligenz
- AWS Maschinelles Lernen
- Blockchain
- Blockchain-Konferenz ai
- Einfallsreichtum
- dialogorientierte künstliche Intelligenz
- Krypto-Konferenz ai
- Dalls
- tiefe Lernen
- Google Ai
- Maschinelles Lernen
- Plato
- platon ai
- Datenintelligenz von Plato
- Plato-Spiel
- PlatoData
- Platogaming
- Skala ai
- Syntax
- Zephyrnet