Monarch v3: Вдохновленная NES система постраничной организации KV-памяти для ускорения вывода LLM на 78%

✍️ OpenClawRadar📅 Опубликовано: 13 апреля 2026 г.🔗 Source
Monarch v3: Вдохновленная NES система постраничной организации KV-памяти для ускорения вывода LLM на 78%
Ad

Что делает Monarch v3

Monarch v3 — это реализация с открытым исходным кодом NES-вдохновленного разбиения памяти на страницы для вывода трансформеров, которая решает проблему линейного роста KV-кэша с увеличением длины последовательности. К 4K токенам большая часть KV-кэша остаётся неиспользуемой, но при этом занимает VRAM в полной точности.

Как это работает

Система разделяет KV-кэш на две области:

  • Горячая область: Недавние токены хранятся в полной точности
  • Холодная область: Старые токены сжимаются до ~20 байт каждый (против 64-128 байт горячих)

Четыре компонента работают вместе:

  • Сжатие TurboQuant: Квантует KV в 4-битные целые числа с полярным кодированием и коррекцией остатков, достигая ~97% уменьшения размера с потерей перплексии ~0.3%
  • Скользящее окно вытеснения: Последние N токенов остаются горячими по умолчанию, старые токены сжимаются в холодное хранилище
  • Продвижение на основе внимания: Токены с высоким вниманием возвращаются в горячую область с липким механизмом для предотвращения трэшинга
  • Свопинг страниц: Небольшие пакеты холодных токенов материализуются при доступе с локальным циклом декодирования вместо пакетного matmul

Результаты тестирования

Настройка: TinyLlama-1.1B fp16, 50 сгенерированных токенов

  • Стандартный: 17.01 токенов/с, 2112 МБ VRAM
  • Monarch-v3: 30.42 токенов/с, 2131 МБ VRAM, 512 горячих токенов, 1024 холодных токенов
  • Прирост: +78.7% пропускной способности, +0.9% VRAM
Ad

Упрощённый цикл декодирования

for step in 1..100:
    q = project_query(next_token)
    # Вычисление внимания: только горячие (быстро)
    scores_hot = q @ kv_hot.T
    # Доступ к холодным при высоком внимании (редко)
    if max(scores_hot) < threshold:
        kv_cold_promoted = decompress(cold_pages)
        scores_cold = q @ kv_cold_promoted.T
        # Переместить в горячие для следующего шага
    # Агрегация, softmax, применение внимания ...
    # Вытеснение старых токенов из горячих → холодные
    if len(kv_hot) > window_size:
        evict_oldest_to_cold()

Текущий статус

  • Реализация: Работает на Hugging Face Transformers с пользовательским бэкендом кэша
  • Лицензия: Apache 2.0
  • Статья: Полная техническая спецификация доступна
  • Далее: Запланировано слияние CUDA ядер для холодной декомпрессии

Как попробовать

git clone https://github.com/JohannaWeb/Monarch.git
cd Monarch
pip install -r requirements.txt
python train_tinyllama_fp16.py
python src/benchmark_monarch.py \
    --model models/tinyllama_fp16 \
    --mode both \
    --max-new-tokens 100 \
    --promotion-threshold 0.15 \
    --sticky-threshold 3 \
    --json

Ограничения

Подход основан на недавности (недавние токены = высокое внимание), что работает для большинства задач, но может не подходить для рабочих нагрузок с интенсивным поиском. Извлечение внимания доступно в базовых моделях, но не в чат-вариантах; запасной вариант использует только оконное разбиение на страницы.

📖 Читать полный источник: r/LocalLLaMA

Ad

👀 Смотрите также

Qwen3.5-35B-A3B-UD-Q6_K_XL Протестировано в производственных рабочих процессах разработки
Инструменты

Qwen3.5-35B-A3B-UD-Q6_K_XL Протестировано в производственных рабочих процессах разработки

Разработчик протестировал модель Qwen3.5-35B-A3B-UD-Q6_K_XL на нескольких реальных клиентских проектах, достигнув стабильной производительности с показателями 1504pp2048 и 47.71 tg256, а также скоростью генерации токенов 80tps на одной видеокарте.

OpenClawRadar
LumaBrowser: Браузер на Electron передает парсинг DOM локальным LLM для AI-агентов
Инструменты

LumaBrowser: Браузер на Electron передает парсинг DOM локальным LLM для AI-агентов

LumaBrowser — это браузер на основе Electron, который перекладывает парсинг DOM на локальные LLM через совместимые с OpenAI конечные точки, помогая автономным агентам избежать обработки сырого HTML. Он использует такие модели, как варианты Qwen 2.5, для идентификации элементов интерфейса и возвращает CSS-селекторы.

OpenClawRadar
CAP: Плагин для строки состояния Claude Code, устанавливаемый через /plugin install
Инструменты

CAP: Плагин для строки состояния Claude Code, устанавливаемый через /plugin install

CAP (Claude Allowance Pulse) — это плагин для строки состояния Claude Code, который устанавливается через /plugin install без использования npm, curl или jq. Он отображает использование модели, сессионные и недельные лимиты, использование контекстного окна и стоимость сессии в терминале.

OpenClawRadar
Интеграция Claude с Canva: практический рабочий процесс для генерации дизайна
Инструменты

Интеграция Claude с Canva: практический рабочий процесс для генерации дизайна

Коннектор Claude к Canva экспортирует редактируемые проекты Canva со структурированными макетами, а не плоскими изображениями. В посте описан рабочий процесс от запроса до готового карусели за 12-15 минут, включая настройку, режим High Fidelity и честные ограничения.

OpenClawRadar