À propos du projet
Drowse est un atelier local d'interprétabilité mécaniste pour les grands modèles de langage. Il fournit un tableau de bord local, une API Python et un serveur HTTP compatible avec les clients OpenAI et Ollama.
Le démarrage rapide s'installe à partir d'une copie des sources dans un environnement virtuel (`uv pip install -e .`) et se lance avec `drowse serve google/gemma-3-4b-it`, ouvrant un tableau de bord sur localhost:8000. Le premier lancement télécharge le modèle et ajuste 17 sondes de concepts incluses, stockées sous `~/.drowse/`. CUDA et Apple Silicon MPS sont pris en charge, avec des options FlashAttention et bitsandbytes pour la quantification.
Une édition navigateur hébergée est incluse sous forme de PWA Svelte isolée pour l'inférence WebGPU sur l'appareil. Le README est franc sur ses limites : les verrouillages d'exécution et de distribution sont marqués comme vérifiés, mais les contrôles de publication ne garantissent pas la stabilité du GPU sous charge de modèle ; Gemma PT présente un écart numérique de poids appariés et Qwen 3.5 nécessite encore une validation de quantification appariée. Les contrôles d'appareil signalent le fournisseur et l'architecture du GPU, bloquent les profils avec pertes d'appareil enregistrées, et bloquent prudemment Windows Chromium sur les adaptateurs Intel gen-9 identifiés. WebGPU est obligatoire pour l'inférence, sans repli cloud ou CPU uniquement, et les invites, conversations, activations et artefacts ajustés restent sur l'appareil.
L'interface Web organise les conversations en arborescences de fils avec régénération, sauvegarde/chargement et contrôles d'échantillonnage standard. Le mode chat rend les modèles de templates comme des tours avec pensée repliable et gestion dynamique des rôles ; le mode brut expose un tampon unique pour les modèles de base. Les jetons peuvent être mis en évidence par les scores des sondes ou la surprise logprob, et cliquer sur un jeton ouvre un tiroir de détails avec les vues géométrie, logits (y compris le fork de jetons), SAE et J-lens. Les instruments sont regroupés dans les onglets Subspace, Manifold, SAE et Lens, avec des outils d'analyse supplémentaires pour ajuster, fusionner, installer et inspecter les manifolds, noter les templates à choix restreints, gérer le steering et vérifier l'état du serveur.
Les concepts sont extraits comme des manifolds ou des sous-espaces : un sous-espace plat 1D est un vecteur de steering, les sous-espaces plats de rang supérieur sont des groupes orthogonaux, et les manifolds courbes ajustent des surfaces non linéaires. Les sondes incluses couvrent des paires de concepts épistémiques, d'alignement, de registre et culturels, ainsi que des ensembles optionnels plus grands pour les personas, les émotions et les mois. Une syntaxe unifiée d'expressions de steering fonctionne avec Python, YAML, OpenAI, Ollama et l'API native, prenant en charge l'addition/soustraction, les opérateurs de conservation/retrait de composants partagés, l'ablation moyenne, la sélection de nœuds de manifold, les restrictions de phase de jeton, les restrictions de fenêtre de décodage et les portes de sondes en direct.
L'extraction fait répondre le modèle à des invites de référence pour chaque concept, puis ajuste les états cachés sur un manifold ou un sous-espace, en utilisant une métrique de Mahalanobis pour l'allocation des couches et la sélection discriminative des couches. Les lectures de surveillance incluent les coordonnées ajustées, la fraction de sous-espace, les nœuds les plus proches avec affectation douce et les résidus hors surface pour les manifolds courbes. La lentille de Jacobien suit les travaux publiés sur l'espace de travail verbalisable, et la prise en charge SAE peut utiliser les versions publiées de SAELens ou entraîner des SAE locaux.
La CLI a huit verbes : serve, manifold, pack, experiment, config, template, lens et sae, couvrant la préparation reproductible, la distribution et le travail par lots. Les packs de manifolds peuvent être installés à partir de chemins locaux ou distribués comme dépôts de modèles Hugging Face, et un ZIP `.drowse` transporte une closure de manifold plus son template référencé. Un manifold PCA à deux nœuds ajusté peut être exporté comme GGUF de vecteur de contrôle llama.cpp. La découverte du navigateur hébergé n'accepte que les dépôts Hugging Face tagués `drowse-manifold` avec un seul `.drowse` racine et un `manifold.json` racine, résolvant vers un commit immuable et vérifiant le dépôt et la révision déclarés.
Un processus `drowse serve` expose quatre surfaces sur un seul port : l'interface Web, les `/v1/*` compatibles OpenAI, les `/api/*` compatibles Ollama, et une API native `/drowse/v1/*` pour les sessions, les arbres loom, les sondes, les manifolds, les templates, le cycle de vie et la relecture SAE/J-LENS, SSE, et les WebSockets jetons-plus-mesures. L'API Python est centrée sur `DrowseSession`, avec `extract`, `add_probe`, `generate`, `generate_stream`, `generate_batch`, `generate_sweep` et `score_choices`, ainsi que des aides de traçage pour notebooks.
La prise en charge des modèles inclut des chemins testés de bout en bout pour Qwen 2/3/3.5, Gemma 2/3/4, Mistral 3 et Ministral 3, Llama, GLM, gpt-oss et Talkie, avec des architectures supplémentaires câblées via une interface générique de couches résiduelles et des avertissements lorsqu'elles ne sont pas testées. Le README présente explicitement Drowse comme ciblant une machine locale de confiance ou un réseau de laboratoire plutôt qu'un service multi-locataires durci, et recommande des clés API, TLS, des limites de débit et l'isolation s'il est exposé au-delà d'un hôte de confiance. L'exécution Python des dépôts est désactivée par défaut et nécessite une adhésion explicite. L'état vit sous `~/.drowse/` (déplaçable via `$DROWSE_HOME`), tandis que les sauvegardes de conversation sont des fichiers JSON explicitement téléchargés par le navigateur plutôt que des sauvegardes automatiques. Le projet est sous licence AGPL-3.0-or-later et crédite Representation Engineering, repeng, l'extraction par différence de moyennes, le travail de Goodfire sur les manifolds, le cadre Assistant Axis d'Anthropic et la méthode J-lens de Gurnee et al.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.