1 pontos por GN⁺ 2024-11-22 | 1 comentários | Compartilhar no WhatsApp

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

  1. 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.
  2. 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.
  3. 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.
  4. 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

 
GN⁺ 2024-11-22
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

    • A verdadeira explicabilidade é mostrar o processo causal de pensamento pelo qual o modelo passa ao gerar uma resposta. Isso é semelhante aos pensamentos que surgem brevemente em várias direções quando uma pessoa pensa
  • 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