- Als mehrere LLMs unter gleichen Bedingungen im Schach eingesetzt wurden, brachen die meisten nach der Eröffnung ein, aber gpt-3.5-turbo-instruct zeigte gegen Stockfish auf der niedrigsten Schwierigkeitsstufe eine sehr starke Leistung
- Im Experiment spielte das LLM mit Weiß gegen Stockfish auf der niedrigsten Schwierigkeitsstufe; anschließend wurde die Brettstellung nach jedem Zug anhand des Centipawn-Werts einer Schach-Engine bewertet
llama-3.2-3b,llama-3.1-70b,Qwen-2.5-72b,command-r-v01,gemma-2-27b,gpt-3.5-turbo,gpt-4o-mini,gpt-4o,o1-minikamen alle nicht annähernd angpt-3.5-turbo-instructheran- Beim Vergleich ähnlicher Modellfamilien schien Instruction-/Chat-Tuning die Schachleistung zu senken, wobei das Ausmaß der Verschlechterung je nach Modell klein oder sehr groß ausfiel
- Bei offenen Modellen zeigte sich ein Tokenizer-Problem, bei dem ein einzelnes Leerzeichen am Ende des Prompts die Leistung stark veränderte; Schachnotation als Eingabe reagiert empfindlich auf interne Repräsentationen und Generierungsbeschränkungen von LLMs
Versuchsaufbau und Bewertungsmethode
- Das LLM erhielt einen Prompt, der es aufforderte, den nächsten Zug wie ein Schachgroßmeister auszuwählen; die Eingabe war eine teilweise fortgeschrittene Schachpartie
- Verwendet wurde Standard Algebraic Notation wie
e4,Rdf8,R1a3 - Die Anweisung enthielt, keine Zugnummern zu schreiben und die Wahl nicht zu begründen
- Verwendet wurde Standard Algebraic Notation wie
- In allen Partien spielte das LLM mit Weiß, der Gegner war Stockfish, eine Standard-Schach-KI, auf der niedrigsten Schwierigkeitsstufe
- Nach jedem Zug wurde die Brettstellung mit einer Schach-Engine bewertet, um die Modellleistung zu vergleichen
- Die Einheit war Centipawn; ein Bauer zählt als 100 Punkte, und auch der Stellungswert wird berücksichtigt
- Bei beendeten Partien wurde ein Sieg des LLM mit +1500, ein Remis mit 0 und eine Niederlage mit -1500 gewertet
Modelle, die nach der Eröffnung schnell schwächer werden
llama-3.2-3bist ein Base Model mit 3 Milliarden Parametern und verlor alle 50 Partien- Es konnte einige Züge einer Standarderöffnung spielen, begann aber bald, Figuren zu verlieren
- Obwohl der Gegner auf der niedrigsten Stockfish-Einstellung lief, verlor es alle Partien
llama-3.1-70bmit 70 Milliarden Parametern war nur etwas besser, lieferte aber weiterhin sehr schlechte Ergebnissellama-3.1-70b-instruct,Qwen-2.5-72b,command-r-v01,gemma-2-27bwurden auf die gleiche Weise getestet, zeigten aber keine starke Schachleistung- Auch
llama-3.1-405b, mit dem einige Partien gespielt wurden, ist größer alsgpt-3.5-turbo, erzielte aber weiterhin schlechte Ergebnisse
Das außergewöhnlich starke gpt-3.5-turbo-instruct
gpt-3.5-turbo-instructist ein geschlossenes Modell von OpenAI, daher sind Details unklar, zeigte aber in 10 Tests eine sehr gute Leistung- Es war so stark, dass es alle Partien gewann, selbst wenn die Stockfish-Schwierigkeit um mehrere Stufen erhöht wurde
- Das ähnlich benannte
gpt-3.5-turboist stärker auf Dialoge getunt, und seine Schachleistung unterschied sich deutlich vongpt-3.5-turbo-instruct gpt-4o-mini,gpt-4o,o1-minigehörten ebenfalls zu den getesteten Modellen;gpt-4overlor etwas langsamer, verlor aber jede Partie- Der Verlauf von LLM-Schachexperimenten im Internet war so, dass im September/Oktober 2023 das Interesse wegen eines angeblich gehobenen Amateur-Niveaus wuchs, während neuere Modelle wieder das Muster zeigten, nach der Eröffnung einzubrechen
Instruction-/Chat-Tuning und Schachleistung
- Vergleicht man innerhalb ähnlicher Modellfamilien eher base-nahe Modelle mit zusätzlich getunten Modellen, zeigte sich, dass zusätzliches Instruction-Tuning die Schachleistung durchweg verschlechterte
- Das Ausmaß der Verschlechterung war nicht konstant
- In zwei Fällen war der Unterschied klein
- In einem Fall war der Unterschied sehr groß
- Der Name
gpt-3.5-turbo-instructmuss anders interpretiert werden als nach üblichen Namenskonventionen- Hier wird es als Modell behandelt, das näher am Base Model liegt als
gpt-3.5-turbo - Das ist das Gegenteil dessen, was
instructoderitnormalerweise bedeutet, nämlich stärkeres Tuning für Dialog- und Instruktionsbefolgung
- Hier wird es als Modell behandelt, das näher am Base Model liegt als
Mögliche Ursachen
-
Große Base Models können Schach spielen, aber Instruction-Tuning könnte es beschädigen
- Das passt zu den experimentellen Ergebnissen, allerdings ist das größere
llama-3.1-405bein Gegenbeispiel, da es ebenfalls schlecht abschnitt
- Das passt zu den experimentellen Ergebnissen, allerdings ist das größere
-
gpt-3.5-turbo-instructkönnte mit mehr Schachpartien trainiert worden sein- Es ist wahrscheinlich, dass alle Modelle mit vielen Schachpartien trainiert wurden, aber die genaue Menge ist schwer zu kennen
-
Unterschiede in der Transformer-Architektur könnten eine Rolle gespielt haben
- Es lässt sich kaum ausschließen, dass Modelle der Llama-Familie bei Schach besonders schwach sind
-
Es könnte Konkurrenz zwischen unterschiedlichen Datentypen gegeben haben
- Ein Transformer, der nur mit Schachpartien trainiert wurde, kann sehr gut Schach spielen
- Wenn
gpt-3.5-turbo-instructmit Daten trainiert wurde, in denen Schachpartien einen höheren Anteil hatten, könnte ein größerer Anteil der Parameter für Schach genutzt worden sein - Wenn diese Hypothese stimmt, sollten ausreichend große Modelle auch bei niedrigem Anteil an Schachpartien gut Schach spielen können, sofern sie genügend Schachdaten gelernt haben
Implementierungsdetails und Einschränkungen
- Offene Modelle wurden direkt ausgeführt; Modelle, die nicht von OpenAI stammen, wurden als offene Modelle klassifiziert
- Für die Ausführung der offenen Modelle wurde
Q5_K_M-Quantisierung verwendet - Bei offenen Modellen wurden die aktuell möglichen legalen Züge direkt erzeugt, und die Ausgabe wurde mit llama.cpp grammars so beschränkt, dass immer ein legaler Zug entstand
- OpenAI-Modelle unterstützen keine vollständige Grammar, daher wurde bis zu 10-mal generiert; wenn dann immer noch kein legaler Zug herauskam, wurde zufällig ein Zug gewählt
- Für die Chat-Modelle
llama-3.1-70b-instruct,gemma-2-27b-it,gpt-3.5-turbo,gpt-4o-mini,gpt-4owurde ein separater System Prompt verwendet o1-minikann den System Prompt nicht ändern und wurde daher unverändert ausgeführt- Offene Modelle liefen mit temperature 0.7, OpenAI-Modelle mit den Standardwerten
Prompt-Leerzeichen und seltsame Tokenizer-Phänomene
- Bei offenen Modellen schnitt ein Prompt, der wie
1. e4 e5 2.mit einem Leerzeichen endete, deutlich schlechter ab als ein Prompt, der wie1 e4 e5 2.ohne Leerzeichen endete - Die Ursache wird als mit dem Tokenizer zusammenhängend eingeschätzt
- Der Llama-Tokenizer erzeugt nach
1.den Stringeals ein einzelnes Token - Das ist nicht dasselbe, wie nach einem Leerzeichen-Token ein
ezu erzeugen - Wenn man am Ende der Eingabe ein Leerzeichen einfügt und dann das nächste Token generieren lässt, gerät das Modell in eine verwirrende Situation
- Der Llama-Tokenizer erzeugt nach
- Die geeignete Behandlung wäre Token Healing: das letzte Token der Eingabe zu löschen und constrained generation für alle Strings zu verwenden, die mit dem gelöschten String beginnen
- In der Implementierung wurde statt Token Healing das Leerzeichen entfernt und die Grammar so geändert, dass sie ein Leerzeichen erzeugen kann oder auch nicht; anschließend erzeugt sie den aktuellen legalen Zug plus optionales Leerzeichen
- Im Update wurde ergänzt, dass die Ursache dieses Phänomens tatsächlich ermittelt wurde und dass bislang noch niemand die korrekte Erklärung erraten habe
Möglichkeit einer OpenAI-Optimierung
- Eine Annahme lautet, dass OpenAI das Interesse an Schachleistung gesehen und möglicherweise Trainingsdaten, Fine-Tuning oder Algorithmen optimiert hat, um die Schachleistung von
gpt-3.5-turbo-instructzu erhöhen - Nach derselben Annahme könnte diese Optimierung wegen Trade-offs wie Kosten oder Verschlechterungen anderer Fähigkeiten in späteren Modellen nicht beibehalten worden sein
- Das ist keine klare Evidenz, sondern eine Vermutung auf dem Niveau von „OpenAI hat es absichtlich getan“, und es ist auch nicht sicher, ob das Timing passt
1 Kommentare
Hacker-News-Kommentare
Der Artikel scheint eine naheliegende Möglichkeit zu übersehen: OpenAI könnte Schach als Benchmark betrachtet haben, den man „gewinnen muss“, und deshalb nur in
gpt-3.5-turbo-instructSchach speziell behandelt haben, während man diese Sonderbehandlung in späteren Modellen nicht eingebaut hat, weil sie kein anhaltendes Medieninteresse erzeugt hätteIm Test gibt es wichtige Details: Bei den geschlossenen OpenAI-Modellen wurde bis zu 10-mal neu generiert, wenn kein legaler Zug herauskam, und falls es dann immer noch nicht klappte, wurde zufällig gewählt; offene Modelle wurden lokal mit
Q5_K_M-Quantisierung ausgeführt; allein das Vorhandensein oder Fehlen eines Leerzeichens am Ende des Prompts veränderte die Leistung der offenen Modelle stark; und die offenen Modelle liefen mit Temperatur 0.7, während für die OpenAI-Modelle die Standardwerte verwendet wurdenSeltsames Verhalten des Tokenizers, Temperatur, Quantisierung, Zufallszüge und Schach-Prompts sind hier alle vermischt, daher weiß ich nicht, wie man die Ergebnisse interpretieren soll. Trotzdem ist der Artikel interessant
Vielleicht muss man, wenn man wirklich intelligente Modelle will, mit der Tokenisierung selbst aufhören. Man begrenzt von Anfang an durch die Struktur des Informationsflusses im Input, was das Modell sieht und wie es die Welt wahrnimmt
Mir ist klar, dass rohe Bits oder Bytes langsam wären, aber die Hypothese, dass große Probleme durch die Tokenisierung verursacht werden, scheint relativ billig und einfach widerlegbar. Es überrascht mich, dass man nicht mehr Forschung zu radikal anderen Formen der Tokenisierung sieht
Zum Beispiel wird oft gesagt, LLMs könnten wegen der Tokenisierung nicht einmal grundlegend zählen, aber dieselben LLMs zählen mit einem Denkprozess-Prompt gut. Dann kann die Tokenisierung das nicht erklären. Das Problem ist, dass man ihnen sagen muss, dass sie es Schritt für Schritt lösen sollen; ohne diese Hilfe raten sie einfach eher
Wenn man Bilder tokenisieren kann und Audio ebenfalls, frage ich mich immer wieder, ob ein Modell nicht selbst einen Satz von semantischen Repräsentationstoken wählen und diese Tokens dann wieder in Text dekodieren könnte. Der Nachteil wäre, dass die Rückübersetzung der kodierten Tokens in Text verlustbehaftet wäre, sodass man den gesehenen Text nicht mehr 1:1 zitieren könnte
Soweit ich es verstanden habe, hat OpenAI bei Bildern im
gpt-4o-Bericht genau so etwas gemacht. Siehe „Explorations of capabilities“: https://openai.com/index/hello-gpt-4o/Karpathy stimmt diesem Gedanken ebenfalls zu. In dem Video baut er zwei Stunden lang einen Tokenizer neu und hasst dabei Tokenizer
Es wäre sinnvoll, mit verschiedenen Varianten von Prompt und Brettstellung zu experimentieren. Zur Referenz: Die dem Modell gegebene Brettstellung ist dieses Bild: https://i.imgur.com/qRxalgH.png
In diesem Experiment könnte mehr als eine Sache seltsam sein. Zum Beispiel könnten Anweisungen bei nicht instruction-getunten Modellvarianten sogar kontraproduktiv sein. Noch wichtiger: Wenn nur ein abgeschnittenes PGN gegeben wird, ist fraglich, ob diese Stellung so wirkt, als spiele Weiß auf Großmeisterniveau. Selbst wenn das Modell Schach gut versteht, wird es wahrscheinlich versuchen, den im aktuellen Zustand plausibelsten Zug vorherzusagen; wenn es Weiß für einen schwachen Spieler hält, könnte es eher einen schlechten Zug für wahrscheinlicher halten
Trotzdem könnte es das Modell etwas verwirrt haben, Stockfish auf die niedrigste Stufe zu stellen und es zugleich als „sehr starken Gegner“ auftreten zu lassen. Wenn ich die Diagramme richtig lese, wirken die ersten paar Züge des Modells noch okay, und die Probleme beginnen erst danach. Es lohnt sich, Wiederholungsexperimente mit veränderter Prompt-Guidance, anderer Stockfish-Stärke, anderer Ausgangsstellung oder anderen Namen für die virtuellen Spieler zu machen
Wenn es nur um einen einzelnen Zug gegangen wäre, was würde es dann überhaupt bedeuten, zu „gewinnen“ oder zu „verlieren“?
Stimme zu. Man könnte ein paar Prompt-Varianten ausprobieren: Was wäre, wenn man dem Modell den Denkprozess erlauben würde? In diesem Experiment war das ausdrücklich verboten. Und wenn man außerdem bei jedem Zug die Brettposition im Prompt beschreiben würde, müsste das Modell sie nicht intern berechnen oder schätzen
Ich frage mich, ob das Modell auch illegale Züge versucht. Der Autor des Originals erwähnt das nicht, aber die Schachregeln sind ziemlich willkürlich, und LLMs sind dafür berüchtigt, bei schwierigen Problemen lieber plausibel zu fabulieren, statt zuzugeben, dass sie keine Antwort haben, also scheint es fast unvermeidlich, dass das mindestens einmal passiert
Ich verstehe nicht, warum gebildete Leute erwarten, dass LLMs Schach auf einem plausiblen Niveau spielen können
LLMs kennen die Qualität ihrer Daten nicht. Ein Prompt wie „verhalte dich wie x“ ist kein Ersatz für das tatsächliche Schlussfolgern und die deterministische Berechnung, die für Schach offensichtlich nötig sind
turbo-instructtatsächlich gut spielt? Es gibt unzählige vage Behauptungen, die auf unbegründeten anthropomorphen Intuitionen wie „tatsächliches Schlussfolgern“ beruhen. Ich halte die aktuelle Lage für einen guten Beleg dafür, dass niemand wirklich versteht, was hier passiertWenn ein mentales Modell sagt, LLMs dürften kein Schach spielen können, dann kann es starke schachspielende LLMs nicht erklären. Und umgekehrt kann ein Modell, das sagt, sie müssten gut spielen, nicht erklären, warum viele große Modelle im Schach katastrophal scheitern. Offensichtlich passiert etwas Komplexeres
„Plausibles Niveau“ ist subjektiv, aber das sollte reichen, damit ein Anfänger gewinnen kann. Das im Artikel genannte niedrigste Stockfish-Level entspricht dem Niveau eines schwachen bis mittleren Vereinsspielers. Es hängt davon ab, ob man von aktuellen öffentlichen Implementierungen spricht oder von der allgemeinen Idee eines LLM; und wenn man bessere Ergebnisse will, könnte man ihnen auch deutlich mehr Schachbücher und Analysen früherer Partien füttern
GPT-3.5-turbo-instructselbst auf fortgeschrittenem Amateur-Niveau spielen sehen. Allerdings scheinen RLHF und Destillation in neueren Modellen diese Fähigkeit kaputtzumachengpt-3.5-instructStockfish schlagen kannDass das offene Modell mit
Q5_K_M-Quantisierung lief, heißt nur, dass alle Parameter verlustbehaftet komprimiert wurden. Wahrscheinlich ist das nicht wichtig?Ich denke, Schach als Sequenz zu trainieren, schafft mehr Probleme als Vorteile. Selbst das Training mit einer Billion Partien würde nicht helfen: https://en.wikipedia.org/wiki/Shannon_number
Der Vollständigkeit halber: Moderne Schach-Engines nutzen hochwertige schachspezifische Modelle als Teil ihres Werkzeugkastens und können gegen jeden heutigen oder früheren Spieler in jeder Partie mindestens Remis halten. Macht der Gegner auch nur einen sehr kleinen Fehler, verliert er. Wenn man das Stockfish-Level auf Maximum oder wenigstens auf einen Spieler mit 1800+ Elo anhebt, bekommt man vielleicht erfolgreichere Partien, aber das wäre dann nur das Ergebnis von weniger Rauschen in den Trainingsdaten, weil starke Spieler weniger Müllzüge machen, und bedeutet nicht unbedingt besseres Spiel
Es könnte besser funktionieren, in Milliarden oder Billionen Positionen den besten Zug zu lernen und das in irgendeine KI einzuspeisen. Ähnliche Positionen haben oft dieselbe Art von bestem Zug
Ich habe ein Bündel verwandter Experimente gefunden, darunter
gpt-3.5-turbo-instruct,gpt-3.5-turboundgpt-4Das Fazit ist ebenso überraschend: gpt-3.5-turbo-instruct spielt viel besser Schach
https://blog.mathieuacher.com/GPTsChessEloRatingLegalMoves/
OpenAI hat extrem viel Erfahrung mit KI für Spiele. Soweit ich mich erinnere, war das jahrelang ihr Hauptfokus. Deshalb scheint es, als hätten sie ein Modell gezielt für Schach passend gemacht, um zu sehen, ob Schachtraining die allgemeine Intelligenz beeinflusst. Wenn Menschen Schach lernen, können sie dadurch klüger werden, genauso wie durch Mathematik oder Programmieren
LLMs schlussfolgern oder suchen nicht, sondern schreiben Text auf Basis vorherigen Textes. Deshalb kann es für uns wie Spielen aussehen, tatsächlich ist es aber eine kluge Vermutung auf Grundlage früherer Partien. Ähnlich wie Kasparov Züge notiert, ohne sich die tatsächliche Figurenstellung vorzustellen. Ein interessantes Experiment wäre zu prüfen, ob das Modell spielen kann, wenn man ihm nur die Regeln gibt; vermutlich kann es das nicht. Im Moment verfolgt es kein Ziel, sondern reproduziert aus dem Gedächtnis. So etwas wie Forward Attention gibt es noch nicht, und Beam Search ist teuer genug, dass man besser gleich auf klassische Schachalgorithmen zurückfällt
OpenAI hat außer dialogorientierten Agenten nichts dergleichen gemacht