SevenTnewSNoticias de IA y tecnología, explicadas

Investigación en IA · Benchmarks de salida estructurada

LFM2.5-350M ganó 14 puntos en JSON. YAML apenas se movió

Una ejecución de GRPO de 100 pasos elevó a LFM2.5-350M del 22,6% al 29,7% en el benchmark de esquemas de IFStruct. JSON ganó 14 puntos, YAML ganó 0,3, y el modo de fallo dominante apenas se movió.

Emmanuel Fabrice Omgbwa Yasse Asistido por IA

2026-09-17 · 5 min de lectura

LFM2.5-350M ganó 14 puntos en JSON. YAML apenas se movió

El salto de 7 puntos, y el 70% que todavía falla

La ejecución de referencia sirvió el LFM2.5-350M de LiquidAI a través de llama.cpp en BF16 y lo puso contra los 2.000 ítems de prueba de IFStruct. Superó 452 de ellos, es decir, el 22,6%, con una latencia media de 1.453ms. El blog de lanzamiento de IFStruct reporta un 21,1% para el mismo modelo, lo bastante cerca como para que el notebook reutilice la cifra local como su línea base fija: cada número a partir de este punto proviene de un stack de servicio idéntico, de modo que la comparación mide el entrenamiento y no la infraestructura.

Luego llegaron 100 pasos de GRPO sobre aproximadamente 500 muestras de entrenamiento. El checkpoint fusionado superó 594 de 2.000, es decir, el 29,7%, con 1.518ms. Eso es una ganancia de 7,1 puntos, y el modelo ajustado todavía devuelve algo que el evaluador rechaza alrededor de siete de cada diez veces.

El recuento de errores muestra dónde se ubican esos fallos. Ambas ejecuciones están dominadas por una sola queja: "required field missing", registrada 7.228 veces en el modelo base y 7.331 veces tras el entrenamiento. Los recuentos de ítems incorrectos subieron de 738 a 890, y las discrepancias de tipo, de 540 a 555. Dos tipos de error sí desaparecen. La ejecución base registró 317 bloques de código sin cerrar y 170 bloques de código faltantes; ninguno aparece en el recuento del modelo ajustado, que es el resultado que el diseño del prompt buscaba producir.

Por qué el cumplimiento de esquema tiene su propio marcador

La salida estructurada es una de las cosas más comunes que la gente pide a un modelo de lenguaje, y una de las que menos se miden por sí solas. La mayoría de las suites integran la validez en una puntuación más amplia de razonamiento o extracción, de modo que un modelo que produce la respuesta correcta en una forma no parseable puede obtener la misma puntuación que uno que nunca encontró la respuesta. IFStruct mide la forma. Evalúa si la salida es válida, parseable y coincide con el esquema solicitado, que es la pregunta que decide si un modelo puede conectarse a un sistema downstream.

El harness y el dataset son abiertos: el código está en el repositorio Liquid4All/ifstruct, y la versión 1.0 del dataset se publica como LiquidAI/ifstruct-v1.0. La fuente es explícita en que este notebook no es el pipeline detrás del modelo de RL del blog de IFStruct, y en que no intenta reproducir la puntuación publicada. Es una demostración de que el fine-tuning estrecho y específico de tarea puede empujar a un modelo pequeño hacia el rendimiento de uno mucho más grande.

Seis millones de parámetros entrenables en una GPU de nivel gratuito

Todo cabe en una GPU Colab o Kaggle de 16 GB de nivel gratuito. Los datos de entrenamiento provienen de nvidia/Nemotron-RL-instruction_following-structured_outputs, un conjunto que empareja cada prompt con un JSON Schema objetivo y un recuento de campos esperado; se usaron unas 500 muestras. El adaptador es LoRA con rango 16 y alpha 32 y, como LFM2.5 ejecuta una arquitectura híbrida de atención y convolución, apunta a nombres de módulos específicos de ese diseño: q_proj, k_proj, v_proj, out_proj, in_proj, w1, w2, w3. Eso entrena aproximadamente 6 millones de parámetros, alrededor del 1,66% del modelo.

La distribución de Nemotron no coincide con la de IFStruct, así que los prompts se alteraron primero. A un 40% se le añadió una instrucción de bloque de código delimitado. Un 20% separado, sin solaparse con ese grupo, se reescribió como tareas de array de nivel superior con un recuento de ítems obligatorio. El segundo cambio es de donde provienen después los resultados de lista desnuda.

Tres funciones de recompensa puntúan cada completion en una escala de 0 a 1. json_format_reward paga el crédito completo por la forma solicitada, 0,2 por una respuesta parseable en la forma incorrecta, y nada por una salida que no se pueda parsear. field_count_reward paga 1,0 por un recuento exacto de campos de nivel superior y decae linealmente a medida que el recuento se desvía. schema_validation_reward cuenta las violaciones de restricciones y condiciona el crédito parcial a cuántas claves obligatorias están presentes. Se combinan como una suma ponderada de 1,0, 0,5 y 2,0, lo que pone el doble de peso en la validez del esquema que en el formato por sí solo. El entrenamiento se ejecuta a temperatura 1,1 con una penalización KL de 0,01 frente al modelo de referencia.

El presupuesto de 16 GB también condiciona otras decisiones. Las completions están limitadas a 1.024 tokens, lo que no es generoso para JSON anidado, y el autor informa de que la fracción de completions truncadas se mantuvo cerca de cero durante toda la ejecución.

Las regresiones que se esconden dentro del promedio

Grupo de IFStructBaseAjustado con GRPOCambio
Global22,6%29,7%+7,1
JSON18,0%31,9%+13,9
YAML27,2%27,5%+0,3
Clave envolvente28,5%29,7%+1,2
Lista desnuda16,6%29,7%+13,1

Desglosado por formato solicitado, las tasas de aprobación de JSON casi se duplicaron mientras que YAML se mantuvo igual. Desglosado por estructura de nivel superior, las listas desnudas saltaron del 16,6% al 29,7% y los objetos con clave envolvente subieron ligeramente del 28,5% al 29,7%. Ese patrón sigue directamente la ampliación de los prompts, ya que la salida de lista desnuda es exactamente lo que se reescribió el 20% de los prompts de entrenamiento para enseñar.

Tipo de entidadBaseAjustado con GRPOCambio
Escena de guion17,4%37,0%+19,6
Ejemplos de parser de logs29,2%45,8%+16,6
Lote de tickets de soporte37,0%49,3%+12,3
Reserva de entradas de eventos45,8%57,9%+12,1
Segmento de transcripción de entrevista26,2%16,2%-10,0
Reseña de cámara7,2%6,0%-1,2

Los resultados a nivel de entidad oscilan con más fuerza en ambas direcciones. Las reseñas de cámara pasaron de seis aprobados a cinco sobre 83 ítems, y los segmentos de transcripción de entrevistas cayeron diez puntos. Los cinco tipos de entidad más débiles son los mismos cinco antes y después del entrenamiento, solo reordenados: recipe, gpu_review, camera_review, customer_email_thread y conference_schedule ocupan la parte baja de ambas ejecuciones. Recipe más que se duplicó, del 4,3% al 10,0%, y aun así termina cerca del suelo. Lo que sea que enseñó la señal de recompensa, no enseñó las tareas que ya eran las más difíciles.

La comparación que importa es la que traza la fuente. El modelo ajustado de 350M queda por debajo de Qwen3.5-2B, con un 33,15%, un modelo varias veces más grande. Cerrar la mayor parte de una brecha tan amplia con 6 millones de parámetros entrenables y 100 pasos es el argumento. La advertencia está justo al lado. IFStruct recompensa la forma, y la forma es lo que puede comprar una señal de recompensa estrecha. Los 7.331 campos obligatorios faltantes de la ejecución ajustada nunca fueron el objetivo.

Lo esencial de la tecnología en 3 minutos cada mañana

Un correo, cada día laborable, con lo que realmente importa en IA y tecnología.