Contenido del curso
Fundamentos de la API de OpenAI
Control de Respuestas
Desarrollo de 'PlatziVision'
Fine-Tuning
OpenAI Batch
OpenAI Assistants
Proyecto Final y Cierre del Curso
Estructura de datos JSONL para fine tuning
Resumen
Cuando entrenas un modelo con fine tuning en OpenAI, la calidad de tu dataset define si el asistente responderá como tú quieres o se irá por las ramas. Aquí verás cómo estructurar conversaciones, cuándo aplicar pesos y qué parámetros revisar antes de lanzar el entrenamiento.
¿Cómo se estructuran los datos de entrenamiento para fine tuning?
Imagina que necesitas un asistente para Platzi cuyo único trabajo sea recomendar cursos con su enlace cuando el estudiante pregunte qué quiere aprender. Para enseñarle ese comportamiento, no basta con ajustar el system prompt: vas a entrenarlo con ejemplos reales de conversación.
Cada ejemplo es una cadena de mensajes con tres roles. El rol system define la identidad del asistente, el user hace la consulta y el assistant da la respuesta esperada.
- System: "Eres un asistente que recomienda cursos de Platzi".
- User: "¿Cómo puedo mejorar mis habilidades en JavaScript?".
- Assistant: "Para mejorar tus habilidades en JavaScript, puedes tomar..." seguido del enlace al curso.
Ese trío es la unidad mínima que OpenAI usará para aprender el patrón de respuesta que tú defines.
¿Para qué sirve la propiedad weight en fine tuning?
Dentro de cada mensaje del asistente puedes añadir una propiedad llamada weight o peso, que le dice al entrenamiento qué respuestas enfatizar.
Supón que en una conversación el asistente responde tres veces: las dos primeras fallan y la tercera acierta. Si le asignas weight de 1 al tercer mensaje, le indicas al modelo que esa es la respuesta sobre la que debe enfocarse, aunque las anteriores sigan siendo parte del contexto.
¿Cuándo debo usar weight en fine tuning? Cuando un ejemplo tenga varias respuestas del asistente y quieras señalar cuál es la correcta. Si solo hay una respuesta, puedes omitir esa propiedad.
En el caso de Platzi, como cada conversación tiene una sola respuesta del asistente, no necesitas usar weight.
¿Qué es un archivo JSONL y por qué lo pide OpenAI?
Una vez tienes el JSON de cada conversación, debes pasarlo a una sola línea y guardarlo en un archivo con extensión .jsonl, conocido como JSON Lines.
¿Qué es un archivo JSONL? Es un archivo donde cada línea es un objeto JSON independiente, sin comas ni separadores entre ellos. Funciona parecido a un CSV, pero con objetos JSON en vez de filas tabulares.
No tendrás una sola línea, sino muchas. OpenAI exige un mínimo de 10 ejemplos, aunque lo recomendable es superar los 50 e idealmente acercarse a 100. Mientras más ejemplos variados y correctos incluyas, mejor aprenderá el modelo.
¿Qué diferencia hay entre dataset de entrenamiento y de validación?
Vas a trabajar con dos archivos distintos, ambos disponibles en la sección de recursos.
- Dataset de entrenamiento: contiene los ejemplos con los que el modelo aprende a responder según el comportamiento deseado.
- Dataset de validación: sirve para verificar qué tan bien responde el modelo una vez entrenado, midiendo su precisión sobre datos que no vio en el entrenamiento.
Separarlos te permite detectar si el modelo realmente generaliza o si solo memorizó los ejemplos.
¿Qué hiperparámetros puedes ajustar en fine tuning con OpenAI?
OpenAI deja estos ajustes en automático, así que no necesitas tocarlos, pero conviene entender qué hacen para diagnosticar resultados.
El batch size o tamaño de lote define cuántos ejemplos procesa el modelo a la vez. Si tienes 1.000 ejemplos y un batch size de 100, el modelo recorrerá 10 lotes para completar una vuelta. Un batch size alto entrena más rápido pero con menos precisión, y uno bajo es más preciso pero más lento.
El learning rate multiplier es el factor que controla qué tan grandes son los pasos que da el modelo al aprender. Un valor alto captura más detalle pero tarda más, y uno bajo es más preciso aunque también más lento.
El número de épocas probablemente sea el más sensible de los tres. Si es muy bajo, el modelo cae en subajuste y no aprende lo suficiente. Si es muy alto, entra en sobreajuste y se aprende las respuestas de memoria sin generalizar.
Finalmente está la semilla, que introduce variación controlada en los resultados. También viene en automático y no necesitas modificarla.
¿Cuántos ejemplos necesito para hacer fine tuning? OpenAI exige mínimo 10, pero lo recomendable son más de 50 ejemplos variados y correctos. Con 100 o más obtendrás mejores resultados.
Descarga los dos archivos de recursos, ábrelos en tu editor y revisa cómo se ve cada línea del JSONL. Algunos editores lo reconocen sin problema; otros lo tratan como texto plano porque, recuerda, no es un JSON tradicional sino una línea JSON por registro. ¿Has trabajado antes con archivos JSONL? Cuéntame en los comentarios.