Continuamos con nuestra serie de Inteligencia Artificial y cómo entrenar tus propios modelos de manera gratuita con Google Colab.
Hugging Face: la comunidad de modelos preentrenados y datasets
Ahora bien, ¿de dónde obtenemos el modelo preentrenado (como Llama 3.2 3B) y quizás datos de ejemplo? Aquí es donde entra Hugging Face. Hugging Face es una plataforma comunitaria muy popular en el mundo de la IA. Piensa en Hugging Face como una especie de "GitHub de modelos de IA": un lugar donde desarrolladores e investigadores suben sus modelos entrenados para que otros puedan descargarlos y usarlos fácilmente. Además de modelos, Hugging Face también alberga datasets públicos y ofrece bibliotecas de código útiles (como la biblioteca Transformers para manejar modelos de lenguaje).
Para nuestro proyecto, utilizaremos Hugging Face para obtener el modelo Llama 3.2 3B. Meta (la empresa creadora del modelo Llama) ha publicado estos modelos con una licencia especial, por lo que es posible que necesites aceptar los términos de uso en Hugging Face antes de descargarlos. Esto se hace simplemente creando una cuenta gratuita y haciendo clic en "Accept license" en la página del modelo. Muchos modelos grandes requieren este paso, así que es recomendable tener una cuenta en Hugging Face.
Ventaja de Hugging Face: nos simplifica la vida porque con una sola línea de código podemos descargar automáticamente el modelo preentrenado en Colab. De hecho, la herramienta que usaremos (Unsloth) aprovecha Hugging Face por detrás para cargar el modelo. También podríamos usar Hugging Face para almacenar nuestro modelo ajustado una vez terminado el fine-tuning, por si queremos compartirlo con la comunidad o descargarlo posteriormente a otra máquina.
En resumen, Hugging Face nos provee tanto el modelo base como (en muchos casos) colecciones de datos de entrenamiento de ejemplo subidos por la comunidad. Es uno de los recursos más importantes en el ecosistema de IA de código abierto.
Dataset de entrenamiento: preparando los datos para tu modelo
Tenemos el entorno y el modelo base, pero falta lo más importante: los datos con los que entrenaremos la IA. A ese conjunto de ejemplos se le llama dataset de entrenamiento. Un dataset no es más que un conjunto de datos estructurados que muestran al modelo qué queremos que aprenda. En el caso de un modelo de lenguaje como Llama, tu dataset normalmente consistirá en texto. Puede ser, por ejemplo, una colección de pares pregunta-respuesta, diálogos, instrucciones con su solución, o simplemente frases del estilo que quieres que el modelo genere.
¿Cómo crear o conseguir un dataset? Depende de tu proyecto. Algunas ideas de dataset podrían ser:
- Si quieres que la IA escriba respuestas al estilo de soporte al cliente, podrías recolectar preguntas frecuentes y respuestas de atención al cliente de tu industria.
- Para un asistente de cocina, podrías reunir recetas y consejos culinarios.
- Si buscas que el modelo hable con cierto tono o personalidad, podrías proporcionarle conversaciones de ejemplo con ese estilo.
Lo importante es que el dataset refleje el tipo de salida que esperas del modelo después del fine-tuning. Cuantos más ejemplos relevantes tenga, mejor podrá ajustarse la IA. Sin embargo, para empezar no necesitas un dataset enorme; incluso unos pocos cientos o miles de líneas pueden servir para probar el proceso.
También tienes la opción de buscar datasets públicos ya existentes. En Hugging Face hay una sección de datasets donde la comunidad comparte conjuntos de datos para diferentes tareas. Por ejemplo, hay datasets de ShareGPT (conversaciones de ChatGPT), colecciones de código y respuestas para modelos orientados a programación, compilaciones de chistes, poemas, etc. Usar un dataset público puede ahorrarte tiempo si coincide con tu objetivo.
Formato del dataset: Es esencial que los datos estén en un formato utilizable. Muchas veces se usa un archivo de texto o JSON donde cada línea es un ejemplo. En fine-tuning de modelos de lenguaje, un formato común es juntar cada prompt (entrada) con su respuesta (salida esperada) de una forma reconocible. Por ejemplo:
<|prompt|> ¿Cuál es la capital de Francia?
<|response|> La capital de Francia es París.
Este es solo un ejemplo ilustrativo. La herramienta que usaremos (el notebook de Unsloth) te indicará cómo debe formatearse exactamente tu dataset para entrenar correctamente el modelo. Por lo general, se especifica un separador o tokens especiales para distinguir preguntas de respuestas, etc. No te preocupes, si tu dataset no es perfecto, con unos ajustes menores podrás adaptarlo.
Unsloth: optimizando el fine-tuning en hardware limitado
A estas alturas, ya sabemos qué queremos hacer (ajustar un modelo preentrenado a nuestros datos) y dónde lo haremos (en Google Colab, usando modelos de Hugging Face). Solo falta el cómo. Entrenar un modelo grande incluso con Colab puede ser complicado si usamos métodos tradicionales, porque podríamos quedarnos sin memoria o tardar demasiado. Unsloth es la herramienta clave que nos facilitará todo este proceso.
Unsloth es una biblioteca y conjunto de notebooks de Python diseñada específicamente para acelerar y simplificar el fine-tuning de modelos grandes (Large Language Models o LLMs) en entornos con recursos limitados. Su nombre "un-sloth" hace alusión a que hace el entrenamiento "menos perezoso", es decir, más rápido 🦥🚀. ¿Qué hace especial a Unsloth? En resumen:
- Optimiza el uso de la memoria (VRAM): Unsloth utiliza técnicas avanzadas como la cuantización (reducción de la precisión numérica, por ejemplo a 4 bits) y métodos de entrenamiento eficientes como LoRA (Low-Rank Adaptation). Esto significa que en lugar de ajustar todos los parámetros del modelo (lo que consumiría mucha memoria), añade unas cuantas "capas" o ajustes pequeños y entrena solo esos. El resultado es que necesitas mucha menos VRAM para entrenar. Por ejemplo, fine-tunear Llama 3.2 3B con Unsloth puede requerir hasta un 60-70% menos memoria que hacerlo de la forma tradicional.
- Acelera el entrenamiento: Gracias a optimizaciones internas, Unsloth logra que el proceso sea hasta 2 veces más rápido en comparación con usar directamente las bibliotecas estándar de Hugging Face. Esto es genial cuando estamos en Colab y tenemos tiempo limitado.
- Facilidad de uso: Lo mejor para principiantes es que Unsloth ofrece notebooks listos para usar. No necesitas ser un experto en código ni configurar un entorno complejo. Simplemente abres el cuaderno de Llama 3.2 3B proporcionado por Unsloth, agregas tu dataset y ejecutas todo con un par de clics (¡lo veremos a continuación!). Los notebooks de Unsloth vienen preparados con todos los pasos: carga del modelo, ajuste de hiperparámetros, bucle de entrenamiento, y guardado del modelo final.
En pocas palabras, Unsloth es nuestro asistente de entrenamiento. Nos quitará de encima los detalles técnicos pesados para que podamos concentrarnos en lo importante: nuestros datos y lo que queremos lograr con el modelo.
Continuaremos en la parte 3 de nuestra serie de IA.

