Sobre o projeto
Drowse é uma bancada de trabalho local para interpretabilidade mecanicista em grandes modelos de linguagem. Ele fornece um painel local, uma API Python e um servidor HTTP compatível com clientes OpenAI e Ollama.
A inicialização rápida instala a partir de um checkout do código-fonte em um ambiente virtual (`uv pip install -e .`) e é iniciada com `drowse serve google/gemma-3-4b-it`, abrindo um painel em localhost:8000. O primeiro lançamento baixa o modelo e ajusta 17 sondas de conceito incluídas, armazenadas em `~/.drowse/`. CUDA e Apple Silicon MPS são suportados, com extras opcionais de quantização FlashAttention e bitsandbytes.
Uma edição de navegador hospedada é incluída como um PWA Svelte isolado para inferência WebGPU no dispositivo. O README é franco sobre seus limites: bloqueios de tempo de execução e distribuição são marcados como verificados, mas as verificações de versão não garantem estabilidade da GPU sob carga do modelo; Gemma PT tem uma discrepância numérica de pesos correspondentes e Qwen 3.5 ainda precisa de validação de quantização correspondente. As verificações de dispositivo relatam fornecedor e arquitetura da GPU, bloqueiam perfis com perdas de dispositivo registradas e bloqueiam conservadoramente o Chromium do Windows em adaptadores Intel gen-9 identificados. O WebGPU é obrigatório para inferência, sem fallback em nuvem ou somente CPU, e prompts, conversas, ativações e artefatos ajustados permanecem no dispositivo.
A WebUI organiza conversas como árvores de threads ramificadas com reroll, salvar/carregar e controles padrão de amostragem. O modo de bate-papo renderiza modelos de template como turnos com pensamento recolhível e manipulação dinâmica de papéis; o modo bruto expõe um único buffer para modelos base. Tokens podem ser destacados por pontuações de sonda ou surpresa de logprob, e clicar em um token abre uma gaveta de detalhes com geometria, logits (incluindo bifurcação de tokens), SAE e visualizações de lente J. Os instrumentos são agrupados nas abas Subspace, Manifold, SAE e Lens, com ferramentas adicionais de análise para ajustar, mesclar, instalar e inspecionar variedades, pontuar templates de escolha restrita, gerenciar steering e verificar a saúde do servidor.
Conceitos são extraídos como variedades ou subespaços: um subespaço plano unidimensional é um vetor de steering, subespaços planos de rank superior são grupos ortogonais, e variedades curvas ajustam superfícies não lineares. As sondas incluídas cobrem pares de conceitos epistêmicos, de alinhamento, de registro e culturais, além de conjuntos opcionais maiores para personas, emoções e meses. Uma sintaxe unificada de expressão de steering funciona em Python, YAML, OpenAI, Ollama e na API nativa, suportando adição/subtração, operadores de manutenção/remoção de componentes compartilhados, ablação média, seleção de nós de variedade, restrições de fase de token, restrições de janela de decodificação e portões de sonda ao vivo.
A extração faz o modelo responder prompts de linha de base para cada conceito e então ajusta estados ocultos a uma variedade ou subespaço, usando uma métrica de Mahalanobis para alocação de camadas e seleção discriminativa de camadas. As leituras de monitoramento incluem coordenadas ajustadas, fração do subespaço, nós mais próximos com atribuição suave e resíduos fora da superfície para variedades curvas. A lente jacobiana segue o trabalho publicado de espaço verbalizável, e o suporte a SAE pode usar versões publicadas do SAELens ou treinar SAEs locais.
A CLI tem oito verbos: serve, manifold, pack, experiment, config, template, lens e sae, cobrindo preparação, distribuição e trabalho em lote reproduzíveis. Pacotes de manifold podem ser instalados a partir de caminhos locais ou distribuídos como repositórios de modelos Hugging Face, e um ZIP `.drowse` transporta um fechamento de manifold mais seu template referenciado. Uma variedade PCA de dois nós ajustada pode ser exportada como um GGUF de vetor de controle llama.cpp. A descoberta no navegador hospedado aceita apenas repositórios Hugging Face marcados como `drowse-manifold` com um único `.drowse` raiz e um `manifold.json` raiz, resolvendo para um commit imutável e verificando repositório e revisão declarados.
Um processo `drowse serve` expõe quatro superfícies em uma porta: a WebUI, `/v1/*` compatível com OpenAI, `/api/*` compatível com Ollama e uma API nativa `/drowse/v1/*` para sessões, árvores loom, sondas, variedades, templates, ciclo de vida e replay SAE/J-LENS, SSE e WebSockets de token-mais-medição. A API Python centra-se em `DrowseSession`, com `extract`, `add_probe`, `generate`, `generate_stream`, `generate_batch`, `generate_sweep` e `score_choices`, além de ajudantes de plotagem para notebooks.
O suporte a modelos inclui caminhos testados de ponta a ponta para Qwen 2/3/3.5, Gemma 2/3/4, Mistral 3 e Ministral 3, Llama, GLM, gpt-oss e Talkie, com arquiteturas adicionais conectadas por meio de uma interface genérica de camada residual e avisos quando não testadas. O README enquadra explicitamente o Drowse como direcionado a uma máquina local confiável ou rede de laboratório, em vez de um serviço multi-tenant endurecido, e aconselha chaves de API, TLS, limites de taxa e isolamento se vinculado além de um host confiável. A execução de Python em repositório é desabilitada por padrão e exige opt-in explícito. O estado fica em `~/.drowse/` (móvel via `$DROWSE_HOME`), enquanto os salvamentos de conversa são arquivos JSON explícitos baixados pelo navegador, em vez de salvamento automático. O projeto é licenciado sob AGPL-3.0-or-later e credita Representation Engineering, repeng, extração de diferença de médias, o trabalho de manifold da Goodfire, o enquadramento do Assistant Axis da Anthropic e o método de lente J de Gurnee et al.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.