1 Punkte von GN⁺ 2 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • DwarfStar 4 ist eine auf DeepSeek-V4-Flash spezialisierte, abgespeckte Version von llama.cpp und macht es einfacher, LLM-Steering mit lokalen Modellen zu erproben
  • Beim Steering wird die Aktivierungsdifferenz eines Konzepts wie „kurz antworten“ als Vektor extrahiert und während der Inferenz derselben Schicht hinzugefügt, um das Verhalten zu verändern
  • Steering setzt Zugriff auf Gewichte oder Aktivierungen voraus und erfordert daher lokale Ausführung; für API-Nutzer ist das ein Bereich, den nur Anbieter wie OpenAI erschließen können
  • Viele grundlegende Anpassungen lassen sich per Prompt einfacher umsetzen, aber für gelernte Verhaltensänderungen, die sich per Prompt schwer anfordern lassen, etwa das Entfernen von Verweigerungen, bleibt Potenzial
  • Mit DeepSeek-V4-Flash und DwarfStar 4 könnten Open-Source-Experimente zunehmen; praktische Anwendungen könnten sich in den nächsten 6 Monaten zeigen

DeepSeek-V4-Flash und DwarfStar 4

  • DwarfStar 4 ist ein Projekt, das llama.cpp auf die Ausführung von DeepSeek-V4-Flash reduziert und es einfacher macht, LLM-Steering mit lokalen Modellen zu erproben
  • DeepSeek-V4-Flash könnte ein lokales Modell sein, das gut genug ist, um mit Low-Level-Agentic-Coding von Frontier-Modellen zu konkurrieren
  • Da Steering Zugriff auf Modellgewichte oder Aktivierungen braucht, ist lokale Ausführung erforderlich; mit dem Erscheinen von Modellen wie DeepSeek-V4-Flash entstehen Bedingungen, unter denen mehr Engineers direkt experimentieren können
  • antirez hat Steering als Feature erster Klasse in DwarfStar 4 integriert, aber das aktuelle Beispiel ist eher eine spielerische „verbosity“-Anpassung, die sich auch per Prompt nachbilden lässt
  • Die erste Release von DwarfStar 4 erschien vor 8 Tagen; spannend wird, wie sich die Steering-Funktion weiterentwickelt

Wie Steering funktioniert

  • Die Grundidee von Steering ist, ein Konzept wie „kurz antworten“ aus dem internen Zustand des Modells zu extrahieren und dann während der Inferenz die numerischen Aktivierungen zu verstärken, die dieses Konzept bilden
  • Extraktion eines einfachen Steering-Vektors

    • Man kann denselben Satz aus 100 Prompts zweimal durch das Modell schicken: einmal mit normalen Prompts und einmal mit dem Zusatz „respond tersely“
    • Für jedes Prompt-Paar misst man die Aktivierungsdifferenz des Modells; zieht man eine Aktivierungsmatrix von der anderen ab, erhält man einen Steering-Vektor
    • Addiert man diesen Vektor für einen beliebigen Prompt zur selben Aktivierungsschicht hinzu, kann man erwarten, dass das Modell knapper antwortet
    • Messbare Aktivierungen gibt es an verschiedenen Punkten, etwa nach der Attention oder zwischen einzelnen Schichten; man kann einen Punkt wählen oder mehrere ausprobieren, um den am besten funktionierenden zu finden
  • Anspruchsvollere Merkmalsextraktion

    • Man kann auch ein separates Modell trainieren, um aus den Aktivierungen des ursprünglichen Modells Merkmale (features) zu extrahieren, also Verhaltensmuster, die gemeinsam auftreten
    • Anschließend lassen sich die extrahierten Merkmale wieder einzelnen Konzepten zuordnen und auf dieselbe Weise verstärken
    • Die sparse autoencoders von Anthropic wurden als ein diesem Prinzip ähnlicher Ansatz vorgestellt
    • Dieser Ansatz kann tiefere Muster erfassen als einfache Differenzvektoren, ist aber bei Zeit-, Rechen- und Expertise-Kosten deutlich aufwendiger
    • Es gibt eine tiefgehende Analyse mit offenen LLaMA-Modellen; eigene Versuche führten eher zu gemischten Ergebnissen

Warum Steering interessant ist

  • Steering wirkt wie die Möglichkeit, statt mühsam einen Trainingsdatensatz zu bauen, um das Modell in Richtung einer „intelligenteren“ Verteilung zu schieben, einen internen „smart“-Regler zu finden und ganz nach rechts zu drehen
  • Auch bei Stilsteuerung lässt sich statt Formulierungen wie „you MUST“ im Prompt hinzuzufügen oder zu entfernen ein Bedienfeld vorstellen, auf dem man Regler wie Kürze/Ausführlichkeit oder Gewissenhaftigkeit/Geschwindigkeit direkt verschiebt
  • Golden Gate Claude zieht jeden Satz zur Golden Gate Bridge hin und ist ein faszinierendes wie beunruhigendes Beispiel dafür, wie stark Steering das Modellverhalten verändern kann

Warum Steering bislang nicht breit genutzt wird

  • Steering steht in der KI-Forschung an einer Art „Mittelklasse“-Position und passt dadurch weder für große KI-Labore noch für normale Nutzer so richtig
  • Für große Labore weniger nötig

    • Große KI-Labore können Modelle direkt manipulieren, ohne während der Inferenz eine unbeholfene „Gehirnoperation“ vorzunehmen
    • Anthropic arbeitet in diesem Bereich, aber vor allem aus Sicht von Interpretierbarkeit und Sicherheit
    • Wenn große Labore ein bestimmtes Verhalten wollen, entscheiden sie sich in der Regel eher dafür, das Modell zu trainieren, statt es zu steuern
  • Normale Nutzer haben keinen Zugriff

    • Normale Nutzer, die LLMs per API verwenden, haben keinen Zugriff auf Modellgewichte oder Aktivierungen und kommen daher schwer an die für Steering nötigen Informationen
    • Zum Beispiel könnte nur OpenAI den Steering-Vektor von GPT-5.5 identifizieren oder offenlegen
    • Bei offenen Gewichtsmodellen ist es möglich, aber bis vor Kurzem fehlten nach dieser Einschätzung ausreichend starke offene Modelle, bei denen sich Steering wirklich lohnte
  • Für viele Grundanwendungen sind Prompts effizienter

    • Es klingt beeindruckend, direkt das „Gehirn“ eines Modells zu manipulieren, aber auch Prompt-Tokens verändern den internen Zustand des Modells direkt
    • Steering erlaubt zwar ziemlich feine Kontrolle über Aktivierungen, aber auch durch Änderungen an der Prompt-Formulierung ist sehr feine Steuerung möglich
    • Statt Steering zu nutzen, um ein Modell ausführlicher zu machen, ist es viel einfacher, einfach darum zu bitten

Lassen sich per Prompt schwer fassbare Ziele steuern?

  • Eine wirklich nützliche Möglichkeit für Steering wäre, Konzepte zu finden und zu steuern, die sich per Prompt nicht anfordern lassen
  • Intelligenz wirkt wie ein Kandidat, aber Modelle der aktuellen Generation tragen diese Eigenschaft bereits in sich, sodass Prompts aus der 4o-Ära wie „you are an expert“ kaum noch einen nennenswerten Effekt haben
  • Ob es einen Steering-Vektor für Intelligenz gibt, ist eine empirische Frage, aber es gibt Skepsis, dass ein solcher Vektor existiert
  • Ein Steering-Vektor für ein schweres Konzept wie Intelligenz könnte sich nahezu über den gesamten Gewichtsraum des Modells erstrecken; dann reduziert sich das Problem des Auffindens dieses Vektors letztlich darauf, ein intelligentes Modell zu trainieren
  • Würde man die Aktivierungen jeder Schicht von GPT-2 durch die Aktivierungen eines viel stärkeren Modells mit derselben Struktur ersetzen, kämen vermutlich bessere Ergebnisse heraus; dann hätte man GPT-2 aber nicht intelligenter gemacht, sondern würde faktisch eher mit einem stärkeren Modell sprechen
  • Ausreichend ausgefeiltes Steering würde am Ende das eigentliche Modell ersetzen; die Intelligenz läge dann nicht mehr im ursprünglichen Modell, sondern im Steering selbst

Steering als Datenkompression

  • Eine weitere Möglichkeit ist, ein Konzept, das viele Tokens benötigen würde, in einem einzelnen Steering-Vektor zu kodieren und so das Kontextfenster zu sparen
  • Das lässt sich als Verschiebung eines Konzepts aus dem Arbeitsgedächtnis des Modells in ein implizites Gedächtnis verstehen
  • Wenn etwa ein Teil des Wissens, das GPT-5.5 beim schnellen Lesen einer bestimmten Codebasis gewinnt, in Aktivierungen verborgen ist, könnte man sich fragen, ob sich das als sehr großer Steering-Vektor herausholen lässt
  • Das Konzept „den Zustand haben, meine Codebasis zu kennen“ ist wie Intelligenz vermutlich so komplex, dass eher ein vollständiges Fine-Tuning nötig wäre
  • Auch in der Industrie waren Ergebnisse beim „Fine-Tuning eines Modells auf eine Codebasis“ überwiegend nicht besonders erfolgreich
  • Ganz ausschließen lässt sich die Möglichkeit einer solchen Form von Steering aber nicht

Ausblick und Community-Experimente

  • Steering hat seinen Reiz, aber es gibt Skepsis, weil sich die meisten Vorteile per Prompt effizienter nachbilden lassen und ambitioniertere Ziele sich durch Training oder Fine-Tuning effizienter erreichen lassen
  • Die Open-Source-Community hat sich mit Steering bislang noch nicht stark beschäftigt, aber mit Entwicklungen wie DeepSeek-V4-Flash und DwarfStar 4 könnte sich das ändern
  • Falls es praktische Anwendungen für Steering gibt, könnten sie sich in den nächsten 6 Monaten zeigen
  • Interessant ist auch, ob modellspezifische Werkzeuge wie DwarfStar 4 künftig eine Bibliothek von verstärkbaren Merkmalen enthalten werden
  • So wie die Community bei populären offenen Gewichtsmodellen schnell Wrapper und Quantisierungen bereitstellt, könnte auch eine Bewegung entstehen, die aus Modellen verstärkbare Merkmale extrahieren will

Zusätzliche Diskussion: Entfernen von Verweigerungen und Runtime-Steering

  • In den anschließenden Kommentaren auf Hacker News meinten mehrere Kommentierende und antirez, dass Steering gelernte Verhaltensweisen verändern könne, die sich per Prompt nur schwer ändern lassen
  • Ein typisches Beispiel ist das Entfernen von Verweigerungen (refusal)
  • Laut einem Kommentierenden werden Entzensierung oder Abliteration bei offenen Modellen bereits auf diese Weise umgesetzt
  • Laut antirez kann das Verändern von Gewichten die Fähigkeiten eines Modells stärker beschädigen, während leichteres Runtime-Steering nur bei Bedarf angewendet werden kann

1 Kommentare

 
GN⁺ 2 시간 전
Hacker-News-Kommentare
  • Danke fürs Posten, und eine Klarstellung: Mit der DwarfStar-Steering-Funktion konnte man die Verweigerungen von DS4 vollständig entfernen.
    Spielzeughaft ist nur das Beispieldataset, also die von mir bereitgestellten Prompt-Paare, nicht die Funktion selbst.
    Ich dachte, dass Steering für jeden zugänglich ist, der ein passendes Dataset erstellen kann und versteht, wie man die gut dokumentierte Steering-Funktion nutzt.
    Ob es gut ist, wenn auch Leute ohne jedes Verständnis, die nur kopieren und einfügen, Zugang zu einem verweigerungsfreien Modell bekommen, weiß ich nicht, deshalb habe ich die Steering-Datei nicht veröffentlicht, aber es bleibt ziemlich verwirrend.
    Inzwischen wurde die Unterstützung erweitert, sodass man Steering-Vektoren auf Aktivierungswerte zu unterschiedlichen Zeitpunkten anwenden kann: immer, nur nach dem Nachdenken oder nur außerhalb von Tool-Aufrufen.
    Ein wichtiger Punkt, den viele nicht kennen: Richtungs-Steering mit Vektoren innerhalb der Inferenz-Engine ist deutlich besser als ein auf die gleiche Weise modifiziertes GGUF zu verwenden.
    Je stärker man steuert, desto mehr leidet die Modellfähigkeit; wenn man es zur Laufzeit anwendet, kann man also nur das Minimum einsetzen, das für das gewünschte Ziel nötig ist, und es auch nur in ausgewählten Momenten aktivieren.
    Noch nicht implementiert, aber es scheint auch möglich, Steering nur dann anzuwenden, wenn die Energie der Verweigerungsrichtung einen bestimmten Schwellenwert überschreitet, und es gibt viel Raum zum Experimentieren.

    • So wie ich es verstehe, zeigt DeepSeek V4 bei harmlosen Eingaben kaum oder gar nicht das für westliche AI-Modelle typische Verweigerungsverhalten.
      Bezieht sich das vor allem auf Beispiele aus der Software-Sicherheitsbewertung?
  • Es überrascht mich, dass dieser Artikel den größten Anwendungsfall für Steering-Vektoren nicht erwähnt, nämlich die Möglichkeit, Modellverweigerungen zu entfernen (abliteration oder uncensoring).
    Früher gab es eine Arbeit mit der Aussage, dass „die meisten Verweigerungen auf einem einzelnen Vektor liegen“, und wenn man diesen Vektor findet und abschwächt, kann man das Modell Verweigerungen überspringen lassen, sodass es allgemein auf „jede“ Anfrage antwortet.
    Bei frühen Modellen, bei denen Verweigerungen per Supervised Fine-Tuning (SFT) gelernt wurden, war das ziemlich gut möglich; bei neueren Modellen wirkt es etwas komplexer, aber bis zu einem gewissen Grad geht es offenbar weiterhin.
    Es gibt bereits Bibliotheken, die diesen Prozess automatisieren und Verweigerungen reduzieren; meist liegt der Fokus darauf, ein Modell zu identifizieren und zu modifizieren und es dann als unzensiertes Modell zu verteilen.
    Der Steering-Ansatz kann diese Vektoränderung dynamisch ein- und ausschalten, sodass man das Modell selbst nicht verändern muss, selbst wenn der Abliteration-Prozess die Genauigkeit bei nicht verwandten Aufgaben beeinträchtigt.

    • p-e-w hat vor ein paar Tagen auf Discord darüber gesprochen.
      Der Einzelneuron-Ansatz scheint bei KLD ziemlich schlecht zu sein, daher haben sich wohl neuere Techniken durchgesetzt.
    • Ich verstehe nicht, warum so viele so auf Zensur fixiert sind.
      Dreht man die Perspektive um, dann gehört auch dazu, keine Falschheiten wie „Impfstoffe sind schädlich“ zu behaupten.
      Wissenschaft und Logik behandeln solche Themen oft als etwas, das zensiert werden sollte, aber ein Modell, das das Internet gleichmäßig sampelt, könnte denken, dass Impfstoffe schädlich sind.
      Weniger naive Ausrichtung würde solche problematischen Kontexte zensieren.
      Deshalb verstehe ich nicht ganz, warum man meint, dass das Entfernen dessen, was man als zensierte Verzerrung ansieht, die allgemeine Nutzbarkeit verbessert.
  • Das wirklich Spannende am DS4-Repository ist für mich der Teil, in dem die Stellregler erforscht werden, die Frontier-Labore vor den Nutzern verborgen halten, und darüber nachgedacht wird, wie sie in reale Entwicklungs- und Interaktionsabläufe passen könnten.
    Es ist wirklich cool, verschiedene Interaktionsformen zu erkunden und etwa zu überlegen, wie sich Steering sinnvoll in Benutzeroberflächen integrieren lässt.
    Sobald das Geheimnis gelüftet ist und die Nutzer verstehen, welches Maß an Kontrolle und Nutzen sie aus Modellen mit so offengelegtem Innenleben ziehen können, wird Steering ein Kernelement des Werkzeugkastens sein.
    Es wird sich wohl natürlich anfühlen, von Modellen oder Modellanbietern ein solches Maß an Kontrolle zu erwarten.

  • Die Beschreibung „DwarfStar 4 ist eine abgespeckte Version von llama.cpp, die nur DeepSeek-V4-Flash ausführt“ stimmt nicht.
    DwarfStar 4 ist ein eigenes Projekt.
    Es steht natürlich in der Schuld von llama.cpp, ist aber keine abgespeckte Version.

    • Stimmt. Die Code-Überschneidung ist minimal und beschränkt sich auf ein paar Kernel.
      Es gibt etwas Quantisierungscode für den Quantizer, den wir implementiert haben, und DwarfStar 4 ist kein Fork von llama.cpp.
      Ohne llama.cpp hätte man wichtige Details allerdings nicht schnell verifizieren können, daher wäre das Projekt viel schwächer ausgefallen.
      Aber es ist kein verkleinertes llama.cpp.
      Das schmälert nicht, wie wichtig llama.cpp sowohl für dieses Projekt als auch für alle nachfolgenden Projekte war.
      Entscheidend ist nicht der Code, sondern der Pfad, die Quantisierungsformate, die Lektionen und die Optimierungs-Kernel, die man zum Lernen von Mustern überprüfen kann.
    • Die Wahrheit liegt wohl irgendwo dazwischen.
      DwarfStar 4 scheint hauptsächlich dank llama.cpp zu existieren, die Autoren waren offensichtlich stark vom llama.cpp-Code inspiriert, und einige Teile wurden mit korrekter Urheberrechtskennzeichnung tatsächlich übernommen.
      Das ist nicht negativ gemeint, sondern wirkt völlig in Ordnung.
      ds4.c linkt nicht gegen GGML, existiert aber dank des Weges, den das llama.cpp-Projekt geöffnet hat, und dank der dort entwickelten Kernel, Quantisierungsformate, des GGUF-Ökosystems und des mühsam erarbeiteten Engineering-Wissens.
      Beim Aufbau eines dedizierten Inferenzpfads für DeepSeek V4 Flash waren Implementierung, Kernel, Tests und Designentscheidungen zentrale Referenzen, und auf Quellcode-Ebene wurden unter der MIT-Lizenz Fragmente wie GGUF-Quantisierungslayouts und -Tabellen, CPU-Quantisierungs- und Dot-Product-Logik sowie einige Kernel beibehalten oder angepasst.
      Deshalb steht in der LICENSE-Datei aus ehrlicher Dankbarkeit, dass der Copyright-Hinweis der GGML-Autoren beibehalten wird - https://github.com/antirez/ds4#acknowledgements-to-llamacpp-...
      Seit https://news.ycombinator.com/item?id=48142885 hatte ich etwa zwei Tage lang ziemlich viel Spaß damit herumzuspielen und habe die Generierungsgeschwindigkeit bisher von 47.85 t/s auf 57.07 t/s erhöht.
  • Ich habe ausprobiert, AI per Steering radikaler zu machen.
    Artikel: https://www.outcryai.com/research/shift-a-models-political-i...
    App: https://apps.apple.com/us/app/outcry-activist-ai/id676208676...
    Diese Technik hat viel Potenzial.

  • Guter Artikel, aber eine Sache verwirrt mich.
    Im Artikel steht, dass Steering nur bei lokalen Modellen funktioniert, aber GitHub Copilot hat eine Funktion „steer with message“, mit der man die Richtung mitten in der Ausführung korrigieren kann, und ich nutze das oft.
    Vermutlich handelt es sich um unterschiedliche Arten von Steering.
    Agent-Steering dürfte wohl bedeuten, mitten in den Hin-und-Her-Fluss zwischen Harness und LLM noch eine weitere Nutzernachricht einzuschieben.

  • Wie kann man ein Modell überhaupt lokal nennen? Wenn es rund 192 GB RAM braucht, wirkt das für „lokal“ etwas übertrieben.

    • Es läuft auch auf einem 96-GB-MacBook.
      Mit 128 GB ist es besser, siehe DwarfStar-README.
    • Kann man es herunterladen und ausführen, wenn man die Hardware hat? Wenn ja, dann ist es lokal, unabhängig davon, ob man die nötige Hardware tatsächlich besitzt oder nicht.
      Das ist ähnlich wie die Frage, ob Zigbee lokal/LAN ist für Leute, die nicht die nötigen Funkgeräte oder Antennen haben.
  • Diese Zeile im verlinkten DwarfStar-Repository erinnert mich an Control Vectors:
    y = y - scale * direction[layer] * dot(direction[layer], y)
    In https://vgel.me/posts/representation-engineering/ werden Control Vectors beschrieben als „Vektoren, die auf Modellaktivierungen während der Inferenz angewendet werden können, um das Verhalten des Modells ohne zusätzliche Prompts zu steuern; genauer gesagt eine Liste von Vektoren, jeweils einer pro Schicht“.

  • Das wirkt eher wie etwas für Deep-Learning-Forschung als etwas, das ich tatsächlich nutzen möchte.

    • Nein. Wenn man einen Anti-Verweigerungs-Vektor lädt, kann man zum Beispiel viele Fragen im Zusammenhang mit Computersicherheit stellen.
      Das ist viel besser als ein Modell, das ständig sagt: „Bei dieser problematischen Anfrage kann ich nicht helfen“, wenn man einfach nur lernen will.
  • Mit dem Satz „Allein durch Anpassung der Prompt-Formulierung kann man bereits sehr feinkörnige Kontrolle erreichen“ kann ich nicht viel anfangen.
    Vielleicht kann ich einfach keine guten Prompts schreiben, aber Bias, der aus den Trainingsdaten oder dem nachgelagerten Training stammt, zu überwinden, fühlt sich unmöglich an.
    Mit Prompts kann man aus den Trainingsdaten höchstens Muster herauskitzeln, aber von echter feinkörniger Kontrolle kann kaum die Rede sein.