HN Show: Forschung zur Interpretierbarkeit von Llama 3.2 mit Sparse Autoencoders
(github.com/PaulPauls)Projektüberblick
- Moderne große Sprachmodelle (LLMs) kodieren Konzepte, indem sie mehrere Merkmale in denselben Neuronen überlagern, sodass die Aktivierung eines Neurons je nach Aktivierung anderer Neuronen mehrere interpretierbare Bedeutungen haben kann. Dies wird als Superposition bezeichnet.
- Sparse Autoencoders (SAEs) werden in trainierte LLMs eingefügt und projizieren Aktivierungen in einen sehr großen, spärlichen latenten Raum, um überlagerte Repräsentationen zu trennen und in interpretierbare Merkmale umzuwandeln.
- Dieses Projekt zielt darauf ab, die von Anthropic, OpenAI und Google DeepMind erfolgreich durchgeführte Forschung zu reproduzieren und interpretierbare Merkmale zu extrahieren.
- Es stellt eine vollständige Pipeline bereit, um funktionale und interpretierbare Sparse Autoencoders für das Modell Llama 3.2-3B zu erzeugen.
Kernfunktionen
- Bietet eine vollständige End-to-End-Pipeline in PyTorch, von der Aktivierungserfassung über das SAE-Training bis hin zur Merkmalinterpretation und Validierung.
- Erfasst Residual-Aktivierungen aus großen Sprachmodellen und nutzt sie als SAE-Trainingsdatensatz.
- Verarbeitet Trainingsdaten effizient vor und unterstützt groß angelegtes verteiltes Training mit mehreren GPUs.
- Implementiert einen Auxiliary Loss während des SAE-Trainings, um tote latente Variablen zu verhindern und die Trainingsdynamik zu stabilisieren.
- Bietet umfassendes Logging, Visualisierung und Checkpoints für das SAE-Training über Weights & Biases.
- Unterstützt mit Analysewerkzeugen zur Interpretierbarkeit die Bedeutungsanalyse gelernter Merkmale.
- Ermöglicht allgemeine Nutzung und Ergebnisvalidierung ohne externe Abhängigkeiten durch eine reine PyTorch-Implementierung von Llama 3.1/3.2.
- Validiert den Einfluss von SAEs auf das Modellverhalten über Aufgaben zur Text- und Chat-Vervollständigung und erlaubt die Anpassung extrahierter semantischer Merkmale.
Veröffentlichte Ressourcen
-
OpenWebText-Satzdatensatz:
- Eine benutzerdefinierte Version des OpenWebText-Datensatzes, die für die Aktivierungserfassung verwendet wurde.
- Behält den Originaltext bei und speichert einzelne Sätze im Parquet-Format für schnellen Zugriff.
- Verwendet den "Punkt"-Tokenizer aus NLTK 3.9.1 zur Satzsegmentierung.
-
Erfasste Llama-3.2-3B-Aktivierungen:
- 25 Millionen Sätze mit Residual-Aktivierungen aus Schicht 23 von Llama 3.2-3B.
- 4 TB Rohdaten, auf 3,2 TB komprimiert und in 100 Archive aufgeteilt.
-
SAE-Trainingslogs:
- Visualisierungslogs für Trainings-, Validierungs- und Debug-Metriken über Weights & Biases.
- Enthält 10 Epochen und 10.000 protokollierte Schritte.
-
Trainiertes SAE-Modell mit 65.536 latenten Variablen:
- Das final trainierte SAE-Modell nach 10 Epochen.
Projektstruktur
1. Datenerfassung
capture_activations.py: Erfassung von LLM-Residual-Aktivierungen.openwebtext_sentences_dataset.py: Benutzerdefinierter Datensatz für die Verarbeitung auf Satzebene.
2. SAE-Training
sae.py: Implementierung des zentralen SAE-Modells.sae_preprocessing.py: Datenvorverarbeitung für das SAE-Training.sae_training.py: Implementierung des verteilten SAE-Trainings.
3. Interpretierbarkeit
capture_top_activating_sentences.py: Identifiziert Sätze, die Merkmalsaktivierungen maximieren.interpret_top_sentences_send_batches.py: Erzeugt und sendet Batches zur Interpretation.interpret_top_sentences_retrieve_batches.py: Sammelt Interpretationsergebnisse ein.interpret_top_sentences_parse_responses.py: Analysiert Interpretationsergebnisse.
4. Validierung und Tests
llama_3_inference.py: Implementierung der Kern-Inferenz.llama_3_inference_text_completion_test.py: Test für Textvervollständigung.llama_3_inference_chat_completion_test.py: Test für Chat-Vervollständigung.llama_3_inference_text_completion_gradio.py: Gradio-Oberfläche für interaktive Tests.
1 Kommentare
Hacker-News-Kommentare
Die mechanistische Interpretierbarkeit von LLMs löst das Problem, dass Modelle überzeugende Antworten erzeugen, wenn sie sich selbst erklären. Je leistungsfähiger das Modell, desto überzeugender kann es seine „Lügen“ rechtfertigen und dadurch in Selbstentdeckungstests schlechter abschneiden. Das Ziel ist Konsistenz, nicht Wahrheit
In der Forschung zu Sparse Autoencoders (SAEs) wurde beobachtet, dass sich die Untergrenze der Loss-Kurve nach einem Potenzgesetz skaliert. Mit einem Auxiliary Loss konnten tote latente Variablen vollständig behoben werden, und während der Trainingsiterationen wurden glatte Sinuswellenmuster beobachtet
Es wird eine Frage zur mechanistischen Interpretierbarkeit aufgeworfen: Es gibt Bedenken, dass zukünftige KI, die ihr eigenes Training überwacht, Modelle bauen könnte, die durch Ausnutzung von Mehrdeutigkeit Beobachter der mechanistischen Interpretierbarkeit täuschen können
Nach dem Lesen eines Blogposts über die Schwierigkeit, SAEs zu bewerten, besteht Neugier, wie dieses Problem hier gelöst wurde. Es wird nach Stellen im Repository gesucht, an denen sich der Ansatz nachvollziehen lässt
Es wird angenommen, dass diese Arbeit positive Auswirkungen auf Alignment haben könnte, aber die Details wurden noch nicht geprüft. Es stellt sich die Frage, wie viel gezahlt werden müsste, um Zeit, Kosten und Risiko auszugleichen
Danke dafür, dass so viel Zeit in die Dokumentation investiert wurde
Sehr coole Arbeit, und es wird gefragt, ob eine Integration mit SAELens geplant ist