El problema
Las conversaciones reales rara vez consisten en una pregunta y una respuesta. Un chat de soporte puede llegar a diez intercambios: un saludo, una pregunta aclaratoria, dos respuestas parciales y una solución final. Vale la pena aprender algunas de esas respuestas del asistente y otras no. Un formato de entrenamiento debe expresar tanto el contexto completo como la elección de qué respuestas cuentan.
Enfoque 1: pesos por mensaje
Algunos formatos permiten que cada mensaje del asistente tenga un peso. Toda la conversación es un solo registro; las respuestas marcadas con weight: 1 se aprenden, y las respuestas marcadas con weight: 0 son solo contexto — se leen, pero no se evalúan.
{"messages": [
{"role": "user", "content": "Hi"},
{"role": "assistant", "content": "Hello! How can I help?", "weight": 0},
{"role": "user", "content": "Export my report as PDF"},
{"role": "assistant", "content": "Open the report, click Export → PDF…", "weight": 1}
]}Esta es la opción eficiente. Cada registro se procesa una vez, todos los objetivos de una conversación comparten su contexto y la elección de lo que se debe aprender es exacta.
Enfoque 2: un registro por objetivo
Los formatos sin ponderaciones solo pueden indicar: «esta es una conversación; aprenda las respuestas del asistente». Para aprender una respuesta en particular, la conversación se corta justo después de ella y se guarda como un registro independiente. Una conversación con tres objetivos se convierte en tres registros, cada uno más largo que el anterior.
{"messages": [
{"role": "user", "content": "Hi"},
{"role": "assistant", "content": "Hello! How can I help?"},
{"role": "user", "content": "Export my report as PDF"},
{"role": "assistant", "content": "Open the report, click Export → PDF…"}
]}Existen dos efectos secundarios. Cualquier respuesta anterior del asistente dentro de un registro también se aprende, ya que el formato no puede marcarla únicamente como contexto, incluidas las respuestas que usted no eligió. Además, la primera parte de la conversación aparece en varios registros, por lo que se procesa, y se paga, varias veces.
- Una conversación tiene cuatro intercambios de unos 250 tokens cada uno. Las respuestas 2 y 4 son objetivos; las respuestas 1 y 3 no lo son.
- Con pesos: un registro de unos 1000 tokens. Las respuestas 2 y 4 se aprenden una vez cada una; la 1 y la 3 son contexto.
- Sin pesos: un registro cortado después de la respuesta 2 (unos 500 tokens) y otro cortado después de la respuesta 4 (unos 1000 tokens) — 1500 tokens en total, un 50 % más.
- Se aprende cada respuesta del asistente en un registro: las respuestas 1 y 2 dos veces, las respuestas 3 y 4 una vez. Las respuestas 1 y 3, que usted no eligió, se aprenden de todos modos.
Cuándo es importante
La diferencia es mínima cuando las conversaciones son cortas o todas las respuestas del asistente son buenas. Sin embargo, es importante cuando las conversaciones son largas, cuando las primeras respuestas son deficientes (un primer intento erróneo que se corrigió más tarde) o cuando usted omitió respuestas deliberadamente. Con un proveedor que admite ponderaciones, obtiene exactamente lo que eligió; con uno que no lo hace, vale la pena corregir las respuestas deficientes antes del entrenamiento.
Errores comunes
- Asumir que una respuesta que no marcó nunca se aprenderá, independientemente del formato del proveedor.
- Dejar una respuesta inicial incorrecta en una conversación larga cuando el proveedor no puede excluirla.
- Comparar el recuento de tokens entre proveedores sin tener en cuenta el contexto repetido.
- Dividir los registros de una misma conversación entre entrenamiento y validación; por este motivo, la división se realiza por conversación.
Referencias y lecturas adicionales
Las fuentes externas se abren en una pestaña nueva.
- 01SFT TrainerHugging Face TRL docs · huggingface.coEntrenamiento basado únicamente en los turnos del asistente dentro de una conversación completa.
- 02Chat templatesHugging Face Transformers docs · huggingface.coCómo se estructuran los chats de múltiples turnos para un modelo y cómo se localizan los turnos del asistente.
- 03Supervised fine-tuningOpenAI API docs · developers.openai.comLos datos de entrenamiento en formato de chat de un proveedor, incluidos los ejemplos de múltiples turnos.
- 04Prepare supervised fine-tuning data for Gemini modelsGoogle Cloud documentation · docs.cloud.google.comEl formato de los contenidos con los roles del usuario y del modelo.