Documentação

Kev-8B (Qwen3)

Geração anterior (Qwen3). Este checkpoint é mantido como a opção rápida no Apple Silicon (seu backbone somente de atenção executa a passada empacotada em velocidade máxima no MPS). Para acurácia e calibração, use o Kev-9B: no teste bloqueado ele marca 0.837 contra 0.780 fora do domínio em relação a este modelo nos mesmos itens. Pesos: jaredpalmer/kev-8b.

O Kev-8B é um modelo de decisão: um documento (o estado) e um conjunto de perguntas tipadas na entrada, uma distribuição de probabilidade por pergunta na saída, em uma única passada direta. Sem geração de texto. É um adaptador LoRA (r=16) mais uma cabeça de ponteiro sobre Qwen/Qwen3-8B-Base (revisão 49e3418f), que atende o contrato público /v1/systemone da TypeSafe.

O Kev mais acurado. O melhor checkpoint de qualquer tamanho sob um protocolo congelado e verificado por checksum: melhor acurácia dentro da distribuição, melhor acurácia fora do domínio (0.796 no desenvolvimento do transfer-v4, seis pontos de Jev), melhor raciocínio sobre regras reservadas de qualquer Kev em 8B. Mesma receita em duas sementes: 0.796 / 0.774; este checkpoint é a semente selecionada na partição de desenvolvimento.

  • Hub: jaredpalmer/kev-8b (este repositório; trial v7-final/00-trial-0)
  • Código, suítes, cada trial com hashes e bootstraps pareados: github.com/jaredpalmer/kev — PLAN.md (registro completo na tag git research-archive-2026-09-24), runs/leaderboard.md

Resultados (os mesmos itens congelados para cada linha)

Kev-0.5B (protótipo) Kev-0.6B Kev-4B Kev-8B Jev
acurácia dentro da distribuição (decision-v4 dev, 1,200 q) 0.712 0.801 0.854 0.863 0.845
acurácia fora do domínio (transfer-v4 dev, 560 q) 0.561 0.620 0.790 0.796 0.857
Brier fora do domínio 0.50 0.536 0.328 0.337 0.211
erros confiantes fora do domínio (p ≥ 0.9 e errado) – 10.8% 8.2% 9.9% 3.7%
estruturas de política reservadas, ambos os irmãos corretos – 0.08 0.73 0.69 0.86
taxa de inversão de ordem de opções 0.21 0.02 0.00 0.00 0.00

Acurácia fora do domínio por fonte (Kev-8B / Jev): QNLI 0.91 / 0.93, SciQ 1.00 / 0.99, TweetEval-offensive 0.79 / 0.81, PAWS 0.78 / 0.79, MMLU 0.70 / 0.90, Emotion 0.56 / 0.59, deadline (aritmética de datas em 3 níveis) 0.60 / 0.93, (A and B) or not C 0.91 / 0.97, if A then not B else C 0.59 / 0.78.

Sementes: duas sementes no decision-v7: transfer 0.796 / 0.774, pares de regras reservadas 0.69 / 0.64 (Jev 0.86); este checkpoint é a semente 0. Treinado no decision-v7 (10k registros públicos + 896 registros de política em nove famílias de template, incl. quatro famílias ordinais de limiar de Score + 1,680 registros de 60 estruturas de regra aleatórias com negação em qualquer posição); os itens de desenvolvimento/teste são byte a byte idênticos aos da v4, então todo número aqui é comparável com checkpoints anteriores.

Teste bloqueado, lido uma vez (runs/locked/kev-8b-v7-preview-ungated/): dentro da distribuição 0.870 (Brier 0.193), fora do domínio 0.780 (Brier 0.327, erros confiantes 7.6%, pares reservados 0.62). Esta partição não será lida de novo para este checkpoint.

O que aprendemos ao construí-lo

  • A capacidade domina fora do domínio. Com exemplos públicos e orçamento sintético iguais, 0.6B → 4B é +14–19 pp; 4B → 8B é +1–7 pp.
  • O ajuste fino corrói a capacidade da base, e a taxa de aprendizado controla isso. A base 4B, zero-shot com uma leitura por letra, marca 0.688 nos mesmos itens de MMLU e 0.787 no PAWS; a receita padrão (lr 2e-4) treinou até 0.60–0.66 / 0.56–0.71. Baixar o lr para 5e-5 recupera a maior parte disso e é a maior melhoria de receita que encontramos; menos módulos-alvo de LoRA e ranks menores ajudam menos.
  • Mais dados públicos de treinamento elevam a acurácia dentro da distribuição e reduzem a transferência em 4B (10k vs 3.4k registros: −3 pp). Fontes de MCQ de conhecimento (ARC, OpenBookQA, CommonsenseQA) elevam a acurácia dentro da distribuição para 0.86 sem mover a transferência.
  • Pares de política contrastivos programáticos ensinam as estruturas de regra treinadas (ambos corretos 0.85–1.0), mas transferem para estruturas não vistas apenas parcialmente (0.5–0.6 em 4B, 0.03–0.11 em 0.6B).

Limites conhecidos

  • O raciocínio sobre políticas reservadas (composições de regras não vistas, aritmética de datas com períodos de carência) está longe de Jev.
  • Perguntas em formato de produto, sem análogo de treinamento, não são garantidas; meça nas suas próprias entradas.
  • As probabilidades fora do domínio são utilizáveis, mas não calibradas (ECE bruta 0.128); uma temperatura ajustada dentro do domínio não transfere.
  • 8B em fp32 precisa de ~33 GB e não cabe em um Mac de 32 GB; KEV_DTYPE=bf16 (~17 GB) cabe. O treinamento levou ~70 min em uma H100.

Treinamento

Suíte congelada evals/v6/decision-v6 (bytes de desenvolvimento/teste idênticos aos da v4): 13,000 registros públicos (1,000 por fonte: as dez fontes da v4 mais ARC-Challenge, OpenBookQA, CommonsenseQA) mais dois braços de política programáticos de 448 registros, duas épocas, LoRA r=16 nas projeções de atenção e MLP, cabeça de ponteiro do zero, entropia cruzada sobre a distribuição das opções, lr 5e-5 (OneCycle), lote efetivo 8, autocast bf16 com pesos mestres em fp32, gradient checkpointing, uma H100 (~70 min). Aumento: permutação de opções, inserção de none-of-the-above, distratores, pares mínimos de none em 25% dos registros de Choice. Nenhuma saída de Jev foi usada no treinamento.

Protocolo de avaliação

As partições de desenvolvimento selecionam modelos; a partição de teste bloqueada é lida no máximo uma vez por candidato. Todo número carrega o hash da suíte, os hashes do código e o commit do git em result.json. Veja o PLAN.md na tag git research-archive-2026-09-24 (“Evidence and corrections”) para as correções que fizemos às nossas próprias afirmações anteriores.

Uso

uv run --extra serve python -m kev.serve --run jaredpalmer/kev-8b --port 8008      # KEV_DTYPE=bf16 on a 32 GB Mac

Qualquer cliente compatível com TypeSafe funciona: TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8008", model="kev-latest").

Licença

Apache-2.0 para o adaptador e a cabeça; a base Qwen3 é Apache-2.0; os conjuntos de dados carregam suas próprias licenças.