Kev-4B (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-4B (Qwen3.5): en el test bloqueado puntúa 0.832 frente a 0.806 fuera de dominio contra este modelo con los mismos elementos. Pesos:
jaredpalmer/kev-4b@qwen3.
Kev-4B 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-4B-Base, que sirve el contrato público /v1/systemone de TypeSafe.
El Kev recomendado. El mejor checkpoint de 4B bajo un protocolo congelado y con suma de comprobación tras ~40 ensayos de 4B controlados, y el primer Kev a menos de siete puntos de Jev fuera de dominio con los mismos elementos. La misma receta ejecutada con tres semillas: transfer 0.773 / 0.790 / 0.770; este checkpoint es la semilla seleccionada en la partición de desarrollo (nunca en el test bloqueado).
- Hub:
jaredpalmer/kev-4b, etiqueta de revisiónqwen3(ensayov7-rc3/01-trial-1); la revisión principal del repo ahora contiene el checkpoint Qwen3.5 - 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 | Jev | |
|---|---|---|---|---|
| precisión en distribución (decision-v4 dev, 1,200 q) | 0.712 | 0.801 | 0.854 | 0.845 |
| precisión fuera de dominio (transfer-v4 dev, 560 q) | 0.561 | 0.620 | 0.790 | 0.857 |
| Brier fuera de dominio | 0.50 | 0.536 | 0.328 | 0.211 |
| errores con confianza fuera de dominio (p ≥ 0.9 y errónea) | – | 10.8% | 8.2% | 3.7% |
| estructuras de política reservadas, ambos hermanos correctos | – | 0.08 | 0.73 | 0.86 |
| tasa de cambio por orden de opciones | 0.21 | 0.07 | 0.06 | 0.00 |
Precisión fuera de dominio por fuente (Kev-4B / Jev): QNLI 0.89 / 0.93, SciQ 0.99 / 0.99, TweetEval-offensive 0.75 / 0.81, PAWS 0.72 / 0.79, MMLU 0.65 / 0.90, Emotion 0.66 / 0.59, deadline (aritmética de fechas de 3 niveles) 0.53 / 0.93, (A and B) or not C 0.97 / 0.97, if A then not B else C 0.88 / 0.78.
Semillas: tres semillas en decision-v7: transfer 0.773 / 0.790 / 0.770, pares de reglas reservados 0.62 / 0.73 / 0.67 (Jev 0.86); este checkpoint es la semilla 1, seleccionada por precisión de transferencia en desarrollo. 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-4b-v7-preview-ungated/): en distribución 0.856 (Brier 0.211), fuera de dominio 0.806 (Brier 0.294, errores con confianza 6.6%, pares reservados 0.66). 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: en el ejemplo de los docs de TypeSafe (“two charges on my card” → Is there a billing problem?) este checkpoint responde 0.48 (Kev-8B 0.95, Kev-0.6B 0.97) mientras elige correctamente el motivo de devolución (talla incorrecta 0.53; Kev-8B 0.84; Kev-0.6B prefiere “none of the above” 0.58). Mide con tus propias entradas.
- Las probabilidades fuera de dominio son utilizables pero no están calibradas (ECE bruto 0.096); una temperatura ajustada en distribución no transfiere.
- 4B fp32 necesita ~16 GB; en un Mac de 32 GB usa
KEV_DTYPE=bf16. La latencia en una H100 es de ~45 ms por solicitud empaquetada; en un M5, varios cientos de ms.
Entrenamiento
Suite congelada evals/v4/decision-v4: 10,000 registros públicos (1,000 por fuente, diez fuentes) 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 (~40 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-4b --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.