- Wenn das Standardziel von LLMs, die Next-Token Prediction, durch die gleichzeitige Vorhersage mehrerer künftiger Tokens ersetzt wird, lässt sich auch bei gleichem Daten- und Rechenbudget die Leistung bei Code- und natürlichsprachlicher Generierung weiter steigern
- Die Architektur nutzt mehrere Output-Heads auf einem gemeinsamen Transformer-Backbone; bei der normalen Inferenz wird nur der Next-Token-Head verwendet und das Modell verhält sich wie bei der bisherigen autoregressiven Generierung
- Bei Code-Modellen löste ein Modell mit 13B Parametern 12 % mehr HumanEval- und 17 % mehr MBPP-Aufgaben als ein vergleichbares Next-Token-Modell; der Vorteil ist bei größeren Modellen deutlicher
- Zusätzliche Heads können für self-speculative decoding genutzt werden: Ein 4-token prediction model zeigte bis zu 3×, ein 8-byte prediction model 6,4× schnellere Inferenz
- Bei synthetischen Aufgaben war der Ansatz vorteilhaft für induction heads und algorithmisches Schließen; möglicherweise verringert er die Verteilungsdifferenz zwischen Teacher Forcing im Training und autoregressiver Verteilung bei der Generierung
Multi-Token-Prediction-Ansatz
- Bisheriges Language Modeling minimiert an jeder Position den Cross-Entropy Loss für genau ein nächstes Token
- Multi-Token Prediction erweitert das Lernziel so, dass an jeder Position die nächsten n Tokens auf einmal vorhergesagt werden
- Die Modellarchitektur besteht aus drei Teilen
- Ein gemeinsamer Transformer-Backbone erzeugt latente Repräsentationen des beobachteten Kontexts
- n unabhängige Output-Heads sagen die jeweiligen künftigen Tokens parallel voraus
- Eine gemeinsame Unembedding-Matrix berechnet die finalen Token-Wahrscheinlichkeiten
- Die einfachste Inferenzmethode ist die normale autoregressive Prediction, bei der nur der Next-Token-Prediction-Head genutzt wird; die übrigen Heads können verworfen werden
- Zusätzliche Output-Heads können für self-speculative decoding wie blockwise parallel decoding oder Medusa-like tree attention genutzt werden
Speichereffiziente Implementierung
- Bei einer einfachen Implementierung müssten Logits und Gradienten aller Heads im Speicher gehalten werden, was den GPU-Speicherverbrauch erhöht
- In heutigen LLMs ist die Vocabulary-Größe V deutlich größer als die Dimension d der latenten Repräsentationen, sodass der Logit-Vektor zum GPU-Speicherengpass wird
- Die vorgeschlagene Implementierung führt nach dem Forward Pass des gemeinsamen Backbones die Forward-/Backward-Passes der einzelnen Output-Heads sequenziell aus
- Logits und Gradienten eines Heads werden freigegeben, bevor zum nächsten Head gewechselt wird
- Im Backbone werden nur die akkumulierten Gradienten gehalten
- Dadurch sinkt der Peak-GPU-Speicherverbrauch von O(nV + d) auf O(V + d), ohne die Laufzeitkosten zu erhöhen
Ergebnisse der Code-Modell-Experimente
- Die Experimente mit realen Daten vergleichen Next-Token-Prediction-Modelle und n-token prediction models bei gleicher Parameterzahl
- Werden den Future-Prediction-Heads n−1 Layer hinzugefügt, werden aus dem gemeinsamen Backbone n−1 Layer entfernt
- Sechs Modellgrößen von 300M bis 13B wurden von Grund auf mit mindestens 91B code tokens trainiert
- In der MBPP- und HumanEval-Evaluation konnten kleine Modelle schlechter als das Basismodell sein, doch mit zunehmender Skalierung lag Multi-Token Prediction vorn
- Das 13B-Modell löste mehr Aufgaben als ein vergleichbares Next-Token-Modell
- HumanEval: 12 % mehr gelöste Aufgaben
- MBPP: 17 % mehr gelöste Aufgaben
- In einer Ablation mit einem 7B-Modell, das mit 200B code tokens trainiert wurde, wurden n=1, 2, 4, 6 und 8 verglichen
- n=4 war bei pass@1, pass@10 und pass@100 auf HumanEval und MBPP durchgehend am besten
- Bei APPS/Intro lag n=6 vorn
- Die optimale Window Size kann von der Verteilung der Eingabedaten abhängen
Inferenzgeschwindigkeit und Byte-Level-Modelle
- Auf ein 7B 4-token prediction model wurde greedy self-speculative decoding angewendet; die Decoding-Geschwindigkeit wurde auf nicht im Training verwendeten Test-Prompts für Code und natürliche Sprache gemessen
- Die Ergebnisse zeigen eine Beschleunigung um 3,0× bei Code und 2,7× bei Text
- Bei Code wurden im Durchschnitt 2,5 der 3 vorgeschlagenen Tokens akzeptiert
- Ein 8-byte prediction model erzielte bei der Inferenzgeschwindigkeit eine Verbesserung um 6,4×
- Im Experiment mit Byte-Level-Tokenization wurde ein 7B byte-level transformer mit 314B bytes trainiert, was etwa 116B tokens entspricht
- Das 8-byte prediction model löste mehr Aufgaben als Next-Byte Prediction
- 67 % mehr gelöste Aufgaben bei MBPP pass@1
- 20 % mehr gelöste Aufgaben bei HumanEval pass@1
- Multi-Byte Prediction könnte ein Weg sein, Byte-Level-Modelle effizienter zu trainieren
Mehrere Epochs, Fine-Tuning und Ergebnisse mit natürlicher Sprache
- Auch beim Training über mehrere Epochs auf denselben Daten behält Multi-Token Prediction einen Teil des Vorteils gegenüber Next-Token Prediction
- MBPP pass@1: +2,4 %
- HumanEval pass@100: +3,2 %
- Die übrigen Metriken sind ähnlich
- Beim Fine-Tuning auf CodeContests war ein mit 4-token prediction vortrainiertes 7B-Modell über pass@k hinweg besser als das Next-Token-Basismodell
- Auch das Fine-Tuning des 4-token prediction model unverändert mit n′=4 Loss war besser als das Basismodell
- Insgesamt am besten war das Fine-Tuning mit entferntem Zusatz-Head und Next-Token Target
- Für natürliche Sprache wurde ein 7B-Modell mit 200B tokens trainiert und auf sechs Standard-NLP-Benchmarks evaluiert
- Das 2-token prediction model war dem Next-Token-Basismodell ähnlich
- Das 4-token prediction model fiel in der Leistung etwas ab
- Größere Modellgrößen könnten nötig sein
- Generative Evaluation für natürliche Sprache wurde getrennt nach Zusammenfassungs- und Mathematikaufgaben durchgeführt
- Auf 8 Summarization-Benchmarks lagen n=2- und n=4-Modelle sowohl nach Training mit 200B als auch mit 500B tokens gemessen an ROUGE-L F1 über dem Next-Token-Basismodell
- In der GSM8K-8-shot-Evaluation lag n=2 bei 200B tokens vor dem Basismodell, nach 500B tokens kehrte sich das Muster jedoch um; n=4 war insgesamt schlechter
Induction und algorithmisches Schließen in synthetischen Aufgaben
- Induction bezeichnet das Muster, dass nach einem Auftreten von „AB“ in einem Satz später bei erneutem Auftreten von „A“ anschließend „B“ vorhergesagt wird
- Mit dem Children-Stories-Datensatz wurden Modelle mit 1M bis 1B nonembedding parameters trainiert; die induction capability wurde mit einem Testset gemessen, in das zufällige 2-token-Namen eingefügt wurden
- Bei kleinen Modellen bis 30M verbesserte 2-token prediction loss die Bildung von induction capability deutlich
- Ab 100M verschwand dieser Vorteil
- Bei polynomialen Arithmetikaufgaben wurden Ausdrücke in F7[X]/(X5) mit unary negation, addition, multiplication und composition trainiert und evaluiert
- Multi-Token Prediction erhöhte die Genauigkeit über alle task difficulty-Stufen hinweg und verbesserte auch die out-of-domain generalization deutlich, wenn auch auf niedrigem absolutem Niveau
- Der Effekt, Next-Token Prediction durch Multi-Token Prediction zu ersetzen, war größer, als das Modell von 30M auf 100M zu skalieren
Warum es funktionieren könnte
- Multi-Token Prediction kann die Verteilungsdiskrepanz zwischen Teacher Forcing im Training und inference-time autoregressive generation abschwächen
- Next-Token Prediction kann sich auf kurzfristige Vorhersagen konzentrieren und dabei langfristige Abhängigkeiten ignorieren
- Multi-Token Prediction weist Tokens, die stark mit nachfolgenden Tokens zusammenhängen, implizit ein höheres Gewicht zu
- Das lässt sich als Verstärkung von Choice Points interpretieren
- Nützliche Textgenerierung hänge demnach davon ab, an Choice Points die richtigen Entscheidungen zu treffen
- In einer informationstheoretischen Herleitung zeigt sich 2-token prediction in einer Form, die die Bedeutung des Mutual Information-Terms zwischen X und Y stärker erhöht als Next-Token Prediction
Grenzen und Kosten
- Offene Aufgaben sind Methoden zur automatischen Wahl von n bei Multi-Token Prediction, die Nutzung von Loss Scale und Loss Balancing, die Anpassung der Vocabulary Size sowie die Entwicklung eines auxiliary prediction loss, der im Embedding Space arbeitet
- Für das Training aller Experimentmodelle wurden insgesamt etwa 500K GPU hours verwendet
- Die Hardware bestand aus A100-80GB und H100
- Die geschätzten Gesamtemissionen betragen rund 50 tCO2eq und wurden durch Metas sustainability program zu 100 % kompensiert
- Ziel ist es, die Compute- und Data-Efficiency von Sprachmodellen zu erhöhen; dennoch sollte man Rebound Effects beachten und sowohl gesellschaftliche Vorteile als auch Risiken von LLMs berücksichtigen
1 Kommentare
Hacker-News-Kommentare
In diesem Bereich passiert viel zu viel.
Es wäre hilfreich, wenn es Material gäbe, das Begriffe wie Daten, Pretraining, Training, Inferenz, Mixture of Experts, RAG im tatsächlichen Ablauf einmal chronologisch erklärt, wie bei einer Werksbesichtigung.
Meistens ist mir im großen Bild nicht klar, wo die Begriffe einzuordnen sind, und als ich zum ersten Mal von Pretraining gehört habe, dachte ich, das sei ein Datenverarbeitungsschritt vor dem Training, dabei war es in Wirklichkeit wieder eine andere Form des Trainings.
In diesem Bereich ist das Signal-Rausch-Verhältnis sehr niedrig, und selbst die Dokumentation von Branchenführern wie Langchain ist teils schon veraltet oder widersprüchlich.
Beim Blockchain-Hype war es ähnlich, das scheint also ein typisches Merkmal solcher Hype-Züge zu sein.
Gerade bei RAG sind die jüngsten Fortschritte so schnell, dass es wohl auf absehbare Zeit schwer sein wird, ein Nachschlagewerk aktuell zu halten, weshalb man kaum weiß, wo man anfangen soll.
Trotzdem ist die Dokumentation von höherliegenden Tools wie LlamaIndex als Einstieg ganz brauchbar, weil sie weniger die Konzepte selbst in der Tiefe erklärt, sondern eher zeigt, wo sie ins Gesamtbild passen.
YouTube ist wie immer voller Nichtfachleute, die mit dem neuesten Trend Klicks abgreifen wollen, daher halte ich es nicht für einen guten Startpunkt.
Klar, das ist irgendwo immer so, aber statt das notdürftig flicken zu wollen, ist es besser anzunehmen, dass in naher Zukunft etwas deutlich Besseres als GPT-4 kommen wird, und darauf aufbauend ein differenziertes Produkt zu entwerfen.
Für Leute, die Speculative Decoding kennen: Das hier ist im Grunde selbstspekulatives Decoding.
Die vorhergesagte Label-Sequenz wird weiterhin autoregressiv wieder ins Netzwerk eingespeist, und nur bis zu dem Punkt beibehalten, an dem sie übereinstimmt.
Dadurch wird die Qualität nicht schlechter, sondern es wird nur schneller; hier bis zu 3x, was bei Speculative Decoding im normalen Rahmen liegt.
Durch Multi-Task-Learning könnte es sogar noch besser werden. Die Idee, Zielwerte mehrere Schritte in die Zukunft als Auxiliary Loss vorherzusagen, ist schon ziemlich alt, und das ist gute Arbeit.
Wenn Speculative Decoding auch die Planungsleistung verbessern würde, ließe es sich leichter durchsetzen.
Speculative Decoding verschlechtert die Modellleistung nicht im Sinne von Genauigkeit oder Ausgabequalität.
Mathematisch ist die veränderte Verteilung, aus der gesampelt wird, identisch zu der bei regulärem autoregressivem Decoding; Unterschiede entstehen nur durch die Zufälligkeit selbst.
Falls mit Leistung die Geschwindigkeit gemeint war, kann Speculative Decoding die Geschwindigkeit durchaus verschlechtern, aber bei den meisten Eingaben und einer passenden Wahl des Draft-Modells sollte das nicht der Fall sein.
Berücksichtigen LLMs bei der Sequenzvorhersage nicht die Wahrscheinlichkeitsverteilung aller möglichen Token-Kombinationen bis zu einer bestimmten Ausgabelänge? Ich dachte, genau das würden sie bereits tun.
Wenn nicht, ist es erstaunlich, dass sie so gut funktionieren, wie sie es aktuell tun.
Wenn zum Beispiel bei einer 2-Bit-Sequenz die Möglichkeiten und Wahrscheinlichkeiten 00: p=0.36, 01: p=0.04, 10: p=0.30, 11: p=0.30 sind, dann ist die wahrscheinlichste 2-Bit-Sequenz 00.
Sagt man aber nur das nächste Token voraus, erhält man 0: p=0.40, 1: p=0.60, sodass das nächste Bit wie 1 aussieht, was dann zu einem nicht optimalen Startpunkt für die Vorhersage des darauffolgenden Bits führt.
Bei längeren Sequenzen würde dieser Fehler umso stärker hervortreten, je schlechter sich die gemeinsame Wahrscheinlichkeitsverteilung in Randverteilungen zerlegen lässt.
Wenn ich weiter darüber nachdenke, scheint eine einfache Studie möglich, bei der man für Text-Trainingsdaten die Cross-Entropy-Loss-Funktion so verändert, dass nur das n-te zukünftige Token betrachtet wird, und dann die Beziehung zwischen LLM-Leistung und n aufträgt.
Wenn man annimmt, dass aktuelle LLMs alle n=1 sind, wäre die Hypothese, dass sich der enorme Ressourcenanstieg, der zur Vorhersage der gemeinsamen Wahrscheinlichkeitsverteilung vom nächsten 1 bis n Tokens nötig wäre, größtenteils umgehen ließe.
Denn wenn man direkt das n-te Token vorhersagt, braucht man implizit ein besseres Datenmodell. Zumindest gilt das für von Menschen verfasste Texte, wenn auch nicht unbedingt für alle Datentypen.
LLMs sind dafür ausgelegt, Text zu samplen, der der Trainingsverteilung folgt, nicht dafür, den „wahrscheinlichsten“ nachfolgenden Text zu liefern, und genau das wollen wir in der Praxis auch nicht.
Sonst ginge die Vielfalt der Ausgaben verloren.
Im Beispiel wäre es für eine Chat-Anwendung sinnvoll, mit 40 % eine 0 und mit 60 % eine 1 zu samplen.
Für Anwendungsfälle wie Fragebeantwortung, bei denen der wahrscheinlichste Satz wichtig ist, hilft Beam Search, wie andere bereits erwähnt haben.
Man muss außerdem berücksichtigen, dass das Modell „vorausblicken“ und zukünftige Tokens vorab berechnen kann, um sie dann für die Vorhersage des aktuellen Tokens zu nutzen.
Tatsächlich gibt es Arbeiten wie [1], die sich damit beschäftigen.
Und schließlich ist die Vorhersage eines Tokens nach dem anderen nicht grundsätzlich falsch, denn Menschen sprechen genauso. Wir machen im Kopf solch ein „Vorausschauen“, bevor wir sprechen.
[1] https://arxiv.org/abs/2404.00859
Soweit ich mich erinnere, sieht man in LLM-Ausgaben seltsame Muster, etwa dass „an“ oft weniger wahrscheinlich ist als „a“, sodass Substantive, die mit einem Vokal beginnen, seltener vorkommen als erwartet.
Das heißt: Wenn man ein Sprachmodell auf eine Verteilung trainiert und mit Temperatur 1 sampelt, erhält man genau dieselbe Verteilung.
Bei niedriger Temperatur oder greedy Sampling entsteht natürlich eine andere Verteilung.
Es gibt verschiedene stärker lokal optimierende Sampling-Strategien wie Beam Search, und es gab auch viel Arbeit an globaleren Sampling-Verfahren wie Speculative Decoding.
Stimmt es, dass heutige LLMs für jedes Ausgabetoken wieder von vorne anfangen?
Wenn man fragt: „Was macht Bananen gelb?“, und die Antwort lautet „Bananas are yellow due to a pigment called bromelain.“, dann scheint es, als wären beim Ausgeben von „a“ die Konzepte pigment und bromelain im neuronalen Netz bereits bis zu einem gewissen Grad aktiviert.
Man kann es sich nun nicht mehr anders überlegen und mit einer Antwort wie „an optical illusion...“ weitermachen, also wirkt es so, als hätte das Modell bereits vorausgeplant, dass es über das Pigment Bromelain sprechen wird.
Kann ein LLM die Arbeit, die es beim Ausgeben von „a“ schon geleistet hat, für die nächste Antwort nutzen? Kann der Zustand des neuronalen Netzes für die nächste Antwort erhalten bleiben?
Anders betrachtet könnte man GPT bitten, den nächsten Satz zu vervollständigen
„Bananas are yellow due to a“ und „Bananas are yellow due to an“
Im ersten Fall könnte es mit „Bananas are yellow due to a pigment called bromelain.“ antworten, im zweiten mit „Bananas are yellow due to an organic compound called bromelain, which is a yellow pigment.“
In beiden Fällen kann GPT, egal ob es „a“ oder „an“ wählt, auf eine Antwort mit derselben Bedeutung hinauslaufen.
Im Extremfall könnte man sogar annehmen, dass ein LLM hinter „due to“ einfach einer dummen Heuristik folgt, nach der der nächste Token mit 55 % Wahrscheinlichkeit „a“ und mit 45 % „an“ ist.
Die Realität ist natürlich ausgefeilter, aber selbst solche Heuristiken erklären dieses Verhalten.
Wenn man dem Vortrainingsdatensatz keine Fakten über Bromelain gegeben hätte, könnte das LLM tatsächlich etwas wie „an optical illusion“ automatisch vervollständigen.
GPT-3 machte solche sachlichen Fehler ziemlich oft, soweit ich mich erinnere, hatte aber die Grammatikregeln für „a“ und „an“ erkannt.
Wie gesagt glaube ich nicht, dass Konzepte dafür tatsächlich im Voraus aktiviert sein müssen, aber in einem impliziten oder emergenten Sinn ist so eine Voraktivierung durchaus möglich.
Bis zu einem gewissen Grad ist Attention der Mechanismus, durch den Berechnungen früherer Tokens später nützlich werden
Man kann den KV-Cache als Darstellung des bisherigen Textes und der Gedanken des Modells dazu sehen.
Da Sprachmodelle über die gesamte Sequenz bis zum Ende trainiert werden, halte ich es für wahrscheinlich, dass so etwas passiert.
Multi-Token-Prediction fördert dieses Verhalten explizit, aber nur innerhalb des definierten kleinen n-Token-Fensters.
Gleichzeitig gibt es viele neue Architekturen wie Early Exit, Depth Mixing und SSM, die versuchen, die Rechennutzung von Transformer-Sprachmodellen zu verbessern.
LLM-Ausgaben werden gewöhnlich per Zufall aus den wahrscheinlichsten nächsten Tokens/Wörtern gesampelt, aber das Modell selbst weiß nicht, welches Wort der Sampler wählen wird
Vermutlich gibt es eine Art konzeptuellen Plan dafür, was auf „a“ oder andere Kandidaten folgen könnte, aber solche Vorhersagen auf hohem Niveau werden neu von Grund auf überdacht, sobald „a“ erzeugt wurde.
Das Modell kann also nicht nur nach jedem erzeugten Wort seine Meinung ändern, es muss das sogar.
Deshalb ist so ein „Plan“ sehr flüchtig, und das Modell ähnelt weniger einer Person, die lange über Antwort und Formulierung nachdenkt, sondern eher einem improvisierenden Freestyle-Rapper.
Dieser Artikel ist interessant: https://clementneo.com/posts/2023/02/11/we-found-an-neuron
Die Ausgaben der meisten LLMs sind probabilistisch
Das eigentliche LLM nimmt Tokens als Eingabe und gibt eine nach Rang geordnete Menge möglicher nächster Tokens sowie eine „Konfidenz“ aus.
Danach folgt normalerweise ein Filtering- und Search-Schritt, bei dem diese Rang-Token wieder in das LLM eingespeist werden, um weitere Rang-Token zu erhalten und einen kurzen Wahrscheinlichkeitsbaum zu bilden.
Gibt man zum Beispiel die Top-N-Tokens erneut ein, erzeugt jedes davon wiederum eine neue Menge von Top-N-Tokens.
Anschließend betrachtet man den Baum und führt eine grundlegende Filterung durch, etwa indem man den Zweig mit der höchsten aufsummierten Konfidenz, den mit den wenigsten Wiederholungstokens oder den mit den wenigsten mit den Eingabetokens übereinstimmenden Tokens auswählt; meist kombiniert man solche Kriterien und ergänzt sie sogar um eine zufällige Auswahl, gewichtet nach der aufsummierten Konfidenz.
Deshalb kann ein LLM mit vollständig festen Gewichten bei derselben Eingabe über mehrere Durchläufe unterschiedliche Ausgaben erzeugen.
Um also die konkrete Frage zu beantworten: Das Modell kann seine „Meinung ändern“. Jeder erzeugte Token gibt dem probabilistischen Output-Filter die Möglichkeit, unter den möglichen Ausgabepfaden einen neuen Pfad zu wählen.
Das ist vielleicht eine sehr naive Frage, aber wenn man annehmen kann, dass sich ein Vektor erzeugen lässt, der die Bedeutung eines ganzen Satzes kodiert, warum kann man ein LLM dann nicht darauf trainieren, statt eines einzelnen Wortes diesen Satzvektor vorherzusagen?
Einen Autoencoder für Sprache zu trainieren, ist tatsächlich ziemlich einfach, weil die in Text enthaltene Informationsmenge im Vergleich zu Bildern/Videos klein ist.
Der schwierige Teil ist, das Modell dazu zu bringen, sich auf den Bedeutungsanteil zu konzentrieren, wenn das gesamte Signal aus exakten Übereinstimmungen im Tokenraum kommt.
Daher stammt auch Yann LeCuns Idee der Joint-Embedding-Predictive-Architektur.
Außerdem gibt es bei Hilfsaufgaben immer einen Trade-off: Sie liefern mehr Signal, verschieben aber den Fokus.
In unserem Fall haben wir Leistungseinbußen gesehen, wenn die Zahl der vorhergesagten Token zu groß wurde.
Daher muss ein latenter Vorhersageansatz erst noch klären, was tatsächlich nützlich ist.
Das Problem ist, dass man, sobald man einen Vektor hat, der die Antwort repräsentiert, noch so etwas wie ein weiteres Modell braucht, das diese Antwort wieder in eine Wortdarstellung zurückübersetzt.
Das könnte so etwas wie ein Diffusionsmodell für Text sein.
Außerdem ist die Funktion, die dieses Diffusionsmodell approximieren müsste, keine injektive Funktion, bestenfalls eine surjektive, und im schlechtesten Fall nicht einmal im mathematischen Sinn eine Funktion.
Denn zu einem einzelnen Embedding kann es viele mögliche Textdarstellungen geben, und die meisten davon sind möglicherweise weder grammatikalisch noch semantisch gültig.
Schließlich ist ein Embedding eine verlustbehaftete Darstellung irgendwelcher Daten, daher würde die Umkehrfunktion viele Nuancen und Kontext verlieren.
Ein LLM umgeht dieses Problem, indem es das nächste Token, inzwischen eher die nächsten n Token, so vorhersagt, dass es mit der Anfrage, den vorherigen n Token und sich selbst konsistent bleibt; die Funktion, die es dabei approximiert, sollte im Großen und Ganzen eher nahe an einer Surjektion liegen.
Im Moment arbeitet AI grob gesagt mit Wörtern, kann also nur bekannte Wörter verwenden, aber daraus neue Sätze zusammensetzen.
Wenn AI auf Satzebene arbeitet, würde sie dann nicht nur bereits gesehene Sätze wiederkäuen? Dann könnte sie vielleicht neue Absätze zusammensetzen, aber keine neuen Sätze bilden.
Im Englischen bin ich nicht sicher, ob der Satz überhaupt eine nützliche Abstraktion für AI ist. Für Menschen ist er gerade eben so brauchbar.
Wenn man sich normale Chats, E-Mails oder YouTube-Kommentare ansieht, sind das sehr oft gar keine echten Sätze oder sogar völlig ohne Zeichensetzung.
Ich glaube nicht, dass Sätze einer Bedeutungseinheit entsprechen.
Ein Satz kann je nach Autor aus zwei Wörtern bestehen oder aus der halben Seite eines englischen Papers, kann sechs verschiedene Ideen umfassen oder nur eine einzige.
Wo ein Satz endet, wird meist stärker vom Stil des Schreibenden bestimmt als von der Bedeutung.
Wenn man einen Satz in Token zerlegt, bekommt jedes Token eine Vektorrepräsentation.
Wenn man auf Satzebene geht, würde das Wörterbuch aller Token unendlich werden.
Vielleicht könnte man das mit einem schnelleren Modell machen, aber ich vermute, die Ausgabequalität würde darunter leiden.
Ich habe das Paper noch nicht extrem gründlich gelesen, aber ich habe einen kleinen redaktionellen Kommentar.
Anhang L.2 fand ich zufriedenstellend, aber die komprimierte Argumentation in 5.2 wirkt auf mich etwas wacklig.
Insbesondere war mir nicht klar, was mit dem „Wegwerfen“ von H(Y | X) im Ausdruck H(X) + H(Y) = H(X | Y) + 2I(X ; Y) + H(Y | X) gemeint ist.
Wenn man ein drittes Token Z vorhersagt, müsste H(Y | X) doch im impliziten Kontext C enthalten sein und wäre damit nicht einfach frei wegwerfbar, oder?
Auch im Anhang scheint mir dieses Argument nicht wirklich klarer zu werden.
Allerdings war ich nicht so verwirrt, dass ich den Kern der Behauptung anzweifeln würde; es ist eher eine Frage der Darstellung.
Welche Teile des 2-Token-Ziels H(X) + H(Y) sind also Hilfsinformation, die beim Lernen hilft, und welche Teile sind Verschwendung?
H(X | Y) und I(X; Y) sind für die Next-Token-Generierung nützlich, aber H(Y | X) ist per Definition eine Informationsmenge, die für das nächste Token X irrelevant ist.
Deshalb kann man sagen: „Multi-Token-Vorhersage tauscht die nützliche Information I(X; Y) aus H(Y) gegen verschwendete Berechnung für H(Y | X) ein.“
Man sollte aber beachten, dass H(Y | X) die Next-Token-Entropie für die Vorhersage von Y aus dem Präfix (C, X) ist.
Wenn der Attention-Mechanismus die für die Vorhersage von Y|X bereits ausgeführte Berechnung in den nächsten Schritt übertragen kann, dann war diese Berechnung vielleicht gar keine Verschwendung, sondern Vorabberechnung.
Ich habe einmal gelesen, dass LLMs buchstäblich nur ein eindimensionales Fenster zur Welt haben.
Alles ist nur eine Tokensequenz.
Vielleicht erweitern Dinge wie diese Mehrfachvorhersage dieses Sichtfeld auf so etwas wie 1,1 Dimensionen.
Jedenfalls gibt es ein echtes Argument dafür, dieses Fenster irgendwie auf zwei oder mehr Dimensionen zu erweitern.
Wenn man zum Beispiel Ressourcen auf FAIR-Niveau hätte und ein wirklich gutes Java-Coding-Modell trainieren wollte, dann wäre es sinnvoll, es nicht Token, sondern einen AST vorhersagen zu lassen.
Um Kommentare, Bezeichnernamen usw. vorherzusagen, bräuchte man wahrscheinlich immer noch eine Form der Kopplung mit einem normalen LLM, aber das eigentliche Programm würde man nicht als Tokenstrom modellieren.
Stattdessen könnte man Dinge wie „if-Block hinzufügen“ oder „Methodenaufruf-Block mit 4 Parametern hinzufügen“ vorhersagen lassen.
Außerdem könnte man das Modell darauf trainieren, bestimmte Positionen im Kontextfenster für Informationen wie die Typ-Member am aktuellen Cursor zu reservieren, und die Inferenzschleife mit IDE/LSP-artiger statischer Analyse integrieren.
So könnte das Modell mehr Informationen sehen, als tatsächlich im Text enthalten sind.
Dass man solche Modelle derzeit kaum sieht, liegt meiner Meinung nach daran, dass solche Forschung teuer ist und die Leute im AI-Bereich alle Python-zentriert sind, während Python von den Vorteilen einer IDE nicht besonders stark profitiert.
Das Wort head wird im Machine Learning nicht ganz einheitlich verwendet, was verwirrend sein kann.
In diesem Paper gibt es sowohl das Konzept von Multihead-Attention als auch von mehreren Output-Heads.
Multihead-Attention bedeutet in der Transformer-Architektur, sich auf verschiedene Bereiche der Eingabe zu konzentrieren, und die biologische Metapher entspricht hier eher dem Kopf als zentraler Verarbeitungseinheit.
Ein Output-Head bezeichnet die letzte Schicht eines neuronalen Netzes; man kann mehrere davon haben, die auf Basis derselben vorherigen Schichten unterschiedliche Ausgaben erzeugen.
Auch das ist nur eine lose biologische Metapher, aber eher der Kopf als Körperende als der Kopf als CPU.
In keinem der beiden Fälle ist die Metapher der Lese-/Schreibkopf eines Datenbands gemeint.
Es wurde immer wieder beobachtet, dass LLMs zu einem erheblichen Teil dadurch zu „denken“ scheinen, dass sie ihre eigene Ausgabe erneut als Eingabe verwenden; deshalb erhöht es die Qualität des Schlussfolgerns, wenn man das Modell zum lauten Denken zwingt.
Anders als wenn man einfach direkt auf eine Frage antworten lässt, veranlasst Chain-of-Thought-Reasoning das Modell dazu, noch einmal zu formulieren, was genau verlangt wird, eine übergeordnete Strategie auszudrücken, welche Informationen für die Antwort nötig sein könnten, das bekannte Wissen auszusprechen und zu erklären, wie diese Informationen die anfängliche Schlussfolgerung beeinflussen.
Daher besteht die Sorge, dass ein Verfahren, bei dem zu jedem Zeitpunkt mehrere nächste Tokens vorhergesagt werden, im Kern den gegenteiligen Effekt haben könnte.
Chain-of-Thought-Prompting scheint zu zeigen, dass ein Modell mit n + m Tokens Eingabe „klüger“ ist als mit nur n Tokens.
Deshalb könnte es schlechtere Ergebnisse liefern, bei gegebenem n direkt die nächsten 5 Tokens zu erhalten, als bei n zunächst den nächsten 1 Token zu bekommen und dann bei n+1 wieder den nächsten 1 Token usw.
Dass diese spezielle Methode mehr Tokens verlangt, ist dann nicht wichtig.
Wenn es kein günstiges Modell gibt, wird ein LLM ohnehin ständig von der Tendenz beeinflusst sein, statt der eigentlichen Antwort nur eine Schätzung zu geben.
Außerdem erzeugen die meisten Strategien für Speculative Decoding dieselbe Ausgabe wie eine sequenzielle Ausführung des Modells.
Wenn die Vorhersage falsch ist, werden diese Tokens verworfen und nur der Geschwindigkeitsvorteil geht verloren.
Wenn Token/Wort +1 und +2 unabhängig voneinander vorhergesagt werden, wie kann das Ergebnis grammatikalisch überhaupt noch sinnvoll sein? Es wirkt, als müsste das oft kaputtgehen.
Im Abstract ist das nicht klar, aber in der Bildunterschrift zu Abbildung 1 steht: „Während der Inferenz wird nur der Output-Head für das nächste Token verwendet. Optional können die anderen drei Heads genutzt werden, um die Inferenzzeit zu verkürzen.“
Man könnte zwar auch alle Top-Vorhersagen verwenden und damit alle drei Heads einsetzen, aber dann ließen sich gängige Sampling-Strategien nicht mehr verwenden.
Ich weiß nicht, wie viele Leute außerhalb von Benchmarks ein LLM tatsächlich mit Temperatur 0 laufen lassen; wenn man statt Temperatur etwas Besseres einsetzt, könnte es wiederum anders aussehen.