Jevstiller destila Jev en un modelo local con una garantía estadística de desacuerdo
El proyecto responde en unos 15 ms sobre CPU lo que su modelo local tiene por seguro y delega el resto en la API, con una cota del 95% en lugar de un umbral elegido a ojo.

Una llamada a Jev tarda unos 300 ms, sea cual sea la carga: es una petición de red a un único proveedor. Para un proceso por lotes da igual; para un bucle de agente que decide, actúa y vuelve a decidir, o para el tick de un juego, esos 300 ms por paso son el presupuesto entero. Jevstiller se coloca delante de esa llamada, aprende un modelo local pequeño de las propias respuestas de Jev y contesta lo que tiene claro en unos 15 ms sobre CPU.
Lo que se presenta no es el modelo, que es minúsculo, sino el contrato: se fija un número, pongamos el 98%, y la herramienta devuelve la misma etiqueta que habría dado Jev en al menos esa proporción de peticiones. El texto explica qué hace falta para que esa frase sea cierta, por qué el método evidente para elegir el umbral no lo consigue y cuánto cuesta.
El modelo es un encoder de frases congelado, bge-small, 384 dimensiones, con ONNX Runtime sobre CPU, y encima una cabeza de regresión logística multinomial —una capa lineal y un softmax— entrenada con entropía cruzada contra la distribución completa de probabilidades de Jev sobre las etiquetas, no solo contra su etiqueta ganadora. Adam a batch completo y parada temprana. Son unos cientos de kilobytes que se entrenan en segundos, se reentrenan cada 2.000 respuestas nuevas de Jev y se prueban en sombra sobre tráfico real antes de promocionarse.
Dos piezas deciden cuándo puede contestar la cabeza: un detector de fuera de distribución por k vecinos más cercanos sobre los embeddings de entrenamiento y una política de enrutado —umbral de confianza más corte OOD— calibrada sobre una partición IID reservada.
La cota y su precio
Con c la proporción de peticiones que resuelve el modelo local y e la proporción de esas en las que se aparta de Jev, el acuerdo del sistema es A = 1 − c·e. Fijado un objetivo A*, el presupuesto es β = 1 − A*: la proporción de peticiones que pueden acabar con una respuesta que Jev no habría dado. Al 98%, dos de cada cien.
La receta habitual reserva datos, barre umbrales de confianza y se queda con el más laxo que parezca caber en el presupuesto. Sobre cinco tareas públicas y veinte particiones aleatorias por tarea se pasó del 2% en entre 6 y 12 de las 20, hasta un punto porcentual entero por encima. En Banking77 (77 intenciones) rompió el presupuesto en 9 de 20 y en CLINC150 (151 intenciones) en 12 de 20. Con cota, en ninguna de las dos, a costa de responder menos: la cobertura cae del 79,8% al 74,9% en la primera y del 84,3% al 78,9% en la segunda. No es un fallo de la receta: el desacuerdo medido es ruidoso y elegir el umbral más flojo que aprueba escoge justo aquel cuyo ruido apuntaba hacia abajo.
El montaje se apoya en cuatro decisiones, de las que el texto detalla tres. La primera es usar como pérdida la propia métrica del contrato: cada fila de calibración etiquetada por Jev puntúa 1 si el modelo local respondería y se equivocaría, 0 si no, y la media es exactamente el desacuerdo sobre todas las peticiones. Al ser una binomial, admite la cota exacta de Clopper–Pearson. La segunda recorre la rejilla de umbrales de más estricto a más laxo y para en el primer fallo, lo que controla el error al 5% sin corrección por comparaciones múltiples, como en Learn Then Test. La tercera: nada más toca las filas de calibración, el corte OOD sale del entrenamiento y la rejilla se fija antes de ver una sola fila.
Sobre cien particiones la cota se pasó una vez, con un 2,10%, que es lo esperable en un enunciado al 95%.
Conviene leer bien qué promete: acuerdo con Jev, no con la verdad. Si Jev se equivoca, el modelo local se equivoca igual. Y el precio de la garantía es cobertura, porque los números con cota responden menos peticiones. Los resultados se reproducen sin clave de API con bash experiments/bench.sh --no-record.

