Große Sprachmodelle (LLMs) erlangen heutzutage immer mehr Aufmerksamkeit, aber ihre Lernfähigkeit von Null/Wenig-Shots wird häufig bewertet, und ich bin der Meinung, dass sie nicht verwendet werden, um sie zur Feinabstimmung wie vorhandene vorgebildete Modelle wie Bert zu verwenden. Um herauszufinden, wie viel Textklassifizierung mit LLM möglich ist, haben wir ein Experiment mit LLM zur Textklassifizierung mit derselben Methode wie Textklassifizierung unter Verwendung von Bert durchgeführt.
Der Zweck dieses Experiments besteht darin, zu untersuchen, was passiert, wenn LLM, was häufig auf die Fähigkeit von Null/Wenig-Shot-Lernfähigkeit aufmerksam macht, für die reguläre Textklassifizierung verwendet wird.
Bert, das bisher häufig für die Textklassifizierung verwendet wurde, ist ein bidirektionales Modell und verwendet häufig den Satz -Token [CLS] für die Textklassifizierung. LLMs, die heutzutage häufig verwendet werden, wie Lama, sind jedoch unidirektionale Modelle. Daher hat es in einem unidirektionalen Modell keinen Sinn, den Satztoken zu nehmen. Daher verwenden wir in dieser Implementierung die eingebettete Darstellung von Satz-End-Token für die Textklassifizierung, wobei die LlamaForSequenceClassification Klassifizierungsklasse von transformers als Referenz verwendet wird. In einem unidirektionalen Sprachmodell kann der Token am Ende des Kategoriums nur als Token der gesamten Aussage in einer Reihe angesehen werden, sodass es als angemessene Alternative zu [CLS] angesehen wird.
Da die vollständige Feinabstimmung von LLM aus Sicht der Speicher- und Recheneffizienz von LLM sehr schwierig ist, verwenden wir Lora, eine Feinabstimmungstechnik, mit der Sie eine Leistung erzielen können, die mit der vollständigen Feinabstimmung vergleichbar ist, indem Sie nur die zusätzliche Matrix mit niedrigem Rang anpassen. Hinweis: PEFT wird zur Feinabstimmung mit Lora-Erklärungsmaterial verwendet.
Im Evaluierungsexperiment werden wir neun Werte des Livedoor News Corpus klassifizieren. Der experimentelle Inhalt entspricht fast dem Textklassifizierungs -Tutorial des Autors mit Bert.
Im Bewertungsexperiment wurden sieben Arten japanischer LLM verwendet. Insbesondere führten wir Experimente an vier Rinna 3.6b -Modellen und Cyberagent 7B-, 3B- und 1B -Modellen durch.
Um den Hyperparameter anzupassen, führten wir Experimente mit der Lernrate auf 1E-4, 3E-4, 5E-4 und 1E-3 durch. Wir haben auch mit drei Arten von Eingangsformaten mit dem Modell experimentiert. Insbesondere für jeden Artikel im Livivedoor News Corpus wurde der Titel in einer Variablen namens title und der body gespeichert und in die folgenden drei Vorlagen injiziert.
| Vorlagentyp | Aussehen |
|---|---|
| 0 | f "Titel: {Titel} nbody: {Body} nLabel:" |
| 1 | f "Titel: {Titel} nbody: {Body}" |
| 2 | f "{title} n {body}" |
Wir führten Experimente nacheinander für alle Kombinationen der oben genannten Lernraten und Vorlagen durch und verwendeten den Hyperparameter mit dem höchsten Makro-Durchschnittswert F-Wert im Entwicklungswert für die Bewertung im endgültigen Testsatz. Loras Rang R ist auf 32 festgelegt.
Beachten Sie, dass die experimentellen Ergebnisse nicht genau sind, da die Experimente nur einmal mit einem einzigen Zufallszahlen-Saatgutwert durchgeführt werden und keine geteilte Kreuzvalidierung durchgeführt wird. Bitte vertrauen Sie daher den folgenden Ergebnissen nicht zu sehr, sondern schauen Sie sie sich nur als Referenz an.
Die Ergebnisse sind in der folgenden Tabelle angezeigt. Die experimentellen Ergebnisse sind in absteigender Reihenfolge für den Makro -durchschnittlichen F -Wert angeordnet. Alle nachfolgenden Ergebnisse können aus der im results gespeicherten CSV -Datei angezeigt werden.
| Genauigkeit | Präzision | Abrufen | F1 | |
|---|---|---|---|---|
| Rinna/Japanisch-GPT-NEOX-3,6B-INTRUCTULION-SFT-V2 | 97.96 | 97.77 | 97.76 | 97.75 |
| Rinna/Japanisch-GPT-NEOX-3,6B | 97,55 | 97.24 | 97.39 | 97.30 |
| Rinna/Japanisch-GPT-NEOX-3,6B-INTRUKTION-SFT | 97,55 | 97.32 | 97.27 | 97.27 |
| Rinna/Japanisch-GPT-NEOX-3,6B-INTRUKTION-PPO | 97,55 | 97.03 | 97.37 | 97.18 |
| Cyberagent/Open-CALM-7B | 97.01 | 96,76 | 96.42 | 96,55 |
| Cyberagent/Open-CALM-3B | 96,88 | 96.38 | 96.51 | 96.42 |
| Cyberagent/Open-CALM-1B | 94.43 | 94.24 | 93.80 | 93.98 |
Aus der Tabelle können wir sehen, dass die Richtlinie rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 den höchsten F-Wert aufwies. Andererseits hat das relativ große Modell bei 7B, cyberagent/open-calm-7b einen etwas niedrigeren F-Wert. Um die Leistung zu verbessern, kann es notwendig sein, sie ein wenig mehr zu stimmen, wie beispielsweise Rolas R und anderen hohen Paras.
Übrigens beträgt der F-Wert von rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 97.75 , was höher ist als der F-Wert von studio-ousia/luke-japanese-large-lite was die vom Autor implementierte Textklassifizierungs-Tutorial mit 97.47 erreicht hat. Natürlich ist die Anzahl der Parameter im Modell etwa 9 -mal unterschiedlich. Es kann also kein einfacher Vergleich sein. Wenn Sie jedoch die Leistung der Textklassifizierung verfolgen möchten, kann es eine gute Option sein, LLM+LORA als Alternative zu Bert zu verwenden.
Als nächstes sind rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 cyberagent/open-calm-7b rinna/japanese-gpt-neox-3.6b Vorlage für die drei repräsentativen Modelle in diesem Experiment in der folgenden Tabelle gezeigt.
| Vorlage | Val. F1 | F1 | |
|---|---|---|---|
| Rinna/Japanisch-GPT-NEOX-3,6B-INTRUCTULION-SFT-V2 | 2 | 97.27 | 97.75 |
| Rinna/Japanisch-GPT-NEOX-3,6B-INTRUCTULION-SFT-V2 | 1 | 97.18 | 97.14 |
| Rinna/Japanisch-GPT-NEOX-3,6B-INTRUCTULION-SFT-V2 | 0 | 97.05 | 96,80 |
| Rinna/Japanisch-GPT-NEOX-3,6B | 1 | 97.14 | 97.30 |
| Rinna/Japanisch-GPT-NEOX-3,6B | 2 | 96,92 | 97.36 |
| Rinna/Japanisch-GPT-NEOX-3,6B | 0 | 96.61 | 96.69 |
| Cyberagent/Open-CALM-7B | 1 | 97.22 | 96,55 |
| Cyberagent/Open-CALM-7B | 0 | 97.07 | 96,56 |
| Cyberagent/Open-CALM-7B | 2 | 96,88 | 96,85 |
Im Allgemeinen wird die Inferenzfähigkeit eines LLM stark von der Vorlage (Eingabeaufforderung) beeinflusst. Da dieses Experiment dagegen keine Null/Wenig-Shot-ähnliche Einstellung ist, wird erwartet, dass Leistungsunterschiede aufgrund von Vorlagen in gewissem Maße reduziert werden können. Die Ergebnisse zeigen jedoch, dass die Vorlage zuvor einen bestimmten Unterschied in den F -Werten (etwa 1 Punkt in F -Werten) hervorgebracht hat. template_type=0 ist eine relativ komplexe Vorlage, template_type=2 ist eine einfache Vorlage, die einfach mit Zeilenunterbrechungen verkettet ist. Es ist jedoch zu erkennen, dass einfaches template_type=2 tendenziell eine bessere Leistung hat. Eingabeaufforderungen sind in Einstellungen mit Zero/Wenig-Shot sehr wichtig. Wenn Sie jedoch Feinabstimmungen vornehmen können, ist es möglicherweise besser, die Eingabeaufforderungen so einfach wie möglich zu halten.
Schauen wir uns als nächstes die Leistung jeder Lernrate an, wenn das Modell an rinna/japanese-gpt-neox-3.6b befestigt ist und template_type auf 2 befestigt ist.
| Lr | Val. F1 | Genauigkeit | Präzision | Abrufen | F1 |
|---|---|---|---|---|---|
| 5e-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 3e-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 1e-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 5e-3 | 24.78 | 32.20 | 36.30 | 30.27 | 28.21 |
| 3e-3 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 1e-3 | 96,92 | 97.69 | 97.51 | 97.27 | 97.36 |
| 5e-4 | 96,77 | 98.23 | 98.02 | 97.87 | 97.93 |
| 3e-4 | 96.74 | 96,88 | 96,46 | 96.21 | 96.30 |
| 1e-4 | 94.79 | 97.01 | 96,85 | 96,72 | 96,76 |
| 5e-5 | 94.28 | 95,92 | 95.73 | 95,50 | 95,58 |
| 3e-5 | 93.74 | 94.02 | 93,50 | 93.61 | 93.55 |
| 1e-5 | 78,94 | 81.25 | 80.21 | 79,43 | 79,62 |
Aus der Tabelle aus ist ersichtlich, dass zwar eine ziemlich große Lernrate zum Lernen mit LORA wirksam ist, die Obergrenze jedoch bei 1e-3 liegt. Wenn Sie eine sehr große Lernrate wie 1e-2 verwenden, wird Ihr Lernen nicht gut laufen. Ich würde gerne experimentelle Ergebnisse auf einem breiten Modell sehen, aber wenn ich mit LLM+Lora klassifiziert, ist es eine gute Idee, eine Lernrate von rund 5e-4 als erste Bewegung zu versuchen.
Schauen wir uns außerdem die Leistungsunterschiede für jede Chargengröße an, wenn das Modell an rinna/japanese-gpt-neox-3.6b , template_type 2 befestigt ist, und Loras r ist auf 32 festgelegt.
| Chargengröße | Lr | Val. F1 | Genauigkeit | Präzision | Abrufen | F1 |
|---|---|---|---|---|---|---|
| 2 | 5e-4 | 97.12 | 98.10 | 98.02 | 97.48 | 97.70 |
| 16 | 1e-3 | 97.12 | 97.83 | 97.77 | 97.37 | 97.52 |
| 32 | 1e-3 | 96,92 | 97.69 | 97.51 | 97.27 | 97.36 |
| 64 | 5e-4 | 96,57 | 97,55 | 97.39 | 97.35 | 97.35 |
| 4 | 5e-4 | 97.08 | 97.42 | 97.37 | 97.01 | 97.15 |
| 8 | 3e-4 | 97.20 | 97,28 | 96,99 | 96,87 | 96.91 |
Diese Tabelle ist in absteigender Reihenfolge für F -Werte angeordnet. Infolgedessen ist es möglich, dass die Möglichkeit besteht, dass Leistungsunterschiede in gewissem Maße von der Chargengröße erzeugt werden. In diesem Experiment wurde das Experiment jedoch nur einmal mit einem Zufallszahlen -Saatgutwert durchgeführt, sodass es schwierig erscheint, zu einem klaren Schluss zu kommen. Im Allgemeinen dauern kleinere Chargengrößen länger, um zu trainieren, und sind in der Lage, in der Leistung instabil zu sein. Daher ist es möglicherweise eine gute Idee, die Chargengröße auf etwa 16 oder 32 vorerst zu setzen.
Schauen wir uns schließlich die Leistung von LORA pro R an, wenn das Modell an rinna/japanese-gpt-neox-3.6b befestigt ist und template_type auf 2 befestigt ist.
| Lora r | Lr | Val. F1 | Genauigkeit | Präzision | Abrufen | F1 |
|---|---|---|---|---|---|---|
| 8 | 5e-4 | 97.45 | 97.15 | 96,97 | 96,75 | 96,83 |
| 64 | 1e-3 | 97.22 | 97,28 | 96,96 | 96,85 | 96,89 |
| 16 | 1e-3 | 97.20 | 97.69 | 97.59 | 97.27 | 97.38 |
| 4 | 3e-4 | 97.12 | 97.69 | 97.64 | 97.24 | 97.40 |
| 32 | 1e-3 | 96,92 | 97.69 | 97.51 | 97.27 | 97.36 |
Infolgedessen habe ich das Gefühl, dass es nicht viel Korrelation zwischen f -Werten im Entwicklungssatz und F -Werten im Testsatz gibt. Da der Wert von Loras R als "desto größer das Modell ist, ist es sicherer, dass es sicherer wäre, es für mittelgroße LLMs von nur wenigen B auf 32 oder höher zu setzen, aber ich würde gerne ein bisschen mehr Experiment versuchen.
In dieser Implementierung haben wir ein Experiment mit LLM zur herkömmlichen Textklassifizierung durchgeführt. Wenn wir mit LORA feine Anpassungen mit LORA vornehmen, können wir durch einfaches Einstellen einer kleinen Anzahl von Parametern eine recht hohe Leistung erzielen, und "LLM als Alternative zu Bert" kann ebenfalls als angemessene Option angesehen werden. Es gab auch eine Tendenz, dass Vorlagen die Leistung auch beim Einstellen von Feinabstimmungen immer noch beeinflussen. Wenn feine Anpassungen mit LORA vorgenommen werden, muss die Lernrate auf einen ziemlich großen Wert festgelegt werden, und es wurde festgestellt, dass der Wert von Rank r wahrscheinlich auch die Leistung beeinflusst.
Autor: Hayato Tsukagoshi
E -Mail: [email protected]
Wenn Sie sich auf diese Implementierung in einem Papier usw. beziehen möchten, verwenden Sie bitte Folgendes:
@misc {
hayato-tsukagoshi-2023-llm-lora-classification,
title = { {Text Classification with LLMs and LoRA} } ,
author = { Hayato Tsukagoshi } ,
year = { 2023 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/hppRC/llm-lora-classification} } ,
url = { https://github.com/hppRC/llm-lora-classification } ,
}