otimizacao-de-modelos-generativos-locais
Otimiza engines de inferencia local (llama.cpp) com quantizacao Q4_K_M, KV cache e interface assincrona para latencia minima.
SKILL.md.agents/skills/otimizacao-de-modelos-generativos-locais/SKILL.md
GitHubotimizacao-de-modelos-generativos-locais
Descrição
A skill otimizacao-de-modelos-generativos-locais especifica as técnicas de otimização de engines de inferência para modelos de linguagem generativos rodando diretamente no hardware do escritor (CPU/GPU do laptop ou desktop). Ela visa reduzir a pegada de memória VRAM, eliminar latências de contexto redundantes via caching e garantir que a interface do editor permaneça responsiva enquanto a IA processa sugestões em background.
Quando usar
Gatilhos concretos e observáveis:
- A equipe de engenharia configura ou atualiza o motor local de inferência (llama.cpp, Triton) para o aplicativo desktop.
- O usuário ativa um novo modelo de linguagem no painel de configurações do assistente de IA.
- O sistema detecta latência de geração superior ao limite aceitável e aciona perfis de otimização.
Quando NÃO usar:
- Para modelos de IA que rodam exclusivamente na nuvem (aplicar otimizações de servidor remoto nesse contexto).
- Para fine-tuning ou treinamento de modelos (que são operações offline distintas da otimização de inferência).
Pré-requisitos
- Biblioteca de inferência local compatível: llama.cpp (CPU/GPU) ou ONNX Runtime.
- Modelo de linguagem base em formato GGUF (quantização INT4/INT8).
- Suporte a Web Workers ou threads de background no aplicativo (para execução assíncrona).
Processo (passo a passo executável)
- Quantização INT4 (Q4_K_M):
- Selecionar a variante quantizada Q4_K_M do modelo-alvo (ex:
Qwen-2.5-7B-Instruct-Q4_K_M.gguf). - Verificar que a pegada de memória VRAM não excede
4.5 GBpara permitir execução em GPUs populares de 6 GB (ex: RTX 3060, RTX 4060).
- Selecionar a variante quantizada Q4_K_M do modelo-alvo (ex:
- Ativação de Prompt Caching (KV Cache):
- Configurar o llama.cpp com a flag de cache de chave-valor KV (
--cache-type q8_0) para manter os tensores de atenção do prompt de sistema (worldbuilding e fichas de personagens) processados em memória entre chamadas. - Definir o número de tokens de cache alocados:
n_ctx = 8192(suficiente para manter o contexto de 3 a 5 capítulos).
- Configurar o llama.cpp com a flag de cache de chave-valor KV (
- Configuração de Parâmetros de Decodificação Literária:
- Ajustar os parâmetros de sampling do modelo para maximizar a qualidade criativa literária:
temperature = 0.80(diversidade controlada; evitar < 0.5 que resulta em textos planos e repetitivos).top_p = 0.90(núcleo de probabilidade — filtro de vocabulário).repeat_penalty = 1.10(penalidade de repetição de tokens para evitar loops de frases idênticas).
- Ajustar os parâmetros de sampling do modelo para maximizar a qualidade criativa literária:
- Interface Assíncrona de Exibição (Translúcida):
- Disparar a geração de texto em um Web Worker ou thread separada.
- Enquanto o modelo gera tokens, exibir o texto sendo construído com opacidade reduzida (
0.40) no painel de sugestão, indicando visualmente que está em processamento. - Ao concluir a geração completa, aplicar transição de opacidade para
1.0e habilitar os botões de ação (Aceitar/Rejeitar/Refinar).
Parâmetros e configuração
MODEL_QUANT_FORMAT: Formato de quantização GGUF usado. Padrão:"Q4_K_M".KV_CACHE_TOKEN_LIMIT: Tamanho máximo do contexto no cache KV em tokens. Padrão:8192.GEN_TEMPERATURE: Temperatura de amostragem do decodificador. Padrão:0.80.GEN_REPEAT_PENALTY: Penalidade de repetição de tokens consecutivos. Padrão:1.10.
Armadilhas e como evitá-las
- Armadilha: Saturação de VRAM por Recálculo de Contexto: sem o prompt caching ativo, o modelo precisa re-processar os tensores de atenção do contexto inteiro (fichas de personagens, worldbuilding, capítulos anteriores) a cada nova chamada de geração de parágrafo. Isso eleva o TTFT para acima de 10 segundos, tornando a experiência de co-escrita inutilizável. Mitigação: Habilitar o caching de KV no llama.cpp desde a inicialização do motor. Manter o bloco de contexto de sistema (fichas, worldbuilding) sempre no início do prompt (prefixo estável) para que o sistema de caching possa reutilizá-lo eficientemente entre chamadas consecutivas (LiteraryBench, 2026).
Critérios de validação (Definition of Done)
- O TTFT médio para geração de parágrafos com contexto literário completo é inferior a 300ms com o cache KV ativo.
- A pegada de memória VRAM do modelo quantizado em INT4 (Q4_K_M) não excede 4.5 GB, confirmada por monitoramento no painel de desempenho do aplicativo.
Fundamentação científica
- Self-Refine (2023) - Self-Refine: Iterative Refinement with Self-Feedback - NeurIPS 2023
- LiteraryBench (2026) - LiteraryBench: A Benchmark for AI-Assisted Literary Writing - arXiv 2026
Requisitos do projeto relacionados
- RF-81 (sugestões inline)
- RF-180 (reescrever com estilo)
Maturidade e riscos de adoção
Nível: Consolidada. A quantização Q4_K_M e o KV caching em llama.cpp são técnicas amplamente testadas e estáveis com retorno mensurável claro em latência e footprint de memória.
Exemplos
Configuração do motor llama.cpp:
./llama-server \
--model Qwen-2.5-7B-Instruct-Q4_K_M.gguf \
--n-gpu-layers 35 \
--ctx-size 8192 \
--cache-type q8_0 \
--temp 0.80 \
--repeat-penalty 1.10 \
--top-p 0.90
Resultado esperado:
- VRAM utilizada: ~4.1 GB
- TTFT com KV cache quente: ~180ms Caso de falha conhecido: O usuário ativar o modelo sem a flag de cache KV e o sistema demorar 12 segundos para gerar o primeiro token de sugestão enquanto o autor tenta digitar.