Optimierung von Transformatoren mit geräteinternen GPU-Ressourcen

von Ekaterina Butyugina

Ein abstraktes Bild von Büchern, die digitalisiert


Die Bedeutung der Zusammenfassung in der NLP

Die Zusammenfassung in der Verarbeitung natürlicher Sprache (NLP) ist aufgrund ihrer Anwendung in Forschung und Geschäftsbereichen von grosser Bedeutung. Sie hilft dabei, die Informationsflut zu bewältigen und die Effizienz zu verbessern, indem lange Dokumente auf ihren Kerninhalt reduziert werden.


Transformer-Modelle: Das Rückgrat der Generativen KI

Transformer-Modelle sind eine Art von generativer künstlicher Intelligenz, die neue Inhalte basierend auf den erhaltenen Eingaben generieren. Diese Architektur treibt viele prominente KI-Modelle wie GPT (Generative Pretrained Transformer), BERT (Bidirectional Encoder Representations from Transformers) an und ermöglicht es ihnen, Aufgaben wie Textgenerierung, Beantwortung von Fragen und mehr, über die Zusammenfassung hinaus, zu erfüllen.
 

Warum lokale GPU?

Die Wahl zwischen einer lokalen GPU und Cloud-Diensten hängt von Leistungsanforderungen, Datenschutzbedenken, Kosten, Internetstabilität und der Art der Arbeit ab. Für viele sind die Vorteile einer lokalen GPU der bevorzugte Weg für rechenintensive Aufgaben.

Hier findest du den vollständigen Code, Erklärungen und Beispiele.
 

Abstraktive Textzusammenfassung

Im Gegensatz zur extraktiven Zusammenfassungstechnik, die nur Schlüsselinhalte extrahiert, ohne neuen Text zu generieren, verwendet die abstraktive Zusammenfassung Techniken der Generierung natürlicher Sprache. Sie nutzt Wissensdatenbanken und semantische Darstellungen, um Zusammenfassungen zu generieren, wie es ein Mensch tun würde.

Einrichten der Umgebung

Wir beginnen mit der Installation notwendiger Bibliotheken für die Handhabung von Datensätzen und Transformern mit Befehlen wie !pip install datasets und !pip install transformers.
install datasets

Für das Training unseres Modells wird der CNN/Daily Mail-Datensatz verwendet, der vollständige Artikel und Zusammenfassungen umfasst.

datasets import load
dataset for a dictionary
Wie du gesehen hast, haben wir auch die folgende Funktion load_metric importiert, die ich im folgenden Abschnitt erklären werde.


Bewertung mit dem ROUGE-Score

Zur Bewertung unseres Modells verwenden wir den ROUGE-Score, der KI-generierte Zusammenfassungen mit von Menschen erstellten vergleicht. Dies beinhaltet die Installation der Rouge-Score-Bibliothek und das Verständnis der Präzision, der Recall und des F-Masses zur Bewertung.

install rouge_score
ROUGE (Recall-Oriented Understudy for Gisting Evaluation) ist eine Reihe von Metriken, die für die Bewertung automatischer Zusammenfassungen bei der Verarbeitung natürlicher Sprache verwendet werden.
Um dies zu präzisieren, nehmen wir an, wir wollen die folgenden zwei Zusammenfassungen vergleichen:

reference_summary
Konzentrieren wir uns auf ROUGE-1, das die Überlappung jedes einzelnen Wortes (1-Gramm) untersucht.

Zur Erinnerung: ROUGE-1 wird berechnet als die Anzahl der sich überschneidenden Wörter in der generierten Zusammenfassung, die auch in der Referenzzusammenfassung vorkommen, geteilt durch die Gesamtzahl der Wörter in der Referenzzusammenfassung. In diesem Fall sind Wörter wie "I", "loved", "reading", "the" und "Hunger Games" in beiden Zusammenfassungen enthalten. Die Referenzzusammenfassung hat 5 Wörter, und alle 5 sind in der generierten Zusammenfassung enthalten, so dass die Trefferquote 100 % beträgt.

Die Genauigkeit ist die Anzahl der sich überschneidenden Wörter in der erstellten Zusammenfassung, die auch in der Referenzzusammenfassung enthalten sind, geteilt durch die Gesamtzahl der Wörter in der erstellten Zusammenfassung. Die generierte Zusammenfassung enthält 6 Wörter, von denen 5 auch in der Referenzzusammenfassung vorkommen. Die Genauigkeit beträgt also 5/6 oder etwa 85,71 %.

F-Measure (F1 Score) kombiniert Präzision und Recall zu einem einzigen Ergebnis. Er wird als harmonisches Mittel von Precision und Recall berechnet. Für dieses Beispiel würde der F1-Wert 92,3 % betragen.

Der Wertebereich reicht von 0 bis 1, und in unserem Beispiel liegen alle Werte nahe bei 1, so dass unsere generierte Zusammenfassung wahrscheinlich die wichtigsten Punkte effektiv erfasst


Datenverarbeitung und Modellauswahl

Die Vorverarbeitung beinhaltet die Verwendung eines Tokenizers, um Text in ein numerisches Format umzuwandeln, das das Modell interpretieren kann. Wir wählen das T5-Modell wegen seiner Vielseitigkeit in verschiedenen Aufgaben, einschliesslich Zusammenfassung, Übersetzung und Fragebeantwortung.

tokenizing the input
Im Grunde genommen verwandeln wir die Wörter in Zahlen.

tokenizier
Dieser Code ist so aufgebaut, dass er mit jedem Modellprüfpunkt aus dem Model Hub ausgeführt werden kann, solange das Modell eine Sequenz-zu-Sequenz-Version in der Transformers-Bibliothek hat. Hier haben wir den Kontrollpunkt t5-small gewählt.

model_checkpoint

Das T5-Modell hat eine Vielzahl von Aufgaben: Übersetzung, Zusammenfassung, Qualitätssicherung usw.

Wenn du das T5-Modell verwendest, müssen wir den Eingaben das Präfix "summarize:" voranstellen (das Modell kann auch übersetzen und braucht das Präfix, um zu wissen, welche Aufgabe es zu erfüllen hat).

prefix
 

Feinabstimmung des Transformer-Modells

Nun, da unsere Daten fertig sind, können wir das vorab trainierte Modell herunterladen und eine Feinabstimmung vornehmen.

Das T5-Modell wurde für eine andere Art von Text trainiert, weshalb wir es an unseren Datensatz anpassen müssen.

Zunächst müssen wir Parameter wie Lernrate und Stapelgröße anpassen:

full code

Hier,
  • legen wir fest, dass die Bewertung am Ende jeder Epoche erfolgt
  • die Lernrate anpassen
  • den Gewichtsabfall anpassen
Da der Seq2SeqTrainer das Modell regelmässig speichert und unser Datensatz recht gross ist, weisen wir ihn an, maximal drei Speicherungen vorzunehmen.

Schließlich verwenden wir die Option predict_with_generate (um Zusammenfassungen korrekt zu generieren) und aktivieren das Training mit gemischter Präzision (um etwas schneller zu werden).

Der letzte Punkt, der für unseren Seq2SeqTrainer definiert werden muss, ist die Berechnung der Metriken aus den Vorhersagen. Hierfür müssen wir eine Hilfsfunktion definieren, die Sie im Original-Notebook finden können.

Dann müssen wir nur noch all dies zusammen mit unseren Datensätzen an den Seq2SeqTrainer übergeben:

trainer


Das Modell lokal ausführen

Wir können nun unser Modell feinabstimmen, indem wir einfach die train-Methode aufrufen:
trainer.train
Um es lokal auszuführen, benötigen Sie eine Cuda-kompatible GPU in Ihrem Rechner.

Ich habe eine NVIDIA RTX A5000 auf meinem HP ZBook Fury, mit der ich das Modell mit dem folgenden Trainingsverlauf ausführen kann:
3 Epochs of Running the Model on Local GPU3 Epochen der Ausführung des Modells auf der lokalen GPU

Die Laufzeit schwankt zwischen 20 und 26 Minuten für drei Epochen, was für einen so grossen Datensatz recht schnell ist.

Ich war neugierig auf die GPU-Nutzung, also kannst du sie auch hier sehen.

Memory Usage during Training
Speichernutzung während des Trainings

Eine GPU-Auslastung von 100 % ist im Allgemeinen ein gutes Zeichen, wenn intensive Aufgaben wie das Trainieren von Modellen für maschinelles Lernen durchgeführt werden, da dies darauf hindeutet, dass die GPU für die Berechnungen vollständig genutzt wird. Eine konsequente, längere Nutzung von 100 % kann jedoch zu Überhitzungsproblemen führen, wenn das Kühlsystem nicht angemessen ist. Seien Sie also vorsichtig und lassen Sie Ihre Rechner nicht verbrennen!

 

Testen und Beobachten der Ergebnisse

Jetzt ist es an der Zeit, unser fein abgestimmtes Modell anhand aktueller Nachrichten zu testen, wie z. B. dem Start des Gemini-Modells von Google. Der vollständige Text ist hier zu finden.
Und das ist unser Ergebnis:

generated_summary vrs.reference_summary


Fazit

Wir haben gerade den faszinierenden Weg der Anwendung generativer KI auf die Aufgabe der Textzusammenfassung erkundet, wobei der Schwerpunkt auf der lokalen Ausführung lag. Wie wir gesehen haben, weist der Prozess zwar Ähnlichkeiten mit der Cloud-basierten Modellierung auf, die lokale Ausführung bietet jedoch einzigartige Vorteile, die Ihre Arbeit verbessern. Wir haben nicht nur die Möglichkeiten der generativen KI erforscht, sondern auch die Effizienz und Effektivität der Nutzung lokaler Ressourcen für solch anspruchsvolle Aufgaben hervorgehoben.

Ich würde mich freuen, Ihre Meinung zu unseren Ergebnissen zu lesen. Bleiben Sie dran für weitere Einblicke in die spannende Welt der KI!

Diese Demo wurde in Zusammenarbeit mit Dipanjan Sarkar, unserem leitenden Datenwissenschaftler, erstellt;

*Als Z by HP Global Data Science Ambassador wurden mir HP-Produkte zur Verfügung gestellt, um unsere innovative Arbeit zu erleichtern.

Möchtest du mehr über die Constructor Academy und technikbezogene Themen lesen? Dann finde hier weitere spannende Blogbeiträge.

Mehr Infos
Blog