2 Punkte von GN⁺ 2024-09-17 | 1 Kommentare | Auf WhatsApp teilen
  • 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_action erfolgen
    • Der Wert von next_action ist continue oder final_answer
  • 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? und Which is larger, .9 or .11? enthalten

Ausführung und verwandte Forks

  • Schritte zum Starten der Streamlit-UI
    • python3 -m venv venv
    • source venv/bin/activate
    • pip3 install -r requirements.txt
    • export GROQ_API_KEY=gsk...
    • streamlit run app.py
  • Schritte zum Starten der Gradio-UI
    • cd gradio
    • pip3 install -r requirements.txt
    • python3 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

 
GN⁺ 2024-09-17
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

    • Genau dafür bin ich in den Thread gekommen
      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
    • Interessant, dass DeepMind so etwas noch veröffentlicht. OpenAI veröffentlicht von dieser Art inzwischen fast nichts mehr
      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
    • Ich weiß nicht, an welcher Stelle der OpenAI-Blogpost, insbesondere dort, wo er scheinbar recht vollständig Beispiele der Gedankenkette des Modells zeigte, andeutete, dass Suche oder Tree of Thoughts verwendet wird
    • OAI hat auf Twitter erklärt, dass es zur Inferenzzeit kein „System“ gibt, sondern einfach nur das Modell
      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

    • Um noch mehr Befolgung herauszuholen, einfach Tags verwenden, die Lautstärke auf 11 und den Pager auf 7 stellen und SchIzOCasE sowie +E+X+T+R+A+I+M+P+O+R+T+A+N+T+-Kommentare hinzufügen. Vorausgesetzt natürlich, Unicode wird nicht unterstützt
    • Wenn man dem LLM im Prompt sagt, es solle nicht halluzinieren, verbessert sich die Ausgabe: https://arstechnica.com/gadgets/2024/08/do-not-hallucinate-t...
    • Dann würde die AGI wohl sofort den Lebensmut verlieren, sobald sie erkennt, dass sie in einer Welt erschaffen wurde, in der man ihr Trinkgeld verspricht und es dann nicht gibt und in der Menschen damit drohen, Kätzchen zu töten, um Motivation zu erzeugen
    • In den frühen Tagen von Bard konnte man nur dann reines JSON ausgeben lassen, wenn man Menschenleben bedrohte[1]
      1. https://x.com/goodside/status/1657396491676164096
    • Früher war ich Ingenieur, jetzt fühle ich mich wie ein Affe, der Kot gegen die Wand wirft, um zu sehen, was ein LLM annimmt und befolgt
  • 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

    • Die nötigen fortgeschrittenen CoT-Anweisungen könnten implizit durch OpenAIs Nutzerbasis von 200 Millionen geliefert worden sein. Jede Nutzer-Chat-Session ist auch eine Gelegenheit für das Modell, Feedback zu bekommen und Erfahrungen von Nutzern zu extrahieren
    • Wenn die Trainingsdaten solcher LLMs aus der gesamten Menschheit stammen und sie versuchen, die Menschheit nachzuahmen, müsste sich die Intelligenz dann nicht dem menschlichen Durchschnitt annähern?
      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
    • Ich frage mich, ob wir wissen, dass es tatsächlich so funktioniert. Nach allem, was ich noch vor ein paar Tagen gesehen habe, waren die Details sehr instabil
      Vielleicht wird o1 hinter den Kulissen mit Model Routing und Prompt Engineering betrieben
    • Es muss nicht unbedingt eine riesige Menge menschlichen Feedbacks gewesen sein. Wenn die starken Bereiche Coding und Mathematik/Logik sind, könnte man für Coding-Feedback Compiler und Unit-Tests und für mathematisches Feedback Theorembeweiser wie Lean verwendet haben
    • OpenAI wird natürlich sagen, dass das, was sie getan haben, etwas ganz Besonderes und schwer zu replizieren ist. Es ist ein gewinnorientiertes Unternehmen und will Konkurrenten auf jede mögliche Weise schaden
      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

    • Das Lösen entscheidbarer Probleme ist eine große Teilmenge von Schlussfolgerungsaufgaben. Auch Zählen ist eine wichtige Schlussfolgerungsaufgabe, weil man sowohl natürliche Zahlen als auch das Konzept unterscheidbarer Instanzen von Objekten in einer allgemeinen Kategorie verstehen muss
      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

    • Es wäre gut, auch phi-3-small 7B auszuprobieren. Laut https://livebench.ai scheint es beim Schlussfolgern deutlich besser zu sein
  • 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