Skip to content

Latest commit

 

History

History
105 lines (69 loc) · 14.9 KB

File metadata and controls

105 lines (69 loc) · 14.9 KB

Modelos de Código Abierto

Fine-Tuning de Tu LLM

Usar grandes modelos de lenguaje para construir aplicaciones de IA generativa implica nuevos desafíos. Un tema 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 el prompt de entrada al modelo existente.

En la lección de hoy, discutimos una tercera técnica, el fine-tuning, que intenta abordar el desafío reentrenando el modelo mismo con datos adicionales. Vamos a profundizar en los detalles.

Objetivos de Aprendizaje

Esta lección introduce el concepto de fine-tuning para modelos de lenguaje preentrenados, explora los beneficios y desafíos de este enfoque, y brinda orientación sobre cuándo y cómo usar fine-tuning para mejorar el rendimiento de tus modelos de IA generativa.

Al final de esta lección, deberías ser capaz de responder las siguientes preguntas:

  • ¿Qué es el fine-tuning para modelos de lenguaje?
  • ¿Cuándo y por qué es útil el fine-tuning?
  • ¿Cómo puedo hacer fine-tuning a un modelo preentrenado?
  • ¿Cuáles son las limitaciones del fine-tuning?

¿Listo? Comencemos.

Guía Ilustrada

¿Quieres tener 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 aprender los conceptos centrales y la motivación para el fine-tuning, hasta entender el proceso y las mejores prácticas para ejecutar la tarea de fine-tuning. 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.

Guía Ilustrada para Fine-Tuning de Modelos de Lenguaje

¿Qué es el fine-tuning para modelos de lenguaje?

Por definición, los grandes modelos de lenguaje están preentrenados con grandes cantidades de texto provenientes de diversas fuentes, incluyendo internet. Como hemos aprendido en lecciones anteriores, necesitamos técnicas como ingeniería de prompts y 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 darle al modelo más orientación 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 denomina 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.
  • Los costos de tokens del modelo pueden hacer costoso añadir ejemplos a cada prompt, limitando la flexibilidad.

El fine-tuning 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 desempeño en una tarea específica. En el contexto de modelos de lenguaje, podemos hacer fine-tuning al modelo preentrenado con un conjunto seleccionado de ejemplos para una tarea o dominio de aplicación dado para crear un modelo personalizado que pueda ser más preciso y relevante para esa tarea o dominio específico. Un beneficio adicional del fine-tuning es que también puede reducir la cantidad de ejemplos necesarios para el few-shot learning, reduciendo el uso de tokens y los costos relacionados.

¿Cuándo y por qué deberíamos hacer fine-tuning a los modelos?

En este contexto, cuando hablamos de fine-tuning nos referimos al fine-tuning supervisado donde el reentrenamiento se hace añadiendo nuevos datos que no formaban parte del conjunto de entrenamiento original. Esto es diferente de un enfoque de fine-tuning no supervisado donde el modelo se reentrena con los datos originales, pero con diferentes hiperparámetros.

Lo clave para recordar es que el fine-tuning es una técnica avanzada que requiere cierto nivel de experiencia para obtener los resultados deseados. Si se hace incorrectamente, puede que no proporcione las mejoras esperadas e incluso puede degradar el rendimiento del modelo para tu dominio objetivo.

Así que, antes de aprender "cómo" hacer fine-tuning a modelos de lenguaje, necesitas saber "por qué" deberías tomar esta ruta y "cuándo" iniciar el proceso de fine-tuning. Comienza haciéndote estas preguntas:

  • Caso de Uso: ¿Cuál es tu caso de uso para el fine-tuning? ¿Qué aspecto del modelo preentrenado actual quieres mejorar?
  • Alternativas: ¿Has probado otras técnicas para lograr los resultados deseados? Úsalas para crear una 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: Prueba añadir resultados de consultas recuperadas en tus datos a los prompts. Evalúa la calidad de las respuestas.
  • Costos: ¿Has identificado los costos del fine-tuning?
    • Afinabilidad - ¿el modelo preentrenado está disponible para hacer fine-tuning?
    • Esfuerzo - para preparar datos de entrenamiento, evaluar y refinar el modelo.
    • Computación - para ejecutar los trabajos de fine-tuning y desplegar el modelo ajustado.
    • Datos - acceso a suficientes ejemplos de calidad para que el fine-tuning tenga impacto.
  • Beneficios: ¿Has confirmado los beneficios del fine-tuning?
    • Calidad - ¿el modelo ajustado superó el rendimiento 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 fine-tuning es el enfoque adecuado para tu caso de uso. Idealmente, este enfoque es válido sólo si los beneficios superan los costos. Una vez que decidas avanzar, es momento de pensar cómo puedes hacer fine-tuning al modelo preentrenado.

¿Quieres más información sobre el proceso de toma de decisiones? Mira Hacer fine-tuning o no hacer fine-tuning

¿Cómo podemos hacer fine-tuning a un modelo preentrenado?

Para hacer fine-tuning a un modelo preentrenado, necesitas:

  • un modelo preentrenado para ajustar
  • un conjunto de datos para usar en el fine-tuning
  • un entorno de entrenamiento para ejecutar el trabajo de fine-tuning
  • un entorno de hospedaje para desplegar el modelo ajustado

Fine-Tuning en Acción

Los siguientes recursos proporcionan 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 datos relevantes.

Proveedor Tutorial Descripción
OpenAI Cómo hacer fine-tuning a modelos de chat Aprende a ajustar un gpt-35-turbo para un dominio específico ("asistente de recetas") preparando datos de entrenamiento, ejecutando el trabajo de fine-tuning y usando el modelo ajustado para inferencia.
Azure OpenAI Tutorial de fine-tuning para GPT 3.5 Turbo Aprende a ajustar un modelo gpt-35-turbo-0613 en Azure siguiendo los pasos para crear y subir datos de entrenamiento, ejecutar el trabajo de fine-tuning, desplegar y usar el nuevo modelo.
Hugging Face Fine-tuning de LLMs con Hugging Face Este artículo explica cómo hacer fine-tuning a un open LLM (ej: CodeLlama 7B) usando la biblioteca transformers y Transformer Reinforcement Learning (TRL) con conjuntos de datos abiertos en Hugging Face.
🤗 AutoTrain Fine-tuning de LLMs con AutoTrain AutoTrain (o AutoTrain Advanced) es una biblioteca python desarrollada por Hugging Face que permite hacer fine-tuning para muchas tareas incluyendo fine-tuning de LLMs. AutoTrain es una solución sin código y el fine-tuning puede hacerse en tu propia nube, en Hugging Face Spaces o localmente. Soporta interfaz web GUI, CLI y entrenamiento mediante archivos de configuración yaml.
🦥 Unsloth Fine-tuning de LLMs con Unsloth Unsloth es un framework de código abierto que soporta fine-tuning de LLMs y aprendizaje por refuerzo (RL). Unsloth facilita el entrenamiento, evaluación y despliegue local con notebooks listos para usar. También soporta modelos de texto a voz (TTS), BERT y modelos multimodales. Para comenzar, lee su guía paso a paso de Fine-tuning LLMs Guide.

Tarea

Selecciona uno de los tutoriales mencionados y síguelos paso a paso. Podemos replicar una versión de estos tutoriales en Jupyter Notebooks en este repositorio solo como referencia. Por favor, usa las fuentes originales directamente para obtener las versiones más recientes.

¡Gran Trabajo! Continúa Aprendiendo.

Después de completar esta lección, visita nuestra colección de aprendizaje de IA Generativa para seguir mejorando tu conocimiento en IA Generativa.

¡Felicidades! Has completado la lección final de la serie v2 para este curso. No dejes de aprender y construir. **Consulta la página de RECURSOS para una lista de sugerencias adicionales sólo sobre este tema.

Nuestra serie v1 de lecciones también ha sido actualizada con más tareas y conceptos. Así que toma 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 exactitud, 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 una traducción profesional realizada por humanos. No nos hacemos responsables por malentendidos o interpretaciones erróneas derivadas del uso de esta traducción.