- g1 ist ein früher Prototyp, der mit Llama-3.1 70B auf Groq und einer Prompt-Strategie eine o1-ähnliche Reasoning-Kette erzeugt, bei der ein LLM Schritt für Schritt „denkt“
- Anders als OpenAI o1 zeigt es dem Nutzer alle Reasoning-Tokens, verwendet ein Open-Source-Modell und ist weder eine vollständige Replik von o1 noch ein direkter Vergleich, sondern ein promptbasiertes Reasoning-Experiment
- In jedem Schritt entscheidet das Modell, ob es mit dem nächsten Reasoning-Schritt fortfährt oder eine endgültige Antwort ausgibt; jeder Schritt ist so entworfen, dass Titel und Inhalt als JSON zurückgegeben werden
- Der Prompt verlangt mindestens 3 Schritte, das Erkunden von Alternativen, die Prüfung möglicher eigener Fehler und die Nutzung von mindestens 3 Methoden; beim Strawberry-Problem zeigte es etwa 70 % Genauigkeit (n=10), gegenüber 0 % für Llama-3.1-70B ohne Prompt und 30 % für ChatGPT-4o
- In ersten Tests erreichte es bei einfachen Logikproblemen 60–80 % Genauigkeit, die Genauigkeit wurde jedoch noch nicht offiziell evaluiert, und auch g1 ist nicht perfekt
Das Problem, das g1 lösen will
- g1 ist ein früher Prototyp, der allein mit einer Prompt-Strategie die Reasoning-Fähigkeiten von LLMs verbessern soll
- Ziel ist es, LLMs dazu zu bringen, Logikprobleme, mit denen sie normalerweise Schwierigkeiten haben, über eine o1-ähnliche Reasoning-Kette zu lösen
- Die Unterschiede zu OpenAI o1 werden ausdrücklich genannt
- g1 zeigt dem Nutzer alle Reasoning-Tokens
- g1 verwendet ein Open-Source-Modell
- g1 ist weder eine vollständige Replik von o1 noch ein Leistungsvergleich
- OpenAI o1 arbeitet dagegen mit groß angelegtem Reinforcement Learning, um Chain-of-Thought-Reasoning zu trainieren und bei komplexen Problemen auf Doktorandenniveau Spitzenleistungen zu erzielen
Funktionsweise
- g1 basiert auf Llama3.1-70b und erzeugt eine Reasoning-Kette, die einer dynamischen Chain of Thought nahekommt
- Jeder Reasoning-Schritt ist für den Nutzer sichtbar und trägt einen Titel
- In jedem Schritt wählt das Modell eine von zwei Möglichkeiten
- Mit dem nächsten Reasoning-Schritt fortfahren
- Eine endgültige Antwort geben
- Der System-Prompt enthält Anweisungen, die das Modell zu besserem Reasoning anleiten sollen
- Alternative Antworten erkunden
- Die Antwort mit mindestens 3 Methoden herleiten
- Frühere Lösungsentwürfe hinterfragen
- Die Grenzen von LLMs berücksichtigen
Prompt-Strategie
- Der Prompt weist dem Modell die Rolle eines Experten-AI-Assistenten zu, der schrittweises Reasoning erklärt
- Jeder Schritt muss als Antwort im JSON-Format mit den Schlüsseln
title,content,next_actionerfolgen- Der Wert von
next_actionistcontinueoderfinal_answer
- Der Wert von
- Durch in Großbuchstaben hervorgehobene Anweisungen soll die Prompt-Treue erhöht werden
- So viele Reasoning-Schritte wie möglich verwenden, aber mindestens 3 Schritte
- Erkennen, was als LLM möglich und unmöglich ist
- Alternative Antworten erkunden und berücksichtigen, wo das eigene Reasoning falsch sein könnte
- Wenn von einer Überprüfung die Rede ist, tatsächlich mit einem anderen Ansatz erneut prüfen
- Die Antwort mit mindestens 3 Methoden herleiten
- Best Practices verwenden
- Nach dem Problem als Nutzernachricht wird eine standardisierte Einleitungsformulierung als Assistant-Nachricht eingefügt, um die Generierung zu starten
Beispiele und erste Ergebnisse
- g1 behandelt einfache Logikprobleme wie das Strawberry-Problem „Wie viele R hat strawberry?“, die ohne Prompt nur schwer zu lösen sind
- Dazu werden erste Kennzahlen genannt
- g1: etwa 70 % Genauigkeit, n=10
- Llama-3.1-70B ohne Prompt: 0 % Genauigkeit
- ChatGPT-4o: 30 % Genauigkeit
- In frühen Tests löste g1 einfache Logikprobleme, mit denen LLMs üblicherweise Schwierigkeiten haben, mit 60–80 % Genauigkeit
- Die Genauigkeit wurde noch nicht offiziell evaluiert
- Als Beispielaufgaben sind
How many Rs are in strawberry?undWhich is larger, .9 or .11?enthalten
Ausführung und verwandte Forks
- Schritte zum Starten der Streamlit-UI
python3 -m venv venvsource venv/bin/activatepip3 install -r requirements.txtexport GROQ_API_KEY=gsk...streamlit run app.py
- Schritte zum Starten der Gradio-UI
cd gradiopip3 install -r requirements.txtpython3 app.py
- Verwandte Forks und Demos
- Hugging Face Spaces Demo
- Mult1: erzeugt mit mehreren AI-Anbietern eine o1-ähnliche Reasoning-Kette
- thinkR: implementiert in R eine o1-ähnliche Chain of Thought mit einem lokalen LLM
1 Kommentare
Hacker-News-Kommentare
Das ist überhaupt nicht zutreffend und ziemlich abwegig. Das ist nur das Durchlaufen einer Gedankenkette in einer Schleife
Tree of Thoughts ist ein ausgefeilterer Ansatz, siehe das Paper: https://arxiv.org/pdf/2305.10601
Es gab schon lange Hinweise darauf, dass OpenAI Baumsuche einsetzt, und die Verpflichtung von Noam Brown sowie seine frühere Arbeit deuteten ebenfalls in diese Richtung. Q wirkt eindeutig wie eine A*-artige Baumsuche. Einen Baum mit etwas wie CoT zu erzeugen und darin nach der optimalen Lösung zu suchen, ist genau das, was System-2-Denken ist
Wenn man ein Modell auffordert, Schritt für Schritt zu denken, erhält man noch lange kein o1-artiges Schlussfolgern. Das ist ein alter Trick, der schon 2020 bei GPT-3 verwendet wurde, und wenn es so einfach wäre, hätte OpenAI nicht so lange bis zum Release gebraucht
Außerdem können Teile des Prompts sogar kontraproduktiv sein. Anweisungen wie „Sei dir deiner Grenzen als LLM bewusst und dessen, was du kannst bzw. nicht kannst“ sind problematisch, weil LLMs ihre eigenen Grenzen gar nicht so gut kennen; das kann das Modell übervorsichtig machen und falsche Verweigerungen erzeugen
DeepMind fokussiert sich stärker auf Forschung und Papers, ist damit aber in einem Wettbewerbsumfeld im Nachteil, in dem OpenAI und Anthropic Forschungsergebnisse aus Papers übernehmen können, ohne der Forschungsgemeinschaft etwas zurückzugeben
Es ist möglich, dass während des Trainings auf Bäume erweitert wurde, um robusteres Schlussfolgern zu lernen, aber zur Inferenzzeit läuft es am Ende auf ein normales Transformer-Modell hinaus
Die Vorstellung ist immer noch zu lustig, dass man „alles in GROSSBUCHSTABEN schreibt, um die Wichtigkeit der Anweisung zu betonen und die Prompt-Befolgung zu erhöhen“
Ich frage mich, ob derjenige, der AGI zuerst zum Laufen bringt, einfach in GROSSBUCHSTABEN sagen wird, dass das Leben seines Haustiers von der Antwort abhängt, und damit die Zuverlässigkeit eines LLM über den kritischen Schwellenwert hebt
Die Innovation von o1 ist nicht die Gedankenkette selbst. Der Punkt ist vielmehr, dass das Modell mit umfangreichem menschlichem Feedback darauf trainiert wurde, CoT gut zu beherrschen, statt es nur zu simulieren
Mit Prompt Engineering allein wird man die Leistung von o1 nicht erreichen
Andererseits sind die Menschen, die über STEM-Themen sprechen, im Schnitt eher intelligenter, und es gibt auch viele leistungsschwache Schüler, die nach Hausaufgaben fragen. Um Outputs mit höherer Intelligenz zu erhalten, muss man möglicherweise die Mängel vieler Antworten mit niedriger Intelligenz kritisieren und ausschließen und Antworten mit hoher Intelligenz bevorzugen. Oder man trainiert stärker auf Lehrbücher und Ähnliches. Entscheidend ist auch, wie Fehler zurückgewiesen werden und ob man mit synthetischen Daten trainiert, die ohne fehlerhafte Schlussfolgerungen erzeugt wurden
Vielleicht wird o1 hinter den Kulissen mit Model Routing und Prompt Engineering betrieben
Falls es in Wirklichkeit nur Prompt Engineering und mehrfache Inferenz sind, würden sie das natürlich als Geschäftsgeheimnis behalten wollen, während Open-Source-Entwickler in die falsche Richtung geschickt werden oder weiter darüber rätseln, wie man Q-Star repliziert
Das sieht nach dem allgemeinen CoT aus, das schon seit einer Weile verwendet wird. o1 kann die Gedankenkette viel besser nutzen, weil es per Reinforcement Learning auf eine unbekannte Policy trainiert wurde
Sieht gut aus. Ich habe in optillm etwas Ähnliches gemacht: https://github.com/codelion/optillm
Das funktioniert mit jedem LLM, und man kann verschiedene Optimierungstechniken verwenden, darunter cot_reflection, Monte-Carlo-Baumsuche, plansearch und moa
Ich suche immer nach einer Definition von „Reasoning“. Wenn man eine gute Definition findet, könnte man, so meine Vermutung, ein System bauen, das „Reasoning“ löst, indem es verschwommenes LLM-artiges Denken mit klassischen Algorithmen kombiniert
Probleme, bei denen LLMs nicht gut schlussfolgern können, etwa Planung, Buchstabenzählen oder deduktives Schließen, sind für klassische Algorithmen leicht. Man braucht eine Möglichkeit, den Denkprozess in zwei Teile zu zerlegen und jeden Teil auf dem dafür geeigneten Modell auszuführen
Vor zwei Jahrhunderten gab es keine Computer, also mussten Menschen alles selbst machen. Bevor man Code hervorholt, muss man erst dieses Niveau erreichen
Ich habe es so geändert, dass es mit ollama:8b zu 100 % lokal läuft: https://github.com/punnerud/g1
Das Readme habe ich noch nicht aktualisiert
Zur Klarstellung: Das hier ist nur ein System-Prompt und kein feinabgestimmtes Modell
„Prompt: Was ist größer, .9 oder .11?“
„Ergebnis: .9 ist größer als .11“
Endlich die Semantic-Versioning-Barriere durchbrochen
Aus Spaß habe ich das Projekt geforkt, damit Llama-3.1 7B oder andere Modelle lokal mit Ollama laufen
Das strawberry-Problem löst es nicht, aber es kann immerhin erkennen, dass 0.9 größer ist
https://github.com/esoltys/o1lama