1 points par GN⁺ 2024-11-22 | 1 commentaires | Partager sur WhatsApp

Vue d’ensemble du projet

  • Les grands modèles de langage (LLM) modernes encodent des concepts en superposant plusieurs caractéristiques dans un même neurone, et l’activation de chaque neurone peut prendre plusieurs significations interprétables selon l’activation d’autres neurones. On appelle cela la superposition.
  • Les Sparse Autoencoders (SAE) sont insérés dans un LLM entraîné afin de projeter les activations dans un très grand espace latent sparse, pour séparer les représentations superposées et les transformer en caractéristiques interprétables.
  • Ce projet vise à reproduire les recherches menées avec succès par Anthropic, OpenAI et Google DeepMind afin d’extraire des caractéristiques interprétables.
  • Il fournit une pipeline complète pour créer des Sparse Autoencoders fonctionnels et interprétables pour le modèle Llama 3.2-3B.

Fonctionnalités clés

  • Fournit une pipeline end-to-end complète, de la capture des activations écrite en PyTorch jusqu’à l’entraînement du SAE, l’interprétation des caractéristiques et leur validation.
  • Capture les activations résiduelles à partir d’un grand modèle de langage afin de les utiliser comme jeu de données d’entraînement du SAE.
  • Prétraite efficacement les données d’entraînement et prend en charge l’entraînement distribué à grande échelle sur plusieurs GPU.
  • Implémente une perte auxiliaire pendant l’entraînement du SAE afin d’éviter les variables latentes mortes et de stabiliser la dynamique d’entraînement.
  • Fournit un logging complet, des visualisations et des checkpoints de l’entraînement du SAE via Weights & Biases.
  • Prend en charge l’analyse sémantique des caractéristiques apprises grâce à des outils d’analyse d’interprétabilité.
  • Permet un usage général et la vérification des résultats sans dépendances externes grâce à une implémentation pure PyTorch de Llama 3.1/3.2.
  • Vérifie l’impact du SAE sur le comportement du modèle via des tâches de complétion de texte et de chat, et permet d’ajuster les caractéristiques sémantiques extraites.

Ressources publiées

  1. Jeu de données de phrases OpenWebText :

    • Version personnalisée du jeu de données OpenWebText utilisée pour la capture des activations.
    • Conserve le texte d’origine et stocke chaque phrase individuellement au format Parquet pour un accès rapide.
    • Segmentation en phrases à l’aide du tokenizer "Punkt" de NLTK 3.9.1.
  2. Activations capturées de Llama 3.2-3B :

    • 25 millions de phrases d’activations résiduelles de la 23e couche de Llama 3.2-3B.
    • 4 To de données brutes compressées à 3,2 To et réparties en 100 archives.
  3. Logs d’entraînement du SAE :

    • Logs de visualisation des métriques d’entraînement, de validation et de débogage via Weights & Biases.
    • Comprend 10 époques et 10 000 étapes journalisées.
  4. Modèle SAE entraîné à 65 536 variables latentes :

    • Modèle SAE final entraîné après 10 époques.

Structure du projet

1. Capture des données
  • capture_activations.py : capture des activations résiduelles du LLM.
  • openwebtext_sentences_dataset.py : jeu de données personnalisé pour le traitement au niveau de la phrase.
2. Entraînement du SAE
  • sae.py : implémentation du modèle SAE principal.
  • sae_preprocessing.py : prétraitement des données pour l’entraînement du SAE.
  • sae_training.py : implémentation de l’entraînement distribué du SAE.
3. Interprétabilité
  • capture_top_activating_sentences.py : identifie les phrases qui maximisent l’activation des caractéristiques.
  • interpret_top_sentences_send_batches.py : génère et envoie des lots pour l’interprétation.
  • interpret_top_sentences_retrieve_batches.py : récupère les résultats d’interprétation.
  • interpret_top_sentences_parse_responses.py : analyse les résultats d’interprétation.
4. Validation et tests
  • llama_3_inference.py : implémentation principale de l’inférence.
  • llama_3_inference_text_completion_test.py : test de complétion de texte.
  • llama_3_inference_chat_completion_test.py : test de complétion de chat.
  • llama_3_inference_text_completion_gradio.py : interface Gradio pour les tests interactifs.

1 commentaires

 
GN⁺ 2024-11-22
Avis sur Hacker News
  • L’interprétabilité mécanistique des LLM résout le problème des modèles qui génèrent des réponses convaincantes lorsqu’ils s’expliquent eux-mêmes. Plus un modèle est puissant, plus il peut être convaincant pour justifier un « mensonge », ce qui peut lui donner de moins bons scores dans les tests d’auto-détection. L’objectif est la cohérence, pas la vérité

    • La véritable explicabilité consiste à montrer le processus de pensée causal par lequel le modèle passe pour générer une réponse. Cela ressemble aux idées qui traversent brièvement l’esprit humain dans plusieurs directions lorsqu’il réfléchit
  • Dans les recherches sur les Sparse Autoencoders (SAE), il a été observé que la borne inférieure de la courbe de perte suit une loi de puissance. Une perte auxiliaire a permis de résoudre complètement le problème des variables latentes mortes, et un motif sinusoïdal régulier a été observé au fil des itérations d’entraînement

  • Une question est soulevée sur l’interprétabilité mécanistique : on craint que les futures IA, en supervisant leur propre entraînement, puissent exploiter l’ambiguïté pour créer des modèles capables de tromper les observateurs de l’interprétabilité mécanistique

  • Après avoir lu un billet de blog sur la difficulté d’évaluer les SAE, quelqu’un se demande comment ce problème a été résolu. Il aimerait trouver dans le dépôt les éléments permettant de comprendre l’approche adoptée

  • Quelqu’un pense que ce travail pourrait avoir un impact positif sur l’alignement, mais n’a pas encore vérifié les détails. Il se demande combien il faudrait payer pour compenser le temps, le coût et le risque

  • Merci d’avoir consacré autant de temps à la documentation

  • Travail vraiment très sympa, et quelqu’un se demande s’il est prévu de l’intégrer à SAELens