AutoThink: Verbesserte Leistung lokaler LLMs durch adaptive Inferenz
(news.ycombinator.com)- Eine Methode, die lokalen LLMs hilft, Inferenz-Token passend zur Schwierigkeit einer Anfrage anzupassen, damit sie mit denselben Ressourcen effizientere Antworten erzeugen
- Statt jeder Anfrage die gleiche „Denkzeit“ zu geben, wird in HIGH/LOW-Komplexität unterschieden; für komplexe Inferenz werden 70–90 %, für einfache Anfragen 20–40 % der Token zugewiesen
- Mit einem Steering-Vektor auf Basis der Pivotal Token Search aus dem Microsoft-Phi-4-Paper werden Inferenzmuster wie numerische Genauigkeit, Selbstkorrektur und gründliche Exploration angestoßen
- Bei DeepSeek-R1-Distill-Qwen-1.5B steigt GPQA-Diamond von 21,72 % Baseline auf 31,06 %, was einer relativen Verbesserung von 43 % entspricht; MMLU-Pro steigt von 25,58 % auf 26,38 %
- Funktioniert auf lokalen Inferenzmodellen wie DeepSeek, Qwen und benutzerdefinierten Fine-Tuning-Modellen und verwendet ohne API-Abhängigkeit weniger Token als der Referenzansatz
Steuerung von Inferenzressourcen pro Anfrage
- AutoThink ist eine Technik zur adaptiven Ressourcenzuweisung, die Inferenzressourcen lokaler LLMs je nach Anfrage unterschiedlich verteilt
- Zunächst wird eine Anfrage als HIGH- oder LOW-Komplexität klassifiziert, danach wird das Verhältnis der Inferenz-Token entsprechend der Komplexität angepasst
- Komplexe Inferenz: 70–90 % der gesamten Token
- Einfache Anfragen: 20–40 % der gesamten Token
- Der Steering-Vektor wird aus der Pivotal Token Search abgeleitet und lenkt während der Generierung die Inferenzrichtung des Modells
- Zu den angestoßenen Verhaltensweisen gehören numerische Genauigkeit, Selbstkorrektur und gründliche Exploration
- Die Implementierung besteht aus zwei Säulen
- Ein adaptives Klassifizierungs-Framework, das neue Komplexitätskategorien ohne erneutes Training lernen kann
- Eine Open-Source-Implementierung der Pivotal Token Search
Benchmark-Ergebnisse und Einsatzbereich
- Bei DeepSeek-R1-Distill-Qwen-1.5B zeigen sich folgende Ergebnisse
- GPQA-Diamond: 31,06 %, relative Verbesserung von 43 % gegenüber der Baseline von 21,72 %
- MMLU-Pro: 26,38 %, höher als die Baseline von 25,58 %
- Verwendet weniger Token als der Referenzansatz
- AutoThink ist breit auf lokale Inferenzmodelle anwendbar
- Beispielmodelle: DeepSeek, Qwen, benutzerdefinierte Fine-Tuning-Modelle
- Keine API-Abhängigkeit
- Relevante Materialien
1 Kommentare
Hacker-News-Kommentar
Ich möchte offenlegen, dass die Motivation für AutoThink aus der Erfahrung entstand, zu sehen, wie bestehende Reasoning-Modelle Rechenressourcen verschwenden — die Ineffizienz sprang deutlich ins Auge, weil sie selbst für sehr einfache Fragen wie „Was ist 2+2?“ genauso viel „Denkzeit“ verbrauchen wie für komplexe mathematische Beweise. Überraschend war, dass die Leistungsverbesserung viel größer ausfiel als erwartet, als ich zwei Dinge kombinierte, mit denen ich getrennt experimentiert hatte — adaptive Klassifikation (kann ohne Retraining neue Kategorien lernen) und Pivotal Token Search, das im Microsoft-Paper zu Phi-4 als Open Source veröffentlicht wurde — und darauf noch eine dynamische Zuweisung des Token-Budgets anwandte. Tatsächlich sank die durchschnittlich verwendete Tokenzahl, weil einfache Anfragen wirklich deutlich schneller abgeschlossen wurden und zusätzliche Rechenarbeit nur komplexen Anfragen zugewiesen wurde. Ein paar technische Punkte: Der Steering Vector ist mit weniger als 1 MB pro Muster klein, der Speicher-Overhead also praktisch null; der Klassifikationsprozess fügt nur etwa 10 ms Latenz hinzu, also vernachlässigbar; und die Auswahl des Target-Layers ist wichtig, wobei sich bei den meisten Modellen mittlere Layer im Bereich 15 bis 20 als am besten erwiesen. Feedback hätte ich gern zu folgenden Punkten: Erfahrungen mit ähnlichen adaptiven Ansätzen, Reasoning-Muster, die sich nützlicher steuern lassen, und Ideen zur automatischen Erkennung des optimalen Target-Layers. Fragt mich gern alles zu Implementierung oder Ergebnissen
Inzwischen ist das nicht unbedingt mehr so. Hast du Gemini 2.5 Pro ausprobiert? Bei einfachen Fragen „denkt“ es fast gar nicht, bei Coding-Fragen schreibt es Antworten wie lange logische Essays. Bei o3 scheint es ähnlich zu sein
Glückwunsch! Jeder Versuch, LLMs effizienter zu machen, ist sehr willkommen. Bisher habe ich eher faul optimiert: einfache Anfragen auf einem Mac Mini M4 mit MLX-Modellen, komplexe Anfragen an eine Nvidia 4090. Die Effizienz des M4 ist im Vergleich zu Nvidia wirklich erstaunlich. Ich denke, Apple ist mit MLX auf dem richtigen Weg. Ich werde mehr über AutoThink lesen und plane, es auch in meinen persönlichen Workflow zu integrieren
Ich denke, es wäre einen Versuch wert, hinter den User-Prompt eine „Antwort eines Non-Reasoning-Modells“ einzufügen, zum Beispiel: „Folgendes hat das Non-Reasoning-Modell gedacht: ... Ist das das Ergebnis, das der Nutzer möchte?“ Wenn die Non-Reasoning-Version ausreicht, könnte das auch den Vorteil haben, dass das Reasoning-Modell schneller zu einer Antwort kommt
Sogar Claude Sonnet 3.5 — nicht einmal die neueste Version 3.7 oder 4 — zeigt je nach Komplexität der Anfrage klar unterschiedliche Bearbeitungszeiten. Man sieht also bereits eine dynamische Anpassung der Verarbeitungszeit
Ich frage mich, wie man Fragen als „komplex“ oder „einfach“ klassifizieren kann. Eine äußerlich einfache Frage kann in Wirklichkeit sehr schwierig sein. Zum Beispiel ist eine ganzzahlige Lösung für x³+y³+z³=42 ein Problem, das über 100 Jahre Rechenressourcen verschlungen hat. Oder auch eine Gleichung wie x/(y+z)+y/(z+x)+z/(x+y)=4: Sie wirkt auf den ersten Blick simpel, hat aber Lösungen mit Milliardenwerten, für die Theorie elliptischer Kurven nötig ist. Verweis auf die Lösung
Die Schwierigkeit eines Problems zu klassifizieren ist selbst eine eigene Technik — eine Fähigkeit, die getrennt von der eigentlichen Lösung gelernt werden kann. Wenn man zum Beispiel die obige Gleichung sieht, sollte man sofort drei Schwierigkeiten erkennen: ganzzahliger Bereich, drei Variablen, kubische Gleichung. Diese drei Elemente zusammen lassen den Schwierigkeitsgrad stark ansteigen. Mit reellen oder komplexen Zahlen, weniger Variablen oder niedrigerem Grad wäre das deutlich leichter. Das heißt natürlich nicht, dass es zwingend schwer ist, aber es könnte ein ungelöstes Problem sein. Ich selbst kann so etwas nicht wirklich lösen, habe aber genug Übung darin, einzuschätzen, wo man Informationen suchen müsste, und merke deshalb sofort: „Das ist extrem schwer.“ Könnten LLMs nicht auch solche Hinweise lernen und so die Schwierigkeit klassifizieren, ohne das Problem tatsächlich zu lösen? Oder vielleicht haben sie das bereits gelernt
Der Schwierigkeitsgrad der Anfrage wird in diesem Kontext danach definiert, wie viele Token das Modell auf Ground-Truth-Datensätzen wie GSM8k verbraucht, um eine korrekte Antwort zu erzeugen. Der adaptive Klassifikator wird auf diesem Datensatz trainiert und dann während der Inferenz für die Klassifikation verwendet
Als bei Claude 3.7 der Schalter für
extended thinkingkam, habe ich auch ein ähnliches AutoThink-POC gebaut — sogar mit demselben Namen autothinkgithub.com/NiloCK/autothink
Blog „think-toggles-are-dumb“
Meine Version macht zuerst einen Pass, in dem das LLM die Schwierigkeit der Anfrage auf einer Skala von 0 bis 100 bewertet, und weist dann entsprechend diesem Wert das Denkbudget linear zu. Im Vergleich zur Arbeit des OP ist das natürlich simpel, aber ich freue mich wirklich, quantitative Ergebnisse zu sehen — starke Arbeit!
Ich halte das für eine offensichtliche Optimierung und finde es seltsam, dass diese Veränderung nicht schon längst stattgefunden hat. Sehr beeindruckend, wie gut es erklärt und direkt umgesetzt wurde
Bei Reasoning-Modellen wie QwQ oder Qwen 3 habe ich ehrlich gesagt nicht viel Zeit darauf verwendet, die Ergebnisse selbst zu verbessern, sondern eher ausprobiert, mit verschiedenen Prompts die Ausgabe von Reasoning-Tokens zu begrenzen. Gemma 3 27B QAT ist zwar kein Reasoning-Modell, folgt aber Anweisungen so gut, dass es sich in LLM-Ketten oder Routen sehr gut für Vorklassifikation/Sprachoptimierung einsetzen lässt und in späteren Stufen dann für das eigentliche Reasoning genutzt werden kann. Es ist auch möglich, Zwischenantworten zwischen verschiedenen Thinking-Tags abwechselnd auszugeben. In Experimenten mit solchen Modellen definiere ich „Tokens während des Denkens“ getrennt von der Schlussfolgerung als alle Tokens, die als Trittsteine in den einzelnen Problemlösungsschritten dienen. Ich habe die Erfahrung gemacht, dass sich Ergebnisse im Allgemeinen verbessern, wenn man anweist, bestimmte Tokens oder Formulierungen bevorzugt zu verwenden, und AutoThink könnte als allgemeinere und wirksamere Optimierung dienen, indem es automatisch die im Datensatz am besten performenden Tokens nutzt. Wenn allerdings zu viele Pivot-Tokens verwendet werden, besteht die Gefahr des Overfittings auf Benchmark-Fragen, deshalb würde ich gern noch sehen, wie gut sich dieser Ansatz verallgemeinert. Persönlich halte ich eine sorgfältige Wort-/Tokenwahl für eine kostengünstige Optimierung mit hoher Wirkung auf die Ergebnisqualität, und ich habe hohe Erwartungen an die Generalisierungsfähigkeit von AutoThink
Es ist großartig, dass kleine Teams und einzelne Forschende dank kleinerer Modelle innovative Ansätze und Experimente inzwischen viel leichter belegen können, ohne große AI-Labs beneiden zu müssen. Je wettbewerbsfähiger SMLs (Small Language Models) werden, desto stärker wächst das, was sich On-Device umsetzen lässt — weit über das hinaus, was man erwarten würde
Wenn man Modelle für andere hostet, ist es sinnvoll, bei sehr einfachen Fragen Rechenressourcen zu sparen. In diesem Fall gibt es zwar den Nachteil, dass das Modell Fragen, die leicht erscheinen, möglicherweise vernachlässigt, aber diese Kosten trage nicht ich. Wenn ich ein Modell dagegen direkt auf meinem eigenen PC nutze, möchte ich, nachdem ich bereits viel Geld in eine GPU investiert habe, die Ressourcen möglichst voll ausnutzen — selbst bei einfachen Anfragen weniger zu rechnen, wäre dann eher nicht mein Ziel
Interessanter Denkanstoß! Wir wollen intern auch darüber sprechen, ob unser AI-Crawler beim Entwurf dynamisch erkennen sollte, ob er je nach besuchter Website mehr oder weniger Anfragen stellen soll. Zur Einordnung: Wir sind samaritanscout.org, ein Suchmaschinenprojekt, das alle lokalen Freiwilligenangebote aus verschiedenen Non-Profit-Websites an einem Ort zusammenführt
Ich bin erst seit Kurzem in LLMs und AI eingestiegen, finde dieses Projekt aber enorm spannend. Besonders intuitiv beeindruckt mich, dass AutoThink den Rechenaufwand je nach Schwierigkeit des Problems anpasst, damit AI „klüger denkt“ — ähnlich wie Menschen 2+2 sofort lösen und nur über schwierigere Probleme ernsthaft nachdenken. Ich verstehe technische Elemente wie Token-Budgets oder Steering Vectors noch nicht gut, aber ich finde die Idee faszinierend, gleichzeitig schneller und klüger zu werden. Ich werde das weiter verfolgen
Ich denke, bei LLMs sollte man lieber nicht die Begriffe „Denken“ oder „Schlussfolgern/Reasoning“ verwenden — beide Wörter haben eine bestimmte Bedeutung und philosophische Vorgeschichte, während LLMs in Wirklichkeit nicht so denken oder schlussfolgern, sondern eher einfach mehr Rechenarbeit (Prozessorzeit) einsetzen, um ein Ergebnis zu erzeugen
Das Schiff ist bereits abgefahren. Früher bedeutete das Wort „Computer“ auch einen menschlichen Rechner, heute meint es vollständig die Maschine — hier hat sich die Terminologie genauso verschoben
Ich würde es mit „ping“ vergleichen — wenn man eine IP-Adresse „pingt“, schickt man auch nicht wirklich Schallwellen auf einen Metallrumpf, aber als Metapher für das tatsächliche Verhalten wird es sinnvoll verwendet. Wenn eine Metapher nützlich ist, muss sie nicht 1:1 mit der Realität übereinstimmen, um alltäglich gebraucht zu werden
Mein Weltbild ist im Prinzip materialistisch und deterministisch. Im Alltag kommt aber Existenzialismus dazu und sogar ein wenig spirituelles Empfinden. Aus praktischer Sicht hilft es, solchen Werkzeugen vorübergehend anthropomorphe Eigenschaften zuzuschreiben, weil dadurch der Gesprächsfluss leichter wird und man das Werkzeug intuitiver versteht. Diese Methode stößt manchmal an ihre Grenzen, aber dann kann man leicht zu einem analytischeren Rahmen wechseln, denke ich