Saltar al contenido principal

06 · Fundamentos de ML y LLMs

Fine-tuning, LoRA y QLoRA

Cuándo conviene cambiar el comportamiento de un modelo entrenándolo un poco más, y cómo las técnicas actuales lo vuelven accesible.

14 minCaso de estudio: Adapta (se abre en una ventana nueva)

Algunos problemas no se resuelven con mejores instrucciones. El modelo devuelve JSON válido nueve de cada diez veces, clasifica bien los tickets salvo en tus categorías internas, o responde correctamente pero nunca con la voz de tu marca. significa seguir entrenando un modelo existente con tus propios ejemplos para que cambie cómo responde.

El obstáculo solía ser el costo: ajustar cada número de un modelo que tiene miles de millones de ellos requiere varias tarjetas gráficas grandes. y lo hicieron posible con una sola. Esta lección cubre cuándo el fine-tuning es la herramienta correcta, cómo es un buen dataset, cómo funcionan LoRA y QLoRA, y los errores que más a menudo arruinan el resultado.

¿Comportamiento o conocimiento?

Antes de entrenar nada, pregúntate qué falta. Si al modelo le falta conocimiento (datos, precios, políticas), entrégale los documentos correctos en el momento de la pregunta: eso es , que se ve en Embeddings y RAG. Si le falta un comportamiento (un formato fijo, tus propias etiquetas, una voz), eso sí se puede entrenar.

Necesidad Herramienta Por qué
Datos que cambian RAG Se actualiza al reindexar, con fuentes
Una instrucción clara, pocos casos borde Prompting Sin entrenamiento; los cambios toman minutos
Formato fijo, categorías propias, voz Fine-tuning Un comportamiento repetido es lo que el entrenamiento captura
Los datos de tus manuales con tu voz Ambos Los datos vienen de la búsqueda, la forma del entrenamiento

El dataset

El fine-tuning aprende de ejemplos: una entrada y la salida ideal para ella. En un clasificador de tickets, un ejemplo empareja "me cobraron dos veces" con "facturación". Esto se llama fine-tuning supervisado (SFT).

La calidad le gana a la cantidad: los ejemplos contradictorios enseñan contradicciones. Cada ejemplo debe enseñar una forma repetible (una estructura, un conjunto de etiquetas, una plantilla), no un dato aislado. Ese es el riesgo de pedirle a un modelo que genere ejemplos a partir de tus documentos: tiende a producir pares de pregunta y respuesta sobre datos.

LoRA y QLoRA

Entrenar una pequeña corrección, no el modelo entero

El conocimiento de un modelo vive en grandes tablas de números llamadas pesos. El fine-tuning clásico ajusta todos, lo que exige muchísima memoria y produce una copia completa del modelo.

LoRA (Low-Rank Adaptation) congela los pesos originales y aprende una pequeña corrección que se ubica a su lado. La idea de fondo es que un comportamiento concreto no requiere cambiarlo todo; una corrección compacta captura casi todo lo necesario. En una capa típica, esa corrección tiene menos del uno por ciento de los números de la capa.

El resultado es un : un archivo de pocos megabytes que se aplica sobre un sin cambios. Un mismo base puede servir muchos adapters, uno por tarea.

Un modelo base congeladocada tarea suma su propio adapter pequeño
  • Etiquetas de tickets
  • Factura a JSON
  • Voz de la marca
LoRA deja intacto el modelo grande y guarda cada comportamiento en un adapter aparte. Cambiar de tarea es cambiar un archivo de pocos megabytes, no el modelo entero.

QLoRA: que quepa en una tarjeta

Aunque solo se entrene el adapter, el modelo base completo tiene que estar en la memoria de la tarjeta gráfica. QLoRA carga ese base congelado cuantizado, es decir, comprimido a 4 bits por número, y entrena el adapter con más precisión.

Qué suele salir mal

Memorizar en vez de aprender. Con pocos ejemplos, el modelo los memoriza: las cifras de siguen mejorando mientras los resultados en ejemplos nuevos se estancan o empeoran. Eso es (sobreajuste). Las defensas son probar con ejemplos que nunca vio (Evaluar modelos), entrenar pocas pasadas y usar un control negativo: un dataset sin ningún patrón, que tiene que fallar.

Entrenar con un formato y servir con otro. Los modelos de chat leen conversaciones envueltas en marcadores especiales, su chat template. Si el entrenamiento muestra texto plano "Usuario: … Asistente: …" pero el sistema en vivo envía la plantilla, el adapter recibe algo que no se parece a nada de lo que aprendió.

De entrenar a servir, e imágenes

El entrenamiento guarda el adapter en un formato de archivo; el motor llama.cpp que lo sirve espera otro, (Servir modelos). La conversión puede fallar, así que trátala como un paso del pipeline. En Adapta, una conversión fallida hace fallar todo el trabajo: un adapter que no se puede servir nunca se registra.

En Adapta

  1. Ejemplospares de prompt y respuesta
  2. Apartarel último 20% se reserva para la prueba
  3. EntrenamientoQLoRA, en la tarjeta gráfica
  4. Control de calidaddebe aprobar con las filas apartadas
  5. Conversiónel adapter pasa a GGUF
  6. Servicioun endpoint carga el base más el adapter
Todo trabajo de fine-tuning en Adapta sigue este camino. Si fallan el control o la conversión, el trabajo falla y el adapter nunca se registra. Fuente: Architecture

Los modelos que leen imágenes se ajustan igual. Lo habitual es congelar la parte que lee la imagen y entrenar solo la parte de lenguaje: el modelo ya sabe ver; lo que aprende es a responder en tu formato.

En la práctica

  • Pregunta primero "¿comportamiento o conocimiento?". Si es conocimiento, un fine-tune es la inversión equivocada.
  • Los datos antes que el hardware. El verdadero cuello de botella es un conjunto limpio y coherente de cientos de ejemplos, y alguien responsable de mantenerlo al día.
  • Revisa la licencia del modelo base antes de invertir. Varios modelos 3B de Adapta solo permiten uso no comercial (README; ver Modelos y Hugging Face).
  • Planifica el ciclo de vida del adapter. Está atado a su modelo base exacto; cambiar el base implica entrenar y probar de nuevo.

Para profundizar

La documentación de Adapta recorre el mismo pipeline con ejecuciones reales (en inglés):

  • Learning the system explica LoRA, QLoRA y el dataset de entrenamiento desde cero, y por qué el entrenamiento corre separado del servicio.
  • Fine-tuning, proven sigue una ejecución real, un clasificador de tickets entrenado con 36 ejemplos, desde el dataset hasta un endpoint en vivo.
  • Fine-tuning use cases registra ejecuciones en GPU para extracción, clasificación, un formato fijo y un control negativo, con notas sobre cómo leer los puntajes.
  • Fine-tune models that read your images cubre el camino de imágenes: cómo se empaqueta el dataset, qué queda congelado y cómo se sirve el resultado.

Para llevar

  • El fine-tuning cambia el comportamiento; RAG aporta conocimiento.
  • LoRA entrena una pequeña corrección junto a un modelo congelado, así que los adapters pesan megabytes y un mismo base sirve muchas tareas.
  • QLoRA comprime el base congelado para que el entrenamiento quepa en una tarjeta gráfica modesta.
  • Entrenamiento y servicio deben usar el mismo formato de entrada, y cada adapter se prueba con ejemplos no vistos antes de salir a producción.

Comprueba lo aprendido

Tu equipo quiere un fine-tune para que el modelo "sepa" el catálogo de precios. ¿Qué recomiendas?

RAG. Los precios son conocimiento que cambia. En un índice de búsqueda se actualizan al reindexar y vuelven con su fuente; entrenados en el modelo, quedan desactualizados.

¿Por qué un adapter LoRA es mucho más pequeño que el modelo que modifica?

Deja intactos los pesos originales y aprende una corrección compacta a su lado, porque un comportamiento concreto no requiere cambiarlo todo.

¿Qué agrega QLoRA sobre LoRA?

Mantiene el modelo base congelado en una forma comprimida de 4 bits, lo que reduce mucho la memoria necesaria, y sigue entrenando solo el adapter.