Kev-8B (Qwen3)
Generación anterior (Qwen3). Este checkpoint se mantiene como la opción rápida en Apple Silicon (su backbone solo de atención ejecuta la pasada empaquetada a plena velocidad en MPS). Para precisión y calibración, usa Kev-9B: en el test bloqueado puntúa 0.837 frente a 0.780 fuera de dominio contra este modelo con los mismos elementos. Pesos:
jaredpalmer/kev-8b.
Kev-8B es un modelo de decisión: un documento (el estado) y un conjunto de preguntas tipadas de entrada, una distribución de probabilidad por pregunta de salida, en una sola pasada hacia adelante. Sin generación de texto. Es un adaptador LoRA (r=16) más una cabeza de puntero sobre Qwen/Qwen3-8B-Base (revisión 49e3418f), que sirve el contrato público /v1/systemone de TypeSafe.
El Kev más preciso. El mejor checkpoint de cualquier tamaño bajo un protocolo congelado y con suma de comprobación: la mejor precisión en distribución, la mejor precisión fuera de dominio (0.796 en transfer-v4 dev, a seis puntos de Jev), el mejor razonamiento sobre reglas reservadas de cualquier Kev a 8B. La misma receta con dos semillas: 0.796 / 0.774; este checkpoint es la semilla seleccionada en la partición de desarrollo.
- Hub:
jaredpalmer/kev-8b(este repo; ensayov7-final/00-trial-0) - Código, suites y cada ensayo con hashes y bootstraps emparejados: github.com/jaredpalmer/kev —
PLAN.md(registro completo en la etiqueta de gitresearch-archive-2026-09-24),runs/leaderboard.md
Resultados (los mismos elementos congelados en cada fila)
| Kev-0.5B (prototipo) | Kev-0.6B | Kev-4B | Kev-8B | Jev | |
|---|---|---|---|---|---|
| precisión en distribución (decision-v4 dev, 1,200 q) | 0.712 | 0.801 | 0.854 | 0.863 | 0.845 |
| precisión fuera de dominio (transfer-v4 dev, 560 q) | 0.561 | 0.620 | 0.790 | 0.796 | 0.857 |
| Brier fuera de dominio | 0.50 | 0.536 | 0.328 | 0.337 | 0.211 |
| errores con confianza fuera de dominio (p ≥ 0.9 y errónea) | – | 10.8% | 8.2% | 9.9% | 3.7% |
| estructuras de política reservadas, ambos hermanos correctos | – | 0.08 | 0.73 | 0.69 | 0.86 |
| tasa de cambio por orden de opciones | 0.21 | 0.02 | 0.00 | 0.00 | 0.00 |
Precisión fuera de dominio por fuente (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 fechas de 3 niveles) 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.
Semillas: dos semillas en decision-v7: transfer 0.796 / 0.774, pares de reglas reservados 0.69 / 0.64 (Jev 0.86); este checkpoint es la semilla 0. Entrenado con decision-v7 (10k registros públicos + 896 registros de política sobre nueve familias de plantillas, incluidas cuatro familias de umbral Score ordinal + 1,680 registros de 60 estructuras de reglas aleatorias con negación en cualquier posición); los elementos de desarrollo/test son idénticos byte a byte a v4, así que cada número aquí es comparable con checkpoints anteriores.
Test bloqueado, leído una vez (runs/locked/kev-8b-v7-preview-ungated/): en distribución 0.870 (Brier 0.193), fuera de dominio 0.780 (Brier 0.327, errores con confianza 7.6%, pares reservados 0.62). Esta partición no se volverá a leer para este checkpoint.
Lo que aprendimos al construirlo
- La capacidad domina fuera de dominio. Con los ejemplos públicos y el presupuesto sintético igualados, 0.6B → 4B es +14–19 pp; 4B → 8B es +1–7 pp.
- El fine-tuning erosiona la capacidad base, y la tasa de aprendizaje lo controla. La base de 4B, zero-shot con lectura de letras, puntúa 0.688 en los mismos elementos MMLU y 0.787 en PAWS; la receta predeterminada (lr 2e-4) bajó a 0.60–0.66 / 0.56–0.71. Bajar la lr a 5e-5 recupera la mayor parte y es la mayor mejora de receta que encontramos; menos módulos objetivo de LoRA y rangos más pequeños ayudan menos.
- Más datos públicos de entrenamiento suben la precisión en distribución y bajan la transferencia a 4B (10k frente a 3.4k registros: −3 pp). Las fuentes de MCQ de conocimiento (ARC, OpenBookQA, CommonsenseQA) suben la precisión en distribución a 0.86 sin mover la transferencia.
- Los pares de política contrastivos programáticos enseñan las estructuras de reglas entrenadas (both-correct 0.85–1.0), pero transfieren a estructuras no vistas solo parcialmente (0.5–0.6 a 4B, 0.03–0.11 a 0.6B).
Límites conocidos
- El razonamiento sobre políticas reservadas (composiciones de reglas no vistas, aritmética de fechas con periodos de gracia) está lejos de Jev.
- Las preguntas con forma de producto sin análogo de entrenamiento no están garantizadas; mide con tus propias entradas.
- Las probabilidades fuera de dominio son utilizables pero no están calibradas (ECE bruto 0.128); una temperatura ajustada en distribución no transfiere.
- 8B fp32 necesita ~33 GB y no cabe en un Mac de 32 GB;
KEV_DTYPE=bf16(~17 GB) sí. El entrenamiento tardó ~70 min en una H100.
Entrenamiento
Suite congelada evals/v6/decision-v6 (bytes de desarrollo/test idénticos a v4): 13,000 registros públicos (1,000 por fuente: las diez fuentes de v4 más ARC-Challenge, OpenBookQA y CommonsenseQA) más dos brazos de política programáticos de 448 registros, dos épocas, LoRA r=16 sobre las proyecciones de atención y MLP, cabeza de puntero desde cero, entropía cruzada sobre la distribución de opciones, lr 5e-5 (OneCycle), lote efectivo 8, autocast bf16 con pesos maestros fp32, gradient checkpointing, una H100 (~70 min). Aumento: permutación de opciones, inserción de none-of-the-above, distractores, pares mínimos de none en el 25% de los registros Choice. No se usaron salidas de Jev para el entrenamiento.
Protocolo de evaluación
Las particiones de desarrollo seleccionan modelos; la partición de test bloqueada se lee como máximo una vez por candidato. Cada número lleva el hash de la suite, hashes del código y el commit de git en result.json. Véase PLAN.md en la etiqueta de git research-archive-2026-09-24 (“Evidence and corrections”) para las correcciones que hicimos a nuestras propias afirmaciones anteriores.
Uso
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-8b --port 8008 # KEV_DTYPE=bf16 on a 32 GB Mac
Cualquier cliente compatible con TypeSafe funciona: TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8008", model="kev-latest").
Licencia
Apache-2.0 para el adaptador y la cabeza; la base Qwen3 es Apache-2.0; los conjuntos de datos llevan sus propias licencias.