Об этом проекте

Drowse — это локальная среда для механистической интерпретируемости больших языковых моделей. Она включает локальную панель управления, Python API и HTTP-сервер, совместимый с клиентами OpenAI и Ollama. Быстрый старт устанавливает из исходников в виртуальном окружении (`uv pip install -e .`) и запускается командой `drowse serve google/gemma-3-4b-it`, открывая панель управления на localhost:8000. При первом запуске загружается модель и подгоняются 17 встроенных концепт-зондов, сохраняемых в `~/.drowse/`. Поддерживаются CUDA и MPS на Apple Silicon, с опциональными дополнениями FlashAttention и квантования bitsandbytes. Включена размещённая браузерная версия в виде изолированного Svelte PWA для инференса WebGPU на устройстве. README откровенно описывает ограничения: блокировки времени выполнения и распространения помечены как проверенные, но проверки релиза не гарантируют стабильность GPU под нагрузкой модели; Gemma PT имеет числовое расхождение согласованных весов, а Qwen 3.5 всё ещё требует проверки согласованного квантования. Проверки устройств сообщают о производителе и архитектуре GPU, профилях блокировки с записанными потерями устройств и консервативно блокируют Windows Chromium на определённых адаптерах Intel поколения 9. WebGPU обязателен для инференса, без облачного запасного варианта или режима только на CPU; подсказки, разговоры, активации и подобранные артефакты остаются на устройстве. Веб-интерфейс организует разговоры в виде ветвящихся деревьев тем с возможностью перегенерации, сохранения/загрузки и стандартными элементами управления сэмплированием. Режим чата отображает шаблоны моделей как реплики со сворачиваемым мышлением и динамической обработкой ролей; сырой режим предоставляет единый буфер для базовых моделей. Токены могут подсвечиваться по оценкам зондов или неожиданности logprob; клик по токену открывает панель деталей с геометрией, логитами (включая ветвление токенов), SAE и видами J-lens. Инструменты сгруппированы во вкладки Subspace, Manifold, SAE и Lens, с дополнительными аналитическими средствами для подбора, слияния, установки и просмотра многообразий, оценки шаблонов с ограниченным выбором, управления стирингом и проверки состояния сервера. Концепты извлекаются как многообразия или подпространства: одномерное плоское подпространство — это стиринг-вектор, плоские подпространства более высокого ранга — ортогональные группы, а искривлённые многообразия подгоняют нелинейные поверхности. Встроенные зонды охватывают эпистемические, согласованностные, регистровые и культурные пары концептов, а также более крупные опциональные наборы для персон, эмоций и месяцев. Единый синтаксис выражений стиринга работает в Python, YAML, OpenAI, Ollama и нативном API, поддерживая сложение/вычитание, операторы сохранения/удаления общих компонентов, среднюю абляцию, выбор узлов многообразия, ограничения фаз токенов, ограничения окна декодирования и живые ворота зондов. При извлечении модель отвечает на базовые промпты для каждого концепта, затем скрытые состояния подгоняются к многообразию или подпространству с использованием метрики Махаланобиса для распределения слоёв и дискриминативного выбора слоёв. Мониторинговые показания включают подобранные координаты, долю подпространства, ближайшие узлы с мягким назначением и остатки вне поверхности для искривлённых многообразий. Якобиан-линза следует опубликованной работе о вербализуемом рабочем пространстве, а поддержка SAE может использовать опубликованные релизы SAELens или обучать локальные SAE. CLI имеет восемь глаголов: serve, manifold, pack, experiment, config, template, lens и sae, охватывающих воспроизводимую подготовку, распространение и пакетную работу. Пакеты многообразий можно устанавливать из локальных путей или распространять как репозитории моделей Hugging Face; ZIP-архив `.drowse` переносит одно замыкание многообразия вместе с его указанным шаблоном. Подобранное двухузловое PCA-многообразие может быть экспортировано как контрольный вектор GGUF для llama.cpp. Обнаружение в размещённом браузере принимает только репозитории Hugging Face с тегом `drowse-manifold`, содержащие единственный корневой `.drowse` и корневой `manifold.json`, разрешаясь в неизменяемый коммит и проверяя объявленные репозиторий и ревизию. Один процесс `drowse serve` предоставляет четыре интерфейса на одном порту: WebUI, совместимый с OpenAI `/v1/*`, совместимый с Ollama `/api/*` и нативный `/drowse/v1/*` API для сессий, деревьев loom, зондов, многообразий, шаблонов, жизненного цикла и воспроизведения SAE/J-LENS, SSE и WebSockets с токенами и измерениями. Python API сосредоточен вокруг `DrowseSession` с методами `extract`, `add_probe`, `generate`, `generate_stream`, `generate_batch`, `generate_sweep` и `score_choices`, а также вспомогательными функциями построения графиков для ноутбуков. Поддержка моделей включает сквозные протестированные пути для Qwen 2/3/3.5, Gemma 2/3/4, Mistral 3 и Ministral 3, Llama, GLM, gpt-oss и Talkie; дополнительные архитектуры подключаются через универсальный интерфейс остаточных слоёв с предупреждениями о непротестированности. README явно позиционирует Drowse как инструмент для доверенной локальной машины или лабораторной сети, а не для защищённого мультитенантного сервиса, и рекомендует API-ключи, TLS, ограничения скорости и изоляцию при привязке за пределами доверенного хоста. Выполнение Python из репозитория отключено по умолчанию и требует явного согласия. Состояние хранится в `~/.drowse/` (его можно переместить через `$DROWSE_HOME`), а сохранения разговоров представляют собой явно скачиваемые браузером JSON-файлы, а не автосохранения. Проект распространяется под лицензией AGPL-3.0-or-later и упоминает Representation Engineering, repeng, извлечение разности средних, работу Goodfire над многообразиями, фреймворк Assistant Axis от Anthropic и метод J-lens Гёрни и соавторов.