Kev-27B
Resumen del modelo
Kev-27B es un modelo de decisión. Lee un documento (el estado) y un conjunto de preguntas tipadas sobre él, y devuelve una distribución de probabilidad calibrada sobre las opciones facilitadas con cada pregunta, en una sola pasada hacia adelante y sin generar texto. Está pensado para desarrolladores que clasifican, enrutan, triajan o comprueban documentos de hasta 64k tokens y que necesitan probabilidades sobre las que se pueda aplicar un umbral, por ejemplo para enviar los casos inciertos a revisión humana. Implementa la API pública System One de TypeSafe (POST /v1/systemone), así que el SDK de TypeSafe funciona contra él sin cambios. Esta tarjeta describe la versión 2, publicada el 2026-09-30: un fine-tuning de pesos completos de Qwen3.8-27B promediado con la versión 1.
Detalles del modelo
| Desarrollador | Jared Palmer (github.com/jaredpalmer/kev) |
| Tipo de modelo | Modelo de decisión: un backbone de modelo de lenguaje causal ejecutado solo prefill, con una cabeza de puntero sobre las opciones |
| Backbone | Qwen/Qwen3.8-27B (revisión 1d4bf0f2, la publicación postentrenada de Qwen): 64 capas, 48 Gated DeltaNet (atención lineal) y 16 de atención completa, tamaño oculto 5,120; se ajusta cada peso del backbone |
| Cabeza | Cabeza de puntero: dos proyecciones 5,120 → 256 puntúan el token de cierre de cada opción contra el token final de la pregunta; un softmax da las probabilidades |
| Parámetros | 25.6B en el backbone (la torre de visión, la cabeza LM y las capas de predicción multi-token no se cargan), 2.6M en la cabeza |
| Precisión | bf16 (un checkpoint de 51.3 GB); servido en bf16 |
| Contexto | Se sirven estados de hasta 65,536 tokens, más al menos 8,192 tokens por pregunta. Los estados de entrenamiento eran de como máximo 32,768 tokens. |
| Longitud de contexto validada | 65,536 tokens (véase Documentos largos) |
| Calibración | Una temperatura, T = 1.32, guardada en head.pt y aplicada al cargar |
| Idiomas | Inglés |
| Licencia | Apache-2.0 (pesos y cabeza); el modelo base es Apache-2.0 |
| Versión | v2 (Kev 1.0), publicada el 2026-09-30 en main de jaredpalmer/kev-27b |
| Versión anterior | v1, un adaptador LoRA de rango 16 sobre la misma base (T = 1.38), en la etiqueta v1-lora; su tarjeta es el README de esa etiqueta |
Entrada. Un estado (texto, o un objeto o array JSON renderizado como texto etiquetado) y cualquier número de preguntas con nombre, cada una de uno de tres tipos:
| Tipo | Opciones | Salida |
|---|---|---|
choice |
1–255 opciones con nombre, cada una con una descripción opcional | una probabilidad por opción, la opción más probable y una confianza |
score |
1–255 niveles ordenados | una probabilidad por nivel y el índice de nivel esperado |
noul |
sí / no, con descripciones opcionales | la probabilidad de sí |
Cada pregunta se responde como su propia fila que continúa desde el estado compartido, así que las preguntas no pueden influirse entre sí; el estado se calcula una vez y se guarda en caché.
Usos previstos
- Decisiones tipadas sobre documentos: clasificación, enrutamiento, triaje, elecciones de extracción, comprobaciones de política y elegibilidad, y juzgar una respuesta propuesta contra criterios enunciados.
- Flujos de trabajo que actúan según la confianza: automatizar los casos con confianza y poner en cola el resto, con umbrales congelados sobre una muestra etiquetada de la propia carga de trabajo del usuario.
- Un sustituto autoalojado y directo de un endpoint System One.
Usos fuera de alcance
- Generación de texto, chat, resumen o respuesta a preguntas abiertas. El modelo solo puntúa las opciones que se le dan.
- Decisiones totalmente automatizadas con consecuencias legales, médicas, financieras, laborales o similares para personas, sin revisión humana.
- Preguntas cuya respuesta depende de hechos que no están en el estado ni son conocimiento general (el modelo no puede buscar nada) y exámenes con mucho conocimiento (véase Limitaciones).
- Estados de más de 65,536 tokens, idiomas distintos del inglés y hardware menor que una GPU de la clase de 80 GB o un Mac con unos 96 GB de memoria (véase Limitaciones).
Cómo usarlo
Sírvelo con el repositorio de Kev en una sola GPU B200, H200 o H100 de 80 GB. Los pesos ocupan 51 GB y el servidor unos 65.5 GB residentes; un estado de 64k tokens alcanzó un pico de 87.1 GB en una H200 y uno de 32k tokens 78.7 GB, así que los estados más largos necesitan más de 80 GB.
git clone https://github.com/jaredpalmer/kev.git && cd kev && uv sync --extra serve
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-27b --port 8008 # v2 (this card)
uv run --extra serve python -m kev.serve --run jaredpalmer/kev-27b@v1-lora --port 8008 # v1
En Apple Silicon, el mismo comando sirve mediante MLX (elegido automáticamente), cargando los pesos bf16 completos tal como se guardaron, sin fusionar nada. Se espera que esta ruta funcione en un Mac de 96–128 GB, pero aún no se ha ejecutado a este tamaño (véase Limitaciones).
from typesafe_sdk import Choice, Noul, TypeSafeClient
client = TypeSafeClient(api_key="local", base_url="http://127.0.0.1:8008", model="kev-latest")
response = client.system_one(
state="I was charged twice for order 1182. Please refund one of the charges.",
questions={
"team": Choice(instructions="Which team should handle this?",
criteria={"billing": "Charges and refunds", "shipping": "Deliveries", "returns": "Exchanges"}),
"urgent": Noul(instructions="Does this need a reply today?"),
},
)
print(response.choices["team"].choice, response.nouls["urgent"].noul)
La temperatura calibrada se aplica por defecto; KEV_TEMPERATURE=1.0 devuelve las probabilidades sin calibrar. El servidor usa bf16, kernels fusionados de DeltaNet y CUDA graphs; KEV_DTYPE=fp32 selecciona la ruta exacta usada para la evaluación.
Datos de entrenamiento
Una época sobre un corpus privado de 145,840 registros (337,130 preguntas) con estados de como máximo 32,768 tokens. Solo su manifiesto es público (evals/sft-v2-r22/manifest.json en el repositorio de GitHub).
| Componente | Registros | Contenido y etiquetas |
|---|---|---|
| Corpus de Kev | 78,786 | El conjunto de entrenamiento de Kev-27B v1 (diez conjuntos de datos públicos de clasificación, registros generados de política y reglas, casos de aritmética de fechas y evidencia ausente, estados largos con hechos enterrados); las particiones de entrenamiento de las suites de habilidades (hard-v1), herramientas de desarrollo (devtools-v1) y quejas de consumo (documents-v1) de Kev; 24 conjuntos de datos públicos limitados a 500 registros cada uno; siete familias generadas (documentos largos, enrutamiento de herramientas, recuperación, intención, juicio por rúbrica, abstención, razonamiento numérico) |
| Familias de tareas con licencia | 24,000 | 119 familias de tareas de una colección multitarea pública, con licencias que permiten uso comercial y etiquetas nativas; la lista de familias no se publica |
| Estados largos | 3,200 | Estados del corpus de Kev embebidos en documentos de 8k–32k tokens; etiquetas heredadas exactamente |
| Documentos largos | 7,617 | Documentos ensamblados por código, etiquetas calculadas por código |
| Decisiones fuera de dominio | 7,312 | Decisiones generadas en dominios variados |
| Tono | 7,544 | Pares mínimos del mismo texto escrito con calma, frustración o enfado |
| Inyección de prompts | 2,699 | Reconocer inyección de prompts indirecta (defensivo) |
| Sesiones de agente | 4,875 | Preguntas sobre registros de sesiones de agente generados por código |
| PII | 4,152 | Clasificar datos personales insertados por código (todos ficticios) |
| Anclaje | 5,655 | Si una afirmación está respaldada por un documento |
Fuentes y etiquetas. Los conjuntos de datos públicos se listan en los metadatos de esta tarjeta; dos fuentes de herramientas de desarrollo, CodeReviewer y FlakeFlagger, proceden de Zenodo, y los diffs de CodeReviewer se conservan solo de proyectos con licencia permisiva. El texto y las etiquetas generados proceden de código o de modelos de pesos abiertos (GLM-5.3, DeepSeek-V4-Pro, Inkling, Mistral Large 3, gpt-oss-120b, MiMo-V2.6-Pro). Las etiquetas de quejas de consumo proceden de modelos de pesos abiertos, filtradas por jueces de modelos cerrados y adjudicación. No se usó ninguna salida de Jev (el modelo de decisión alojado de TypeSafe).
Licencias. Cuatro de los conjuntos de datos públicos limitados son share-alike: ARC (CC-BY-SA-4.0), HotpotQA (CC-BY-SA-4.0), Natural Questions (CC-BY-SA-3.0) y SNLI (CC-BY-SA-4.0); los demás son CC-BY-4.0, MIT o Apache-2.0. Las narrativas de quejas del CFPB son obras del gobierno de EE. UU. La licencia de GLM-5.3 es de estilo MIT con una condición sobre operadores de modelo-como-servicio muy grandes. Las licencias, revisiones y atribuciones por fuente se registran en los manifiestos de los componentes.
Cribado de contaminación. Antes del entrenamiento, cada registro se cribó contra 102 particiones de evaluación (76,549 elementos de referencia): cada suite congelada de Kev, el conjunto de evaluación privado, los elementos públicos de JevBench y las suites solo de evaluación de abajo. Se eliminó un registro por coincidencia exacta de cadena normalizada, similitud Jaccard de 8-gramas de palabras por encima de 0.2 o contención de al menos 0.5; se eliminaron 6,388 registros de entrenamiento.
Procedimiento de entrenamiento
- Fine-tuning de pesos completos. Una época desde
Qwen/Qwen3.8-27Ben 8 GPUs NVIDIA H200 (FSDP2). AdamW (β 0.9 / 0.999, weight decay 0.01) con pesos maestros y momentos fp32 sobre un backbone bf16; tasa de aprendizaje 2e-6 para el backbone y 1e-4 para la cabeza, esquema one-cycle con 10 % de calentamiento; norma del gradiente recortada en 1.0; 128 registros por paso de optimizador (8 por GPU, 2 pasos de acumulación), 1,140 pasos; semilla 0. La pérdida es entropía cruzada sobre las opciones de cada pregunta (objetivos suaves donde los datos los tienen). El orden de las opciones se mezcla y se insertan al azar opciones “none of the above” y distractores. Un cuarto de los registros choice con estados de como máximo 8,192 tokens también producen un par mínimo: la pregunta con una opción “none of the above”, una vez con la opción correcta presente y otra con ella eliminada. Cada estado se ejecuta una vez y sus preguntas ramifican desde él. - Promediado de pesos. Cada tensor del backbone es 0.85 × el peso ajustado + 0.15 × el peso de v1 (el adaptador LoRA de v1 fusionado en la base en fp32), calculado en fp32 y redondeado una vez a bf16. Se conserva la cabeza de puntero del modelo ajustado. La proporción se eligió entre seis mezclas (0.85 / 0.70 / 0.50, con cualquiera de las cabezas) sobre datos de desarrollo.
- Calibración. Una única temperatura, T = 1.32, que minimiza la log-verosimilitud negativa en 648 preguntas de conjuntos de datos reservados con los que ninguno de los padres se entrenó: 448 de la partición de calibración de transfer-r3 (seis conjuntos de datos públicos, QNLI, SciQ, TweetEval-offensive, PAWS, MMLU y Emotion, más dos familias reservadas de registros de política generados) y 200 preguntas de MMLU-Pro (desarrollo transfer-v9). No se usó ninguna partición de ningún corpus de entrenamiento, y una comprobación no encontró solapamiento con los datos de entrenamiento.
Evaluación
Metodología. Cada comparación es contra Kev-27B v1 con elementos idénticos, cada modelo a su propia temperatura servida. Las particiones de test se leyeron una vez para este checkpoint; el test transfer-v4 está bloqueado (se lee una vez por candidato) y se juzgó contra un listón fijado de antemano (precisión ≥ 0.886, Brier ≤ 0.165). Los intervalos son bootstraps emparejados del 95 % que remuestrean registros completos (2,000 remuestreos), así que las preguntas que comparten un estado se mueven juntas. Las diferencias están en puntos porcentuales (pp). Las suites:
- breadth-v1: 14 conjuntos de datos públicos reservados en cinco áreas (conocimiento, lenguaje, recuperación, herramientas, artes), nunca entrenados.
- tasksource-heldout-v1: 24 familias de tareas completas de la misma colección multitarea que el componente con licencia, reservadas del entrenamiento.
- hard-v1: registros de habilidades etiquetados programáticamente (políticas largas, compromisos, probabilidad, saltos múltiples, fechas y números, juicio, abstención); la partición de test reserva plantillas de generadores entrenados.
- devtools-v1: decisiones de herramientas de desarrollo de fuentes públicas con licencia comprobada (revisión de código, mensajes de commit, seguridad, tests inestables).
- documents-v1 / documents-v2: narrativas de quejas de finanzas de consumo de EE. UU. (CFPB); v2 es un conjunto de test reservado privado.
- transfer-v4: decisiones fuera de dominio de seis fuentes públicas nunca entrenadas más estructuras de política reservadas.
- longdoc-v1: contratos comerciales CUAD de hasta 64k tokens, y paquetes de acuerdos generados.
Los paneles destacados excluyen los elementos que una auditoría de etiquetas, completada antes de construir este checkpoint, encontró poco sólidos¹; cada exclusión elimina las mismas filas de ambos modelos.
Resultados frente a v1 (particiones de test).
| Panel (preguntas) | Kev-27B v2 | Kev-27B v1 | Δ [IC 95 %] |
|---|---|---|---|
| Conjuntos de datos públicos reservados, breadth-v1, 10 conjuntos de datos (2,489) | 0.832 | 0.820 | +1.2 [+0.3, +2.2] |
| Familias de tareas reservadas, tasksource-heldout-v1, 17 familias (2,024) | 0.795 | 0.743 | +5.3 [+3.7, +6.8] |
| Habilidades, herramientas de desarrollo y documentos, agrupados (2,795) | 0.889 | 0.800 | +8.9 [+7.5, +10.3] |
| hard-v1 (1,088) | 0.918 | 0.749 | +16.9 [+14.2, +19.8] |
| devtools-v1, fuentes auditadas (771) | 0.825 | 0.789 | +3.6 [+1.3, +5.9] |
| documents-v1 (936) | 0.908 | 0.869 | +4.0 [+2.1, +5.9] |
| documents-v2, reservado privado (953) | 0.921 | 0.881 | +4.0 [+2.0, +6.1] |
| breadth-v1, los 14 conjuntos de datos (3,089) | 0.757 | 0.748 | +0.8 [−0.1, +1.8] |
| Fuera de dominio, test bloqueado transfer-v4 (656): precisión | 0.8887 | 0.8963 | −0.8 [−2.0, +0.5] |
| Fuera de dominio, test bloqueado transfer-v4: Brier / cobertura con ≤ 5 % de error | 0.154 / 0.875 | 0.160 / 0.835 | – |
Comparación con otros modelos de decisión en el test breadth-v1 (los 14 conjuntos de datos), puntuado con el índice corregido por azar del Decision Index 0.2 de la comunidad (por conjunto de datos (puntuación − azar) / (1 − azar), promediado dentro de cada área, y luego 100 × la media de las cinco áreas). Jev se consultó a través de Vercel AI Gateway y AutoJev-27B (denis-pplx/autojev-27b, un fine-tuning de pesos completos de la misma base) a través de su propio servidor, una vez cada uno, con los mismos elementos.
| Kev-27B v2 | Kev-27B v1 | Jev | AutoJev-27B | |
|---|---|---|---|---|
| Índice [IC 95 %] | 52.3 [49.2, 55.4] | 50.2 [47.0, 53.2] | 54.0 [51.2, 57.0] | 50.0 [47.0, 53.3] |
Frente a v1, la diferencia de índice es +2.1 [−0.4, +4.6]. No se calculó ningún intervalo emparejado contra Jev.
Documentos largos (contratos CUAD en el test longdoc-v1, precisión / ECE por longitud del estado en tokens):
| Longitud del estado (preguntas) | Kev-27B v2 | Kev-27B v1 |
|---|---|---|
| menos de 8k (867) | 0.874 / 0.059 | 0.900 / 0.025 |
| 8k–16k (443) | 0.880 / 0.052 | 0.892 / 0.028 |
| 16k–32k (442) | 0.873 / 0.061 | 0.882 / 0.019 |
| 32k–64k (442) | 0.867 / 0.060 | 0.876 / 0.014 |
| todos (2,194) | 0.874 / 0.053 | 0.890 / 0.007 |
Diferencia de precisión sobre todas las longitudes: −1.6 [−3.0, −0.3]. En los paquetes de acuerdos generados (2,400 preguntas), ambos modelos puntúan 1.000.
Longitud de contexto. Longitud de contexto validada: 65,536 tokens, el límite de servicio, a partir del desarrollo longdoc-v1 (diferencia de precisión en CUAD emparejada respecto al cubo de 8k, pp [IC 95 %]: 16k +0.2 [−0.7, +1.2], 32k −0.2 [−1.2, +0.7], 64k −1.1 [−2.4, +0.0]; 445–447 preguntas cada uno). La regla es la aplicada a cada tamaño de Kev 1.0: la longitud validada es el tamaño nominal del cubo más grande desde 16,384 tokens hacia arriba tal que él, y todos los cubos entre él y 8,192, estén dentro de la tolerancia, es decir, que la diferencia de precisión en CUAD respecto al cubo de 8k, emparejada por el mismo contrato, repetición y pregunta, tenga un límite inferior del 95 % de al menos −3 pp, con cada registro respondido.
Calibración (error de calibración esperado, ECE, tal como se sirve; más bajo es mejor):
| Panel | Kev-27B v2 | Kev-27B v1 |
|---|---|---|
| test breadth-v1, 10 conjuntos de datos | 0.015 | 0.013 |
| test tasksource-heldout-v1 | 0.049 | 0.051 |
| test hard-v1 + devtools-v1 + documents-v1 | 0.014 | 0.027 |
| test bloqueado transfer-v4 | 0.019 | 0.018 |
| contratos CUAD, test longdoc-v1 | 0.053 | 0.007 |
En las 648 preguntas del ajuste, una validación cruzada de 5 pliegues con grupos disjuntos baja el ECE de 0.048 (bruto) a 0.038 (fuera de pliegue); los dos intervalos se solapan. El intervalo bootstrap del 90 % de la temperatura es [1.20, 1.45]. En sus extremos, los paneles destacados se mueven en direcciones opuestas: el ECE de breadth-v1 sube a 0.026 con T = 1.20 y el de tasksource-heldout-v1 a 0.067 con T = 1.45.
Otros resultados.
| Suite | Kev-27B v2 | Kev-27B v1 |
|---|---|---|
| desarrollo transfer-v4, precisión / Brier | 0.851 / 0.218 | 0.848 / 0.229 |
| Estados cortos, test transfer-r3 (1,150) | 0.858 | 0.879 |
| test devtools-v1, todas las fuentes (1,071) | 0.790 | 0.711 |
| desarrollo decision-v7 (la distribución de entrenamiento de v1) | 0.865 | 0.866 |
| MMLU-Pro, 10 opciones (desarrollo transfer-v9) | 0.675 | 0.665 |
| Elementos sin respuesta contestados con p ≥ 0.9 (más bajo es mejor) | 0.00 | 0.00 |
| SemIf (144) / WANLI-v2 (1,002) / TypeSafe (89 filas contestadas) | 0.965 / 0.756 / 0.854 | 0.972 / 0.745 / 0.865 |
| Dominios reservados de generadores entrenados, precisión / ECE: ood-v2 (4,988) | 0.956 / 0.020 | 0.944 / 0.044 |
| agents-ood-v1 (2,084) | 0.988 / 0.032 | 0.967 / 0.137 |
| guardrails-ood-v1 (4,949) | 0.984 / 0.010 | 0.944 / 0.079 |
El test transfer-r3 es un panel de estado corto de las mismas ocho fuentes reservadas que el conjunto de calibración; decision-v7 es la distribución de entrenamiento de v1; transfer-v9 contiene MMLU-Pro y elementos cuya evidencia decisiva se eliminó. SemIf (decisiones escritas a mano del proyecto SemIf), WANLI-v2 (pares de inferencia en lenguaje natural de la partición de test de WANLI) y TypeSafe (la selección de SemIf de casos de flujo de trabajo de TypeSafe) se informan solo: la auditoría de etiquetas los encontró demasiado pequeños, saturados o ruidosos para clasificar modelos. WANLI-v2 y TypeSafe se retiraron como evaluaciones el 2026-09-30 (cerca de un cuarto de los pares de WANLI fueron etiquetados de forma distinta por sus dos anotadores, con el gold puesto a una de las dos etiquetas; el gold de TypeSafe es la respuesta promediada de dos modelos frontera cerrados, con demasiado pocas preguntas para distinguir checkpoints); sus cifras se conservan como registro.
Paridad de servicio (H200, bf16 con kernels fusionados y CUDA graphs, 200 registros de desarrollo de decision-v7 / 280 preguntas):
| Comprobación | Resultado |
|---|---|
| Servido frente a la ruta de evaluación fp32, máx |Δp| | 0.0223, sin respuestas cambiadas |
| Una pregunta sola frente a la solicitud completa, máx |Δp| | 0.0039, sin respuestas cambiadas |
| Servido frente a evaluación en estados de 8k / 32k / 64k tokens, máx |Δp| | 0.0064 / 0.0095 / 0.0017, sin respuestas cambiadas |
| Tiempo de modelo con un estado de 64k tokens, estado nuevo / en caché | 9.4 s / 733 ms |
| Memoria residente / tiempo de carga desde una caché caliente | 65.5 GB / 17.6 s |
| Rendimiento con 1 / 64 clientes concurrentes | 21.1 / 36.4 solicitudes/s |
¹ Excluidos de los paneles destacados: cuatro conjuntos de datos de breadth-v1 (routerbench, cuyos estados carecen de la información pedida; cfcolor y humicroedit, en el nivel del azar para todos los sistemas; chessbench, en el suelo para todos los sistemas); siete familias de tasksource-heldout-v1 con etiquetas inválidas o irrecuperables (nombres privados); y dos tareas de devtools-v1 cuyas etiquetas no determina el estado (flakeflagger, tipo de cambio de commit). La fuente emotion de transfer-r3 (etiquetas de palabras clave distantes) se excluye del panel de estado corto en Limitaciones.
Limitaciones y compromisos
- Selección. El checkpoint publicado se eligió después de conocer los resultados de test de un candidato anterior y se confirmó en los mismos conjuntos de test. Trata los márgenes de test como optimistas.
- Sin ganancia en estados cortos. No es mejor que v1 en entradas cortas: −0.8 pp [−2.0, +0.5] en el test bloqueado transfer-v4, −0.9 pp [−2.0, +0.1] en el panel de desarrollo de estado corto (desarrollo transfer-v4 y test transfer-r3 sin
emotion), y −2.1 pp [−3.5, −0.8] en todo el test transfer-r3. - Peor y demasiado confiado en contratos largos. En CUAD es 1.6 pp menos preciso que v1 y su ECE es 2 a 4 veces el de v1 en todas las longitudes (0.053 frente a 0.007 en conjunto). Las preguntas de CUAD incluyen algunas etiquetas gold erróneas o disputadas, pero la brecha es consistente en todas las longitudes. Para revisión de contratos, reajusta la temperatura con tus propios documentos etiquetados (
python -m kev.calibrate) o usa v1. - Ganancias en distribución. Las particiones de entrenamiento de hard-v1, devtools-v1 y documents-v1 están en los datos de entrenamiento, y las suites ood-v2, agents-ood-v1 y guardrails-ood-v1 son dominios reservados de generadores que también produjeron datos de entrenamiento. Las ganancias ahí miden elementos reservados de familias entrenadas, no transferencia a tareas nuevas.
- Entrenamiento de la base desconocido. La base es la publicación postentrenada de Qwen; no se conoce su conjunto de datos de entrenamiento, así que no puede descartarse el solapamiento entre ella y cualquier evaluación.
- Conocimiento. El conocimiento lo fija la base: MMLU-Pro es 0.675, frente al 0.840 de Jev con los mismos elementos.
- Longitudes no entrenadas. Se evaluaron estados de 32k–64k tokens (longdoc-v1), pero no se entrenaron.
- Suite retirada. Una suite de tickets de soporte usada para seleccionar v1 (scienthoon) se retiró por poco sólida antes de construir v2, así que v2 no tiene resultado en ella. El padre ajustado no promediado de v2 puntuó 5.5 pp [−7.8, −3.2] por debajo de v1 ahí.
- Incertidumbre de la temperatura. El intervalo de la temperatura ([1.20, 1.45]) mueve el ECE de test hasta unos 0.02.
- Hardware. Necesita una GPU de centro de datos de la clase de 80 GB (más de 80 GB para los estados más largos). Apple Silicon mediante MLX: los pesos bf16 completos de v2 necesitan unos 51 GB más memoria de trabajo, así que un Mac de 64 GB está al límite y uno de 96–128 GB debería bastar. Esto se espera a partir de mediciones en modelos menores, aún no medidos en un Mac grande: cargar un Kev-4B de pesos completos por la misma ruta alcanzó un pico del tamaño de sus pesos (8.4 GB), y sus respuestas quedaron dentro de 0.015 de la ruta de evaluación fp32 (
runs/mlx-full-4b). v1 (el adaptador LoRA, etiquetav1-lora) se sirvió mediante MLX en un M5 Max de 128 GB por un contribuidor externo (PR #175): 0.849 de precisión en el desarrollo de transfer-v4 frente al 0.848 publicado, 52 GB en régimen estable y 97 GB en el pico mientras se fusionaba el adaptador.
Sesgo, riesgos y consideraciones éticas
- Las probabilidades calibradas pueden crear una confianza injustificada. La temperatura se ajustó sobre conjuntos de datos públicos reservados y no transfiere a todos los flujos de trabajo; mide la precisión y la calibración con una muestra etiquetada de tus propios datos antes de fijar umbrales.
- La precisión y la calibración cambian bajo un cambio de dominio (por ejemplo, en contratos largos). Vigila las tasas de error en producción en lugar de fiarte de los números anteriores.
- No lo uses para decisiones automatizadas trascendentales sobre personas sin revisión humana. Los sesgos del modelo base y de los datos de entrenamiento (incluidas las etiquetas producidas por otros modelos) no se miden.
- Los estados pueden contener datos personales o confidenciales. El autoalojamiento mantiene las entradas en tu propio hardware; el servidor está abierto a menos que se defina
KEV_API_KEY, así que aplica tu propia política de control de acceso y tratamiento de datos.
Cómputo
- Fine-tuning: 8 × NVIDIA H200 durante 16.2 h de tiempo de entrenamiento (129 horas-GPU), sin contar reinicios ni evaluación.
- Promediado de pesos: unos 6 minutos en CPU.
- Comprobaciones de evaluación y servicio: GPUs H200 individuales en Modal.
Procedencia y reproducibilidad
- Código, suites e informes de evaluación: github.com/jaredpalmer/kev. Números de publicación:
runs/release/kev-27b-r23.json(scripts/release_numbers.py --release kev-27b-r23). - Fine-tuning: ensayo de la ronda 22
r22-27b-lr2e6/00-trial-0(experiments/round22/lr2e6.json), pesos sha2563fa0182a…. Mezcla: brazo de la ronda 2327b-k-w85(scripts/interpolate_checkpoint.py --toward;interpolation.jsonen el repositorio del Hub), regla de selección y etapas de confirmación enexperiments/rounds/r23.json; resultados enruns/r23-readout/,runs/r23-verdict/,runs/r23-breadth-report/,runs/serving-27b-r23*/. - Fuente de la mezcla: v1 en
jaredpalmer/kev-27b@01b81998(ensayor6-27b-v2/01-trial-1), ahora etiquetav1-lora. - Pesos publicados sha256
d27af6ab2be16824166ac639907b4dba40979ff338599c2872721aa6c5072022;head.ptsha2567968f17b03479c1ef9d1c0f3ab8a15e31ecb441cf40691b07ee945ab554d45ad(T = 1.3195). Pesos publicados en el commit del Hub28be62e9. - Verificación: cargado de forma anónima desde el Hub en una H200, reprodujo los logits de la evaluación previa a la publicación exactamente en 252 de 252 filas de SemIf y 764 de 764 filas de desarrollo de transfer-v4 (
runs/release/kev-27b-r23-published.json,runs/release/kev-27b-r23-staging.json).
Cita
@misc{palmer2026kev27b,
title = {Kev-27B: a calibrated decision model on Qwen3.8-27B},
author = {Palmer, Jared},
year = {2026},
howpublished = {\url{https://huggingface.co/jaredpalmer/kev-27b}},
note = {Version 2, released 2026-09-30}
}
Contacto
Preguntas e incidencias: github.com/jaredpalmer/kev/issues.