Sobre el proyecto
Drowse es un banco de trabajo local para la interpretabilidad mecanicista en modelos de lenguaje grandes. Incluye un panel local, una API de Python y un servidor HTTP compatible con clientes de OpenAI y Ollama. La guía de inicio rápido instala desde una copia del código fuente en un entorno virtual (`uv pip install -e .`) y se lanza con `drowse serve google/gemma-3-4b-it`, abriendo un panel en localhost:8000. El primer lanzamiento descarga el modelo y ajusta 17 sondas de conceptos incluidas, almacenadas en `~/.drowse/`. Se admiten CUDA y MPS de Apple Silicon, con extras opcionales de cuantización FlashAttention y bitsandbytes. Se incluye una edición de navegador alojada como una PWA Svelte aislada para inferencia WebGPU en el dispositivo. El README es sincero sobre sus límites: los bloqueos de tiempo de ejecución y distribución están marcados como verificados, pero las comprobaciones de lanzamiento no garantizan la estabilidad de la GPU bajo carga del modelo; Gemma PT tiene una discrepancia numérica de pesos emparejados y Qwen 3.5 aún necesita validación de cuantización emparejada. Las comprobaciones de dispositivo informan del proveedor y la arquitectura de la GPU, bloquean perfiles con pérdidas de dispositivo registradas y bloquean de forma conservadora Windows Chromium en adaptadores Intel de novena generación identificados. WebGPU es obligatorio para la inferencia, sin respaldo en la nube ni solo CPU, y las indicaciones, conversaciones, activaciones y artefactos ajustados permanecen en el dispositivo. La interfaz web organiza las conversaciones como árboles de hilos ramificados con repetición, guardar/cargar y controles de muestreo estándar. El modo chat representa las plantillas del modelo como turnos con pensamiento plegable y manejo dinámico de roles; el modo bruto expone un único búfer para modelos base. Los tokens se pueden resaltar por puntuaciones de sonda o sorpresa de logprob, y al hacer clic en un token se abre un panel de detalle con geometría, logits (incluida la bifurcación de tokens), SAE y vistas de lente J. Los instrumentos se agrupan en pestañas Subspace, Manifold, SAE y Lens, con herramientas de análisis adicionales para ajustar, fusionar, instalar e inspeccionar variedades, puntuar plantillas de opción restringida, gestionar la manipulación y comprobar el estado del servidor. Los conceptos se extraen como variedades o subespacios: un subespacio plano unidimensional es un vector de manipulación, los subespacios planos de mayor rango son grupos ortogonales y las variedades curvas ajustan superficies no lineales. Las sondas incluidas cubren pares de conceptos epistémicos, de alineación, de registro y culturales, además de conjuntos opcionales más grandes para personas, emociones y meses. Una sintaxis unificada de expresiones de manipulación funciona en Python, YAML, OpenAI, Ollama y la API nativa, y admite suma/resta, operadores de mantener/quitar componentes compartidos, ablación de medias, selección de nodos de variedad, restricciones de fase de token, restricciones de ventana de decodificación y compuertas de sonda en vivo. La extracción hace que el modelo responda a indicaciones de referencia para cada concepto y luego ajusta los estados ocultos a una variedad o subespacio, utilizando una métrica de Mahalanobis para la asignación de capas y la selección discriminativa de capas. Las lecturas de monitoreo incluyen coordenadas ajustadas, fracción de subespacio, nodos más cercanos con asignación suave y residuos fuera de la superficie para variedades curvas. La lente jacobiana sigue el trabajo publicado sobre espacio de trabajo verbalizable, y el soporte de SAE puede usar versiones publicadas de SAELens o entrenar SAE locales. La CLI tiene ocho verbos: serve, manifold, pack, experiment, config, template, lens y sae, que cubren preparación reproducible, distribución y trabajo por lotes. Los paquetes de variedades se pueden instalar desde rutas locales o distribuirse como repositorios de modelos de Hugging Face, y un ZIP `.drowse` transporta un cierre de variedad junto con su plantilla referenciada. Una variedad PCA ajustada de dos nodos se puede exportar como un GGUF de vector de control de llama.cpp. El descubrimiento en navegador alojado solo acepta repositorios de Hugging Face etiquetados `drowse-manifold` con un único `.drowse` raíz y un `manifold.json` raíz, resolviendo a una confirmación inmutable y verificando el repositorio y la revisión declarados. Un solo proceso `drowse serve` expone cuatro superficies en un puerto: la WebUI, `/v1/*` compatible con OpenAI, `/api/*` compatible con Ollama, y una API nativa `/drowse/v1/*` para sesiones, árboles loom, sondas, variedades, plantillas, ciclo de vida y reproducción de SAE/J-LENS, SSE y WebSockets de token más medición. La API de Python se centra en `DrowseSession`, con `extract`, `add_probe`, `generate`, `generate_stream`, `generate_batch`, `generate_sweep` y `score_choices`, además de ayudantes de trazado para cuadernos. El soporte de modelos incluye rutas probadas de extremo a extremo para Qwen 2/3/3.5, Gemma 2/3/4, Mistral 3 y Ministral 3, Llama, GLM, gpt-oss y Talkie, con arquitecturas adicionales conectadas a través de una interfaz genérica de capas residuales y advertencias cuando no se han probado. El README enmarca explícitamente a Drowse como dirigido a una máquina local de confianza o red de laboratorio en lugar de un servicio endurecido para múltiples inquilinos, y recomienda claves de API, TLS, límites de tasa y aislamiento si se expone más allá de un host de confianza. La ejecución de Python en el repositorio está deshabilitada por defecto y requiere opt-in explícito. El estado se encuentra en `~/.drowse/` (movible mediante `$DROWSE_HOME`), mientras que los guardados de conversación son archivos JSON explícitamente descargados por el navegador en lugar de guardados automáticos. El proyecto está licenciado bajo AGPL-3.0-or-later y acredita a Representation Engineering, repeng, extracción por diferencia de medias, el trabajo de variedades de Goodfire, el marco del Eje Asistente de Anthropic y el método de lente J de Gurnee et al.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.