Monarch v3: Paginação KV Inspirada no NES para Inferência de LLM 78% Mais Rápida

O que o Monarch v3 Faz
O Monarch v3 é uma implementação de código aberto de paginação de memória inspirada no NES para inferência de transformers que aborda o crescimento linear do cache KV com o comprimento da sequência. Em 4K tokens, a maior parte do cache KV fica inutilizada enquanto consome VRAM em precisão total.
Como Funciona
O sistema divide o cache KV em duas regiões:
- Região quente: Tokens recentes mantidos em precisão total
- Região fria: Tokens mais antigos comprimidos para ~20 bytes cada (vs 64-128 bytes quentes)
Quatro componentes trabalham juntos:
- Compressão TurboQuant: Quantiza KV para inteiros de 4 bits com codificação polar e correção residual, alcançando ~97% de redução de tamanho com ~0,3% de perda de perplexidade
- Eliminação por Janela Deslizante: Os N tokens mais recentes permanecem quentes por padrão, tokens antigos são comprimidos para armazenamento frio
- Promoção Ponderada por Atenção: Tokens com alta atenção retornam para a região quente com mecanismo adesivo para evitar trashing
- Trocas de Página: Pequenos lotes de tokens frios são materializados no acesso com loop de decodificação local substituindo matmul em lote
Resultados de Benchmark
Configuração: TinyLlama-1.1B fp16, 50 tokens gerados
- Padrão: 17,01 tok/s, 2112 MB VRAM
- Monarch-v3: 30,42 tok/s, 2131 MB VRAM, 512 tokens quentes, 1024 tokens frios
- Ganho: +78,7% de throughput, +0,9% VRAM
Loop de Decodificação Simplificado
for step in 1..100:
q = project_query(next_token)
# Computar atenção: apenas quente (rápido)
scores_hot = q @ kv_hot.T
# Acessar frio se alta atenção (raro)
if max(scores_hot) < threshold:
kv_cold_promoted = decompress(cold_pages)
scores_cold = q @ kv_cold_promoted.T
# Mover para quente no próximo passo
# Agregar, softmax, aplicar attn ...
# Eliminar tokens antigos de quente → frio
if len(kv_hot) > window_size:
evict_oldest_to_cold()Status Atual
- Implementação: Funcionando no Hugging Face Transformers com backend de cache personalizado
- Licença: Apache 2.0
- Artigo: Especificação técnica completa disponível
- Próximo: Fusão de kernel CUDA para descompressão fria planejada
Como Experimentar
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 \
--jsonLimitações
A abordagem depende da recência (tokens recentes = alta atenção), o que funciona para a maioria das tarefas, mas pode não funcionar para cargas de trabalho intensivas em recuperação. A extração de atenção está disponível em modelos base, mas não em variantes de chat; o fallback usa paginação apenas por janela.
📖 Read the full source: r/LocalLLaMA
👀 See Also

Sistema de Documentação Auto-Mantida Usando Blocos Delimitados para Deriva Zero
Um desenvolvedor criou um script bash que extrai dados estruturados diretamente dos arquivos-fonte e os injeta no CLAUDE.md por meio de blocos de comentários HTML delimitados, garantindo que a documentação permaneça sincronizada com o código sem manutenção manual.

Ktx: Uma Camada de Contexto Executável para Corrigir a Precisão do Agente de Dados
Ktx é uma camada de contexto executável de código aberto que torna agentes confiáveis na sua stack de dados, combinando ingestão de wikis em Markdown com definições semânticas em YAML.

Busca Semântica Local em Memória para Agentes OpenClaw Usando Embeddings Harrier
Execute um servidor de embeddings local com o modelo Harrier da Microsoft, exponha uma API compatível com Ollama e conecte a configuração memorySearch do OpenClaw para recuperação de memória semântica local sem serviços externos.

Claude Code LSP: Habilitando o Protocolo de Servidor de Linguagem para Navegação de Código Mais Rápida e Precis
O Claude Code é enviado sem o LSP ativado por padrão, mas ativá-lo transforma a navegação de código de buscas grep de 30-60 segundos para consultas de 50ms com 100% de precisão. A configuração requer uma flag descoberta através de uma issue do GitHub, em vez da documentação oficial.