Formato basura entra, respuestas basura salen
Haces fine-tuning de un modelo de chat, ejecutas la inferencia y obtienes texto roto salpicado de tokens sueltos o turnos interminables que nunca terminan. El instinto es culpar a los datos — más ejemplos, ejemplos más limpios, otra tasa de aprendizaje. A menudo el problema real está antes de todo eso: los ejemplos de entrenamiento nunca se formatearon de la manera en que el modelo base espera ver una conversación.
Qué es realmente una plantilla de chat
Todo modelo base ajustado para chat fue entrenado sobre conversaciones envueltas en un formato específico: tokens especiales que marcan dónde empieza un mensaje, quién habla (system, user o assistant) y dónde termina el turno. Ese formato — la plantilla de chat — no es una convención que puedas improvisar. Está integrado en la forma en que el modelo aprendió a leer la estructura desde el principio, durante su propio supervised fine-tuning.
Si haces más fine-tuning sin reproducir esa estructura exacta, el modelo no tiene una señal confiable de dónde se detiene un turno y empieza el siguiente. No falla de forma evidente — simplemente aprende una versión ligeramente equivocada de "cuándo dejar de hablar" o "de quién es el turno", lo que aparece más tarde como generaciones interminables, límites de turno confusos, o el modelo devolviéndote los marcadores de rol como texto literal.
Cómo aplicarla correctamente
La solución no es escribir la plantilla a mano tú mismo. Todo modelo base viene con una manera de recuperar su propia plantilla de chat, normalmente como un único método expuesto por el tokenizer que toma una lista de mensajes etiquetados por rol y devuelve la cadena correctamente formateada — tokens especiales, marcadores de rol y todo lo demás. El flujo de trabajo es:
- Carga el tokenizer de tu modelo base exacto — no uno parecido, el checkpoint exacto que estás ajustando.
- Estructura cada ejemplo de entrenamiento como una lista de pares rol/contenido (system, user, assistant) en lugar de un único bloque de texto.
- Llama a la función de plantilla de chat del tokenizer en cada ejemplo para producir la cadena final formateada, con los tokens especiales propios del modelo en los lugares correctos.
- Alimenta la salida con plantilla al entrenamiento — no tu texto en bruto.
Esto aplica tanto si empiezas desde un dataset en bruto de dos columnas (prompt/respuesta) como si conviertes desde otro formato: el paso de aplicar la plantilla viene justo antes del entrenamiento, aplicado de forma uniforme a cada ejemplo.
tokenizer.apply_chat_template(example)
Errores comunes
- Suponer que las plantillas se transfieren entre modelos. Cambiar de modelo base a mitad del proyecto significa volver a aplicar la plantilla del nuevo modelo desde cero — las plantillas son específicas del modelo, no del framework, y dos modelos de familias distintas casi nunca comparten una.
- Mezclar datos de múltiples fuentes sin volver a aplicar la plantilla. Si estás combinando datasets que fueron preformateados para un modelo distinto, no supongas que los formatos coinciden. Vuelve a aplicar la plantilla del modelo objetivo a todo antes de entrenar.
- Confundir las variantes base e instruct. Los modelos ajustados para instrucciones ya tienen una plantilla establecida a partir de su propio fine-tuning — úsala. Los modelos base generalmente no tienen una plantilla integrada, así que eres tú quien define la estructura; sé deliberado con esa elección.
- Nunca mirar realmente un ejemplo formateado. Es fácil ejecutar el proceso de plantilla como un paso de preprocesamiento invisible y nunca verificar que hizo lo que esperabas.
El único hábito que atrapa esto a tiempo
Antes de darle a entrenar, imprime un ejemplo completamente formateado — después de aplicar la plantilla — y léelo. Estás comprobando que los tokens especiales están donde esperas, que los roles están etiquetados correctamente y que nada quedó truncado o duplicado. Esta única comprobación atrapa la gran mayoría de los errores de plantilla de chat antes de que te cuesten una corrida de entrenamiento.
Recursos
- Hugging Face Transformers — guía de plantillas de chat
- Hugging Face Transformers — referencia del tokenizer
¿Haciendo fine-tuning de un modelo para producción? Yeda AI diseña, audita y entrega sistemas LLM de producción.