Bauen und spielen! Ihr eigenes V&L-Modell, ausgestattet mit LLM! | von Yuichi Inoue | September 2023


In den Forschungsarbeiten zu GIT-Modellen wurde erklärt, dass ein starker Vision-Encoder verwendet wird und Zufallsparameter für das Sprachmodell übernommen werden. Da das Ziel dieses Mal darin besteht, letztendlich ein Sprachmodell der 7B-Klasse zu verwenden, wird ein vorab trainiertes Modell auf das Sprachmodell angewendet. Die folgenden Module werden zur Feinabstimmung untersucht. Der GIT-ProjektionDa es sich um ein initialisiertes Modul handelt, ist es immer enthalten. Einige Kombinationen mögen überflüssig erscheinen, aber sie werden in diesem Versuch ohne allzu große Bedenken untersucht.

Für das Training festgelegte Module erhalten Farbverläufe, während der Rest so geändert wird, dass er keine Farbverläufe aufweist.

# Angabe der zu trainierenden Parameter (alles zu trainieren würde die Speichernutzung erhöhen)
für Name, p in model.model.named_parameters():
if np.any([k im Namen für k in keys_finetune]):
p.requires_grad = True
anders:
p.requires_grad = Falsch

Der für diese Untersuchung verwendete Vision Encoder und LLM sind:

  • openai/clip-vit-base-patch16
  • facebook/opt-350m

Das Training nutzt den COCO-Datensatz und dauert 5 Epochen.

Hier sind die Zielmodule, die während jedes Experiments trainiert wurden:

  • Projekt: GIT-Projektion. Wird nach dem Zufallsprinzip initialisiert, sodass es immer trainiert wird.
  • LoRA: Es wurden Abfrage, Schlüssel und Wert der Selbstaufmerksamkeit im Sprachmodell angewendet.
  • OPT: Alle Schichten wurden trainiert.
  • ViT: Alle Schichten wurden trainiert.
  • Kopf: Der letzte lm_head von OPT wurde ausgebildet.

(Hinweis: LoRA kann zwar auf ViT angewendet werden, aber um die Experimente nicht zu kompliziert zu machen, wurde es dieses Mal nicht einbezogen.)

Diese Abbildung zeigt den Trainingsverlust. Proj, LoRA, OPT, ViT und Head in der Legende sind die oben erläuterten trainierten Module. (Abbildung vom Autor erstellt)

Wie aus dem Diagramm der Trainingsverluste hervorgeht, ist es offensichtlich, dass einige Gruppen keine guten Leistungen erbringen. Dies war der Fall, wenn OPT in die Schulung einbezogen wurde. Obwohl alle Experimente unter ziemlich ähnlichen Bedingungen durchgeführt wurden, können bei der Feinabstimmung des Sprachmodells detailliertere Anpassungen, beispielsweise der Lernrate, erforderlich sein. Als nächstes werden die Ergebnisse untersucht, mit Ausnahme der Modelle, bei denen OPT im Training enthalten ist.

Diese Abbildung zeigt den Trainingsverlust ohne vollständige Feinabstimmungsergebnisse. Proj, LoRA, OPT, ViT und Head in der Legende sind die oben erläuterten trainierten Module. (Abbildung vom Autor erstellt)
Diese Abbildung zeigt den Validierungsverlust. Proj, LoRA, OPT, ViT und Head in der Legende sind die oben erläuterten trainierten Module. (Abbildung vom Autor erstellt)

Sowohl der Trainings- als auch der Validierungsverlust gingen mit dem am stärksten zurück Projektion+LoRA Modell. Feinschliff-Finale Kopf Schicht zeigte nahezu identische Ergebnisse. Wenn ViT ebenfalls trainiert wird, scheint der Verlust etwas höher zu sein und die Ergebnisse scheinen instabil zu sein. Selbst wenn LoRA während des ViT-Trainings hinzugefügt wird, ist der Verlust tendenziell immer noch hoch. Für die Feinabstimmung dieser Daten scheint die Verwendung eines vorab trainierten ViT-Modells ohne Aktualisierung seiner Parameter stabilere Ergebnisse zu liefern. Die Wirksamkeit von LoRA wurde an verschiedenen Stellen anerkannt, und aus diesem Experiment geht hervor, dass die Hinzufügung von LoRA zum LLM sowohl den Trainings- als auch den Validierungsverlust verbesserte.

Überprüfung der Inferenzergebnisse einiger Testdaten:

Beispielergebnisse von GIT-OPT. Die Bilder stammen aus dem M3IT-Datensatz und die Textergebnisse wurden anhand des Modells des Autors erstellt

Beim Training von OPT selbst sind die Ergebnisse genauso schlecht wie das Ergebnis eines Verlusts, sodass dem Modell die Worte fehlen. Darüber hinaus ist die Ausgabe beim ViT-Training zwar semantisch sinnvoll, beschreibt aber etwas völlig anderes als das gegebene Bild. Allerdings scheinen die anderen Ergebnisse die Merkmale der Bilder bis zu einem gewissen Grad zu erfassen. Auf dem ersten Bild werden beispielsweise „Katze“ und „Banane“ erwähnt, auf dem zweiten „Verkehrsschild“. Vergleicht man die Ergebnisse mit und ohne LoRA, so verwendet letzteres tendenziell wiederholt ähnliche Wörter, aber die Verwendung von LoRA scheint es etwas natürlicher zu machen. Ausbildung der Kopf führt zu interessanten Ergebnissen, wie zum Beispiel der Verwendung von „Spielen“ statt „Essen“ für das erste Bild. Obwohl diese Ergebnisse einige unnatürliche Elemente enthalten, lässt sich daraus schließen, dass das Training bei der Erfassung von Bildmerkmalen erfolgreich war.

Zur Feinabstimmung der Bedingungen in früheren Experimenten wurde ein etwas kleineres Sprachmodell, OPT-350m, verwendet. Nun besteht die Absicht, das Sprachmodell auf ein 7B-Modell umzustellen. Es gibt nicht nur OPT, sondern es werden auch stärkere LLMs, LLaMA und MPT, eingeführt.

Die Integration dieser beiden Modelle kann auf ähnliche Weise wie bei OPT erfolgen. Bezogen auf die Vorwärtsfunktionen des LamaModel Und MPTModel, kombinieren Sie die projizierten Bildvektoren mit Texttokens und ändern Sie die Maske von Kausale Aufmerksamkeitsmaske Zu GITs Aufmerksamkeitsmaske. Eines ist zu beachten: Für MPT ist die Maske nicht (0, -inf), sondern (False, True). Die weiteren Prozesse können analog umgesetzt werden.

Um das 7B-Klasse-Modell mit OPT zu verwenden, ändern Sie lediglich den Modellnamen von facebook/opt-350m in facebook/opt-6.7b.

Für LLaMA wird dies mit der Verfügbarkeit von LLaMA2 das Modell der Wahl sein. Um dieses vorab trainierte Modell verwenden zu können, sind Genehmigungen von Meta und Hugging Face erforderlich. Für Hugging Face ist ein Konto erforderlich. Richten Sie dieses daher unbedingt ein. Genehmigungen erfolgen in der Regel innerhalb weniger Stunden. Melden Sie sich anschließend bei Hugging Face an dem Terminal an, an dem das Training durchgeführt wird.

Huggingface-Cli-Anmeldung

Sie können sich mit dem Token anmelden, der im Hugging Face-Konto → Einstellungen → Zugriffstoken erstellt wurde.

Die Trainingsparameter bleiben konsistent, verwenden den COCO-Datensatz und dauern drei Epochen. Basierend auf den Ergebnissen von Experiment 1 wurden die Module zur Feinabstimmung festgelegt Projektion + LoRA.

Werfen wir einen Blick auf die Ergebnisse.

Diese Abbildung zeigt den Trainingsverlust (Abbildung vom Autor)
Diese Abbildung zeigt den Validierungsverlust (Abbildung vom Autor)

Bei der Betrachtung des Verlusts fällt auf, dass die Modelle, die LLaMA2 und MPT als LLM verwenden, eine zufriedenstellendere Reduzierung aufweisen. Schauen wir uns auch die Inferenzergebnisse an.

Beispielergebnisse von GIT-LLMs. Die Bilder stammen aus dem M3IT-Datensatz und die Textergebnisse wurden anhand des Modells des Autors erstellt

Was das erste Bild betrifft, so wirken die Gesichtsausdrücke bei allen Modellen im Vergleich zum OPT-350m natürlicher. Es gibt keine bizarren Ausdrücke wie „eine Banane mit einer Banane“, die die Stärke von LLM hervorheben. Beim zweiten Bild gibt es immer noch Schwierigkeiten mit Formulierungen wie „eine Ampel“ oder „ein Gebäude“. Bei solch komplexen Bildern muss möglicherweise eine Aktualisierung des ViT-Modells in Betracht gezogen werden.

Lassen Sie uns abschließend Rückschlüsse auf Bilder ziehen, die mit GPT-4 populär wurden.

Beispielergebnisse von GIT-LLMs. Es wird ein Bild zitiert aus Hier, und Textergebnisse wurden durch die Modelle des Autors erstellt

Obwohl fließende Antworten erwartet wurden, seit LLM im Einsatz ist, sind die Ergebnisse recht einfach. Dies könnte daran liegen, dass das Modell ausschließlich auf COCO trainiert wurde.

Angesichts der enttäuschenden Ergebnisse des vorherigen Experiments wurde beschlossen, andere Daten als COCO für das Training einzubeziehen. Der derzeit verwendete M3IT-Datensatz ist recht umfangreich und kann eine beträchtliche Datenmenge im gleichen Format wie COCO verarbeiten.

Diese Tabelle stammt aus Tabelle 3 von „M3IT: A Large-Scale Dataset into Multi-Modal Multilingual Instruction Tuning“

Es ist beabsichtigt, Daten aus dieser Quelle mit Ausnahme der Kategorien „Chinesisch“ und „Video“ zu verwenden. Ursprünglich enthielt der COCO-Trainingsdatensatz 566.747 Daten. Durch die Kombination mit weiteren Quellen erhöhte sich diese Zahl auf 1.361.650. Obwohl sich die Größe ungefähr verdoppelt hat, geht man davon aus, dass der Datensatz aufgrund der größeren Aufgabenvielfalt qualitativ hochwertiger geworden ist.

Der Umgang mit mehreren Pytorch-Datensätzen kann problemlos mit dem erreicht werden ConcatDataset.

dataset_list = [
datasets.load_dataset("MMInstruction/M3IT", i) für i in m3it_name_list
]
train_dataset = Torch.utils.data.ConcatDataset([d["train"] für d in dataset_list])

Das Training wurde für eine Epoche durchgeführt und das LLaMA2-Modell wurde zur Feinabstimmung verwendet Projektion und LoRA, ähnlich wie Experiment 2.

Da es zu diesem Zeitpunkt keinen Vergleichsverlust gibt, gehen wir direkt auf die Inferenzergebnisse ein.

Beispielergebnisse von GIT-LLaMA2. Die Bilder stammen aus dem M3IT-Datensatz und die Textergebnisse wurden anhand des Modells des Autors erstellt
Beispielergebnisse von GIT-LLaMA2. Die Bilder stammen aus dem M3IT-Datensatz und die Textergebnisse wurden anhand des Modells des Autors erstellt
Beispielergebnisse von GIT-LLaMA2. Die Bilder stammen aus dem M3IT-Datensatz und die Textergebnisse wurden anhand des Modells des Autors erstellt

Neben der Lösung einfacher Probleme bewältigt das Modell nun auch komplexere Herausforderungen. Durch das Hinzufügen von Datensätzen für Aufgaben, die über die reine Untertitelung hinausgehen, wurden die Möglichkeiten erheblich erweitert. Es war überraschend, dieses Maß an Genauigkeit mit nur einer Trainingsepoche zu erreichen.

Testen wir es mit dem folgenden Beispielbild. Angesichts der größeren Vielfalt im Datensatz wurde die Art und Weise, wie die Fragen dargestellt wurden, leicht geändert.

Beispielergebnisse von GIT-LLaMA2. Es wird ein Bild zitiert aus Hier, und Textergebnisse wurden durch die Modelle des Autors erstellt

Auch wenn die Beschreibung „Umbrella“ noch nicht verfügbar war, fühlt es sich so an, als würde es besser werden. Zur weiteren Verbesserung ist es erforderlich, die Anzahl der Trainingsepochen zu erhöhen, mehr Arten oder Mengen von Datensätzen hinzuzufügen und leistungsfähigeres ViT oder LLM zu nutzen. Dennoch ist es beeindruckend, dass ein solches Modell angesichts der Rechen- und Datenressourcen in nur einem halben Tag entwickelt werden könnte.



Quelllink

Hinterlasse eine Antwort

Deine Email-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Sie können diese HTML- Tags und -Attribute verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

de_DEGerman