Documentação

Kev-8B (Qwen3)

Geração anterior (Qwen3). Este checkpoint é mantido como a opção rápida em Apple Silicon (o seu backbone apenas de atenção corre a passagem direta empacotada a plena velocidade em MPS). Para precisão e calibração usa o Kev-9B: no teste bloqueado obtém 0.837 vs 0.780 fora da distribuição contra este modelo nos mesmos itens. Pesos: jaredpalmer/kev-8b.

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

O Kev mais preciso. O melhor checkpoint de qualquer tamanho sob um protocolo congelado e com somas de verificação: melhor precisão em distribuição, melhor precisão fora da distribuição (0.796 no transfer-v4 dev, a seis pontos do Jev), melhor raciocínio sobre regras reservadas de qualquer Kev a 8B. A mesma receita com duas sementes: 0.796 / 0.774; este checkpoint é a semente selecionada na partição de desenvolvimento.

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

Resultados (os mesmos itens congelados em cada linha)

Kev-0.5B (protótipo) Kev-0.6B Kev-4B Kev-8B Jev
precisão em distribuição (decision-v4 dev, 1,200 p) 0.712 0.801 0.854 0.863 0.845
precisão fora da distribuição (transfer-v4 dev, 560 p) 0.561 0.620 0.790 0.796 0.857
Brier fora da distribuição 0.50 0.536 0.328 0.337 0.211
erros confiantes fora da distribuição (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 da ordem das opções 0.21 0.02 0.00 0.00 0.00

Precisão fora da distribuição 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 de 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 em decision-v7: transfer 0.796 / 0.774, pares de regras reservados 0.69 / 0.64 (Jev 0.86); este checkpoint é a semente 0. Treinado em decision-v7 (10k registos públicos + 896 registos de política em nove famílias de templates, incluindo quatro famílias ordinais de limiar Score + 1,680 registos de 60 estruturas de regras aleatórias com negação em qualquer posição); os itens de desenvolvimento/teste são idênticos byte a byte aos da v4, por isso cada número aqui é comparável com checkpoints anteriores.

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

O que aprendemos a construí-lo

  • A capacidade domina fora da distribuição. Com exemplos públicos e orçamento sintético mantidos iguais, 0.6B → 4B é +14–19 pp; 4B → 8B é +1–7 pp.
  • O ajuste fino erode a capacidade da base, e a taxa de aprendizagem controla-o. A base de 4B, zero-shot com uma leitura por letras, obtém 0.688 nos mesmos itens MMLU e 0.787 em PAWS; a receita predefinida (lr 2e-4) treinou até 0.60–0.66 / 0.56–0.71. Baixar a lr para 5e-5 recupera a maior parte e é a maior melhoria de receita que encontrámos; menos módulos alvo de LoRA e ranks menores ajudam menos.
  • Mais dados de treino públicos aumentam a precisão em distribuição e baixam a transferência a 4B (10k vs 3.4k registos: −3 pp). Fontes de MCQ de conhecimento (ARC, OpenBookQA, CommonsenseQA) elevam a precisão em distribuição para 0.86 sem mexer na transferência.
  • Os pares de política contrastivos programáticos ensinam as estruturas de regras treinadas (ambos-corretos 0.85–1.0) mas transferem para estruturas não vistas apenas parcialmente (0.5–0.6 a 4B, 0.03–0.11 a 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 do Jev.
  • Perguntas com forma de produto sem análogo de treino não são garantidas; mede nas tuas próprias entradas.
  • As probabilidades fora da distribuição são utilizáveis mas não calibradas (ECE em bruto 0.128); uma temperatura ajustada em distribuição não se transfere.
  • O 8B em fp32 precisa de ~33 GB e não cabe num Mac de 32 GB; em KEV_DTYPE=bf16 (~17 GB) cabe. O treino demorou ~70 min numa H100.

Treino

Suite congelada evals/v6/decision-v6 (bytes de desenvolvimento/teste idênticos aos da v4): 13,000 registos 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 registos, duas épocas, LoRA r=16 nas projeções de atenção e MLP, cabeça de ponteiro de raiz, entropia cruzada sobre a distribuição das opções, lr 5e-5 (OneCycle), lote efetivo 8, autocast bf16 com pesos mestres fp32, gradient checkpointing, uma H100 (~70 min). Aumento: permutação das opções, inserção de nenhuma-das-anteriores, distratores, pares mínimos de “nenhuma” em 25% dos registos Choice. Não foi usada nenhuma saída do Jev para o treino.

Protocolo de avaliação

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

Utilização

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 a 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 têm as suas próprias licenças.