Utilizar grandes modelos de lenguaje para construir aplicaciones de IA generativa conlleva nuevos desafíos. Un asunto clave es asegurar la calidad de las respuestas (precisión y relevancia) en el contenido generado por el modelo para una solicitud dada del usuario. En lecciones anteriores, discutimos técnicas como la ingeniería de prompts y la generación aumentada por recuperación que intentan resolver el problema modificando la entrada del prompt al modelo existente.
En la lección de hoy, hablaremos de una tercera técnica, el ajuste fino, que trata de abordar el desafío reentrenando el modelo mismo con datos adicionales. Profundicemos en los detalles.
Esta lección introduce el concepto de ajuste fino para modelos de lenguaje preentrenados, explora los beneficios y desafíos de este enfoque, y proporciona orientación sobre cuándo y cómo usar el ajuste fino para mejorar el rendimiento de tus modelos de IA generativa.
Al finalizar esta lección, deberías poder responder las siguientes preguntas:
- ¿Qué es el ajuste fino para modelos de lenguaje?
- ¿Cuándo y por qué es útil el ajuste fino?
- ¿Cómo puedo ajustar fino un modelo preentrenado?
- ¿Cuáles son las limitaciones del ajuste fino?
¿Listo? Empecemos.
¿Quieres obtener una visión general de lo que cubriremos antes de profundizar? Consulta esta guía ilustrada que describe el recorrido de aprendizaje para esta lección — desde conocer los conceptos básicos y la motivación del ajuste fino, hasta entender el proceso y las mejores prácticas para ejecutar la tarea de ajuste fino. Este es un tema fascinante para explorar, así que no olvides visitar la página de Recursos para enlaces adicionales que apoyen tu aprendizaje autodirigido.
Por definición, los grandes modelos de lenguaje están preentrenados con grandes cantidades de texto obtenidas de diversas fuentes, incluyendo internet. Como hemos aprendido en lecciones anteriores, necesitamos técnicas como la ingeniería de prompts y la generación aumentada por recuperación para mejorar la calidad de las respuestas del modelo a las preguntas del usuario ("prompts").
Una técnica popular de ingeniería de prompts consiste en dar al modelo una mayor guía sobre lo que se espera en la respuesta, ya sea proporcionando instrucciones (guía explícita) o dándole algunos ejemplos (guía implícita). Esto se conoce como aprendizaje con pocos ejemplos (few-shot learning), pero tiene dos limitaciones:
- Los límites de tokens del modelo pueden restringir la cantidad de ejemplos que puedes dar, y limitar la efectividad.
- El costo en tokens del modelo puede hacer costoso añadir ejemplos a cada prompt, y limitar la flexibilidad.
El ajuste fino es una práctica común en sistemas de aprendizaje automático donde tomamos un modelo preentrenado y lo reentrenamos con datos nuevos para mejorar su rendimiento en una tarea específica. En el contexto de modelos de lenguaje, podemos ajustar fino el modelo preentrenado con un conjunto seleccionado de ejemplos para una tarea o dominio de aplicación dado para crear un modelo personalizado que puede ser más preciso y relevante para esa tarea o dominio específico. Un beneficio adicional del ajuste fino es que también puede reducir el número de ejemplos necesarios para el aprendizaje con pocos ejemplos, reduciendo el uso de tokens y los costos relacionados.
En este contexto, cuando hablamos de ajuste fino, nos referimos al ajuste fino supervisado, donde el reentrenamiento se realiza añadiendo nuevos datos que no formaban parte del conjunto de datos original de entrenamiento. Esto es diferente de un enfoque de ajuste fino no supervisado donde el modelo se reentrena con los datos originales, pero con hiperparámetros diferentes.
Lo importante a recordar es que el ajuste fino es una técnica avanzada que requiere cierto nivel de experiencia para lograr los resultados deseados. Si se hace incorrectamente, puede no proporcionar las mejoras esperadas, e incluso degradar el rendimiento del modelo para tu dominio objetivo.
Por eso, antes de aprender "cómo" ajustar fino modelos de lenguaje, necesitas saber "por qué" deberías tomar esta ruta y "cuándo" comenzar el proceso de ajuste fino. Comienza preguntándote estas cuestiones:
- Caso de uso: ¿Cuál es tu caso de uso para el ajuste fino? ¿Qué aspecto del modelo preentrenado actual quieres mejorar?
- Alternativas: ¿Has probado otras técnicas para lograr los resultados deseados? Úsalas para crear una línea base de comparación.
- Ingeniería de prompts: prueba técnicas como few-shot prompting con ejemplos de respuestas relevantes. Evalúa la calidad de las respuestas.
- Generación aumentada por recuperación: intenta aumentar los prompts con resultados de consulta recuperados al buscar en tus datos. Evalúa la calidad de las respuestas.
- Costos: ¿Has identificado los costos del ajuste fino?
- Tunabilidad: ¿el modelo preentrenado está disponible para ajuste fino?
- Esfuerzo: para preparar datos de entrenamiento, evaluar y refinar el modelo.
- Computación: para ejecutar trabajos de ajuste fino y desplegar el modelo ajustado.
- Datos: acceso a ejemplos de calidad suficiente para que el ajuste fino tenga impacto.
- Beneficios: ¿Has confirmado los beneficios del ajuste fino?
- Calidad: ¿el modelo ajustado superó la línea base?
- Costo: ¿reduce el uso de tokens simplificando los prompts?
- Extensibilidad: ¿puedes reutilizar el modelo base para nuevos dominios?
Al responder estas preguntas, deberías poder decidir si el ajuste fino es la estrategia adecuada para tu caso de uso. Idealmente, el enfoque es válido solo si los beneficios superan los costos. Una vez que decidas proceder, es momento de pensar en cómo puedes ajustar fino el modelo preentrenado.
¿Quieres más información sobre el proceso de toma de decisiones? Mira To fine-tune or not to fine-tune
Para ajustar fino un modelo preentrenado, necesitas:
- un modelo preentrenado para ajustar fino
- un conjunto de datos para usar en el ajuste fino
- un entorno de entrenamiento para ejecutar el trabajo de ajuste fino
- un entorno de hospedaje para desplegar el modelo ajustado
Los siguientes recursos ofrecen tutoriales paso a paso para guiarte a través de un ejemplo real usando un modelo seleccionado con un conjunto de datos curado. Para trabajar con estos tutoriales, necesitas una cuenta en el proveedor específico, junto con acceso al modelo y conjuntos de datos relevantes.
| Proveedor | Tutorial | Descripción |
|---|---|---|
| OpenAI | Cómo ajustar fino modelos de chat | Aprende a ajustar fino un gpt-35-turbo para un dominio específico ("asistente de recetas") preparando datos de entrenamiento, ejecutando el trabajo de ajuste fino y usando el modelo ajustado para inferencias. |
| Azure OpenAI | Tutorial de ajuste fino para GPT 3.5 Turbo | Aprende a ajustar fino un modelo gpt-35-turbo-0613 en Azure siguiendo pasos para crear y subir datos de entrenamiento, ejecutar el trabajo de ajuste fino, desplegar y usar el nuevo modelo. |
| Hugging Face | Ajuste fino de LLMs con Hugging Face | Esta publicación te guía en el ajuste fino de un LLM abierto (ej: CodeLlama 7B) usando la librería transformers y Transformer Reinforcement Learning (TRL) con datasets en Hugging Face. |
| 🤗 AutoTrain | Ajuste fino de LLMs con AutoTrain | AutoTrain (o AutoTrain Advanced) es una biblioteca Python desarrollada por Hugging Face que permite el ajuste fino para muchas tareas, incluyendo el ajuste fino de LLM. AutoTrain es una solución sin código y el ajuste fino puede realizarse en tu propia nube, en Hugging Face Spaces o localmente. Soporta GUI web, CLI y entrenamiento mediante archivos de configuración yaml. |
| 🦥 Unsloth | Ajuste fino de LLMs con Unsloth | Unsloth es un marco de trabajo de código abierto que soporta ajuste fino y aprendizaje por refuerzo (RL) para LLM. Unsloth simplifica el entrenamiento local, evaluación y despliegue con notebooks listos para usar. También soporta texto a voz (TTS), BERT y modelos multimodales. Para comenzar, lee su guía paso a paso Fine-tuning LLMs Guide. |
Selecciona uno de los tutoriales anteriores y sigue sus pasos. Podemos replicar una versión de estos tutoriales en Jupyter Notebooks en este repositorio solo como referencia. Usa las fuentes originales directamente para obtener las versiones más recientes.
Después de completar esta lección, consulta nuestra colección de aprendizaje de IA generativa para continuar mejorando tus conocimientos en IA generativa.
¡Felicidades! Has completado la última lección de la serie v2 de este curso. No dejes de aprender y construir. **Consulta la página de RECURSOS para una lista de sugerencias adicionales solo sobre este tema.
Nuestra serie de lecciones v1 también ha sido actualizada con más tareas y conceptos. Así que tómate un minuto para refrescar tus conocimientos — y por favor comparte tus preguntas y comentarios para ayudarnos a mejorar estas lecciones para la comunidad.
Aviso Legal: Este documento ha sido traducido utilizando el servicio de traducción automática Co-op Translator. Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda la traducción profesional humana. No nos hacemos responsables de malentendidos o interpretaciones erróneas derivadas del uso de esta traducción.

