HN Open: estudo de interpretabilidade do Llama 3.2 com Sparse Autoencoders
(github.com/PaulPauls)Visão geral do projeto
- Os modelos de linguagem de grande porte (LLMs) modernos codificam conceitos sobrepondo várias características no mesmo neurônio, fazendo com que a ativação de cada neurônio tenha vários significados interpretáveis dependendo da ativação de outros neurônios. Isso é chamado de superposition.
- Sparse Autoencoders (SAE) são inseridos em um LLM treinado para projetar ativações em um espaço latente esparso muito grande, separando representações sobrepostas e convertendo-as em características interpretáveis.
- Este projeto tem como objetivo reproduzir pesquisas realizadas com sucesso pela Anthropic, OpenAI e Google DeepMind para extrair características interpretáveis.
- Ele fornece todo o pipeline para criar Sparse Autoencoders funcionais e interpretáveis para o modelo Llama 3.2-3B.
Principais recursos
- Fornece um pipeline completo de ponta a ponta, desde a captura de ativações escrita em PyTorch até o treinamento do SAE, interpretação de características e validação.
- Captura ativações residuais de modelos de linguagem de grande porte para usá-las como conjunto de dados de treinamento do SAE.
- Pré-processa os dados de treinamento com eficiência e oferece suporte a treinamento distribuído em larga escala com múltiplas GPUs.
- Implementa perda auxiliar durante o treinamento do SAE para evitar variáveis latentes mortas e estabilizar a dinâmica de treinamento.
- Fornece logging abrangente, visualização e checkpoints do treinamento do SAE com Weights & Biases.
- Oferece suporte à análise semântica das características aprendidas por meio de ferramentas de análise de interpretabilidade.
- Permite uso geral e validação dos resultados sem dependências externas por meio de uma implementação pura em PyTorch do Llama 3.1/3.2.
- Valida o impacto do SAE no comportamento do modelo por meio de tarefas de conclusão de texto e chat, além de permitir ajustar as características semânticas extraídas.
Recursos disponibilizados
-
Conjunto de dados de frases do OpenWebText:
- Versão personalizada do conjunto de dados OpenWebText usada para captura de ativações.
- Mantém o texto original e armazena frases individuais em formato Parquet para acesso rápido.
- Usa o tokenizador "Punkt" do NLTK 3.9.1 para segmentação de frases.
-
Ativações capturadas do Llama 3.2-3B:
- 25 milhões de ativações residuais da 23ª camada do Llama 3.2-3B.
- 4 TB de dados brutos comprimidos para 3,2 TB e divididos em 100 arquivos.
-
Logs de treinamento do SAE:
- Logs de visualização de métricas de treinamento, validação e depuração via Weights & Biases.
- Inclui 10 épocas e 10.000 etapas registradas.
-
Modelo SAE treinado com 65.536 latentes:
- Modelo SAE final treinado após 10 épocas.
Estrutura do projeto
1. Captura de dados
capture_activations.py: captura ativações residuais do LLM.openwebtext_sentences_dataset.py: conjunto de dados personalizado para processamento em nível de frase.
2. Treinamento do SAE
sae.py: implementação principal do modelo SAE.sae_preprocessing.py: pré-processamento de dados para treinamento do SAE.sae_training.py: implementação de treinamento distribuído do SAE.
3. Interpretabilidade
capture_top_activating_sentences.py: identifica frases que maximizam a ativação de características.interpret_top_sentences_send_batches.py: gera e envia lotes para interpretação.interpret_top_sentences_retrieve_batches.py: coleta resultados de interpretação.interpret_top_sentences_parse_responses.py: analisa os resultados da interpretação.
4. Validação e testes
llama_3_inference.py: implementação principal de inferência.llama_3_inference_text_completion_test.py: teste de conclusão de texto.llama_3_inference_chat_completion_test.py: teste de conclusão de chat.llama_3_inference_text_completion_gradio.py: interface Gradio para testes interativos.
1 comentários
Comentários do Hacker News
A interpretabilidade mecanística de LLMs resolve o problema de o modelo gerar respostas convincentes quando explica a si mesmo. Quanto mais poderoso o modelo, mais convincente ele pode ser ao justificar uma "mentira", o que pode levá-lo a tirar notas mais baixas em testes de auto-detecção. O objetivo é consistência, não verdade
Em pesquisas sobre Sparse Autoencoders (SAEs), foi observado que o limite inferior da curva de perda escala segundo uma lei de potência. Foi possível resolver completamente os latentes mortos por meio de perda auxiliar, e foram observados padrões suaves de onda senoidal ao longo das iterações de treinamento
Levanta-se uma questão sobre interpretabilidade mecanística: há preocupação com a possibilidade de futuras IAs, ao supervisionarem seu próprio treinamento, criarem modelos capazes de enganar observadores de interpretabilidade mecanística explorando ambiguidades
Após ler uma postagem de blog sobre a dificuldade de avaliar SAEs, há curiosidade sobre como esse problema foi resolvido. Gostaria de encontrar no repositório a parte que permite entender a abordagem
Parece que este trabalho pode ter um impacto positivo em alinhamento, mas os detalhes ainda não foram verificados. Há curiosidade sobre quanto deveria ser pago para compensar tempo, custo e risco
Agradecimento por ter dedicado muito tempo à documentação
Trabalho muito legal, e há curiosidade sobre a existência de planos para integração com o SAELens