MañanaHerramientas para devsPara tener en cuenta

Hugging Face propone contratos en CPU para detectar regresiones silenciosas en Transformers

Los Model Integration Contracts combinan modelos achicados con baselines revisados por personas. En una repetición, uno marcó un bug de entrenamiento de UMT5 que pasó casi dos meses en main.

Promptea Editorial4 min de lectura

Hugging Face publicó este martes una propuesta de Model Integration Contracts (MICs), contratos de integración de modelos: una forma de empaquetar tests de integración chicos y repetibles para los modelos de la biblioteca Transformers, de modo que puedan correr en runners comunes de CPU en cada pull request. El post del anuncio, firmado por Tarek Ziadé, remite a un repositorio open source transformers-mic que incluye la herramienta de línea de comandos `tmic`, un generador de fixtures y un runner de tests.

El punto de partida es un bug que nadie detectó. Según Hugging Face, el 30 de julio de 2026 Transformers activó la atención por producto escalar de PyTorch (SDPA) para T5 y, como efecto colateral, el decoder de UMT5 podía atender a tokens futuros durante el entrenamiento. O sea, el modelo veía la respuesta que tenía que predecir. No hubo ningún crash, y el bug quedó en la rama principal casi dos meses, hasta que el 28 de septiembre entró la corrección.

Qué tiene un contrato

Un MIC tiene tres partes. Un fixture es una copia achicada de un checkpoint real: menos capas y más angostas, pero con todos los tipos de capa y con los archivos del tokenizer y del procesador copiados sin cambios. Un usage path es Markdown ejecutable que hace algo que los usuarios hacen de verdad, como generar texto o correr un paso de entrenamiento. Los baselines son las salidas registradas al correr ese usage path, revisadas por una persona. El contrato se cumple si el usage path sigue reproduciendo los baselines sobre el fixture.

Los chequeos van más allá de ver si el modelo carga y corre un forward pass. El contrato de SmolLM, por ejemplo, compara los IDs de tokens generados con una respuesta registrada, compara la loss de entrenamiento, verifica que los gradientes sean finitos y confirma que un paso del optimizador cambie los pesos. Un dataset de flota en el Hub fija cada contrato a una revisión congelada y a las versiones de paquetes con las que se registró, así una corrida que falla se puede reproducir después.

Qué encontró la repetición

Hugging Face dice que volvió a correr contratos congelados sobre cinco meses de commits de Transformers. Un fixture chico de UMT5 marcó la regresión en todos los commits entre su introducción y su corrección: las log-probabilidades de las etiquetas se desviaron 1,22 del baseline revisado y la loss de entrenamiento alrededor de 0,20. Ese fixture usaba 66 MB de pesos, contra 1.227 MB del checkpoint original. Con la corrección revertida en una rama de prueba, el paso del runner del contrato de T5 seleccionado tardó 13,4 segundos en CPU, sin contar la preparación.

Hay un detalle que importa si escribís tests de este tipo. El contrato detectó el bug porque usaba SDPA, el camino de atención por defecto. Según Hugging Face, correr solo la variante de atención eager no lo encontraba. Un modelo achicado sirve como test solo si pasa por el mismo código que el checkpoint real.

La receta de achicado mantiene intactas las arquitecturas mixtas, por ejemplo atención deslizante más atención completa o capas densas más MoE, y conserva el formato original del archivo de pesos para que el código de conversión también se pruebe. En el ejemplo de la propia Hugging Face, Llama 4 Scout pasa de 108.600 millones de parámetros a 44,7 millones. Los contratos para modelos nuevos los redacta un LLM a través de `tmic`, pero Hugging Face remarca que el modelo propone y que cualquier cambio en las expectativas lo aprueba una persona.

Advertencias

Es una propuesta con evidencia temprana, no un sistema terminado. Al 1 de noviembre, el job de MIC en el CI de Transformers reporta fallas pero no bloquea PRs. Hugging Face dice que todavía no midió cuántos bugs reales detecta en PRs en vivo (el resultado de UMT5 sale de una repetición), con qué frecuencia da falsas alarmas ni cuánto tiempo de revisión cuestan los baselines. En un estudio con Whisper, los fixtures con pesos aleatorios detectaron 18 de 24 fallas inyectadas y los sobreajustados las 24, pero eran fallas sintéticas, y las dos versiones pasaron por alto un bug real de decodificación asistida que solo apareció con el checkpoint completo. La cobertura entre familias de modelos es parcial. El propio repositorio aclara que pasar el test del fixture es una señal rápida de regresión, no una aprobación del modelo real.

Todas las cifras de esta nota salen del post y del repositorio de Hugging Face. Todavía no hay una reproducción independiente publicada.

Por qué importa

  • Las regresiones numéricas silenciosas, en las que nada se rompe pero el modelo entrena o genera distinto, están entre los bugs más difíciles de notar para quien hace fine-tuning o sirve modelos abiertos.
  • El enfoque prueba usos reales (generación, loss de entrenamiento, gradientes) en CPU y en segundos, un patrón que cualquier equipo puede copiar para sus propias integraciones sin tener GPUs ocupadas.
  • Los fixtures que conservan tokenizers, tipos de capa y formatos de pesos también podrían darles a desarrolladores y agentes de código ejemplos probados para checkpoints específicos.

Puntos clave

  • Un contrato combina un fixture achicado, un usage path ejecutable y baselines revisados por personas.
  • Un fixture de UMT5 de 66 MB, en una repetición, marcó un bug de entrenamiento ligado a SDPA en todos los commits afectados; probar solo con atención eager no lo detectaba.
  • La CLI `tmic` redacta contratos con un LLM, pero los cambios en las expectativas los aprueba una persona.
  • Por ahora el job de CI no bloquea, y todavía no se midieron la tasa de detección real ni las falsas alarmas.

Fuentes

  1. Hugging FaceFuente primaria
    Transformers Model Integration Contracts
    huggingface.co
  2. Hugging Face on GitHubFuente primaria
    transformers-mic (README)
    github.com
Hugging Face: contratos de integración de modelos en Transformers · Promptea