Cómo hacer el ajuste fino de un LLM [y cuándo usar RAG o prompts en su lugar]
Esta guía explica paso a paso cómo hacer el ajuste fino de un LLM, compara el ajuste fino completo con LoRA y QLoRA, y muestra cuándo los prompts o RAG son la mejor forma de mejorar las salidas de un modelo.

Hacer el ajuste fino de un modelo de lenguaje grande (LLM) consiste en refinar un LLM preentrenado con un conjunto de datos pequeño y específico de la tarea para que genere resultados que no se pueden conseguir solo con prompts.
El ajuste fino consiste en recopilar pares de ejemplo de entrada/salida que muestren el comportamiento que buscas, ejecutar pasadas de entrenamiento que acerquen los pesos del modelo a ellos y comparar el resultado con las salidas del modelo original. Los métodos eficientes en parámetros, como LoRA, lo abaratan lo suficiente como para ejecutarlo en una sola GPU.
Si no te convencen los resultados del LLM, refina primero tus prompts y la generación aumentada por recuperación (RAG). El ajuste fino cambia cómo se comporta el LLM. Cuando necesites que utilice información reciente o propia, los prompts y la RAG suelen ser una mejor opción.
A continuación te explicamos cómo hacer el ajuste fino de un LLM paso a paso, cuáles son los principales métodos de ajuste fino (LoRA y QLoRA) y qué retos y errores pueden echar a perder el proceso.
Qué es el ajuste fino de un LLM y en qué se diferencia del preentrenamiento de un LLM
El preentrenamiento de un LLM desarrolla desde cero la capacidad lingüística general de un modelo a partir de un corpus enorme, mientras que el ajuste fino adapta un modelo preentrenado con un conjunto de datos pequeño para una tarea concreta.
El preentrenamiento de un LLM es la fase que más recursos consume y la que da lugar a un modelo base. Este aprende de un amplio corpus de texto, lo que le aporta gramática, conocimientos y capacidad de razonamiento generales, pero ninguna especialización para tu tarea.
El ajuste fino de un LLM continúa el entrenamiento del modelo base con un conjunto de datos pequeño y seleccionado para que genere los resultados deseados en una tarea o un caso de uso específicos. Piensa en un formato coherente, una voz o un tono de marca, patrones propios de un dominio o llamadas fiables a herramientas y funciones.
Cuándo hacer el ajuste fino de un LLM y cuándo recurrir a prompts o a la RAG
Para mejorar el rendimiento de un LLM, sube escalón a escalón: prompts -> RAG -> ajuste fino.
Refina tus prompts con instrucciones más detalladas y usa la RAG para dar al modelo información actualizada. Recurre al ajuste fino solo cuando las mejoras en los prompts y en la recuperación no den resultado.
Enfoque | Qué cambia | Cuándo usarlo | Limitación principal |
Ingeniería de prompts | La solicitud que envías | El comportamiento se acerca a lo que buscas y quieres rapidez y reversibilidad | Limitada por las capacidades existentes del modelo base |
RAG | Lo que ve el modelo en el momento de la inferencia | Los datos cambian a menudo y necesitas que el LLM acceda a información actualizada | Añade latencia de recuperación e infraestructura; no cambia el comportamiento |
Ajuste fino de LLM | Los pesos del modelo (sus parámetros internos) | Necesitas un comportamiento, un formato o un tono coherentes a gran escala, o prompts más cortos en cada llamada | Coste inicial, obsolescencia del conocimiento integrado en los pesos y riesgo de olvidar comportamientos preentrenados |
Cuándo unos prompts mejores superan al ajuste fino y cuándo no bastan
Los prompts son la palanca más rápida y barata. En muchos casos, unos prompts más precisos y detallados logran los cambios de comportamiento deseados.
Pero los prompts más largos ralentizan el trabajo, lo encarecen y no pueden superar las limitaciones existentes del modelo.
Señales de que los prompts pueden haber llegado a su límite:
- Los nuevos casos límite no dejan de romper la salida: Por ejemplo, el modelo devuelve prosa cuando necesitas JSON o se desvía del tono, y tienes que parchear el prompt para cada caso nuevo.
- El prompt del sistema no para de crecer: El prompt ocupa cientos o miles de líneas y es difícil de gestionar.
- Lo pagas en cada llamada: El prompt se reenvía y se vuelve a procesar en cada solicitud, por lo que aumentan el coste en tokens y la latencia.
- Los cambios dejan de marcar la diferencia: Las nuevas instrucciones no mejoran los resultados.
Aun así, prueba primero las soluciones más baratas a nivel de prompt. Usa ejemplos few-shot para mostrar al modelo el patrón (pares de entrada/salida), el encadenamiento de prompts para dividir las tareas difíciles en pasos más pequeños o la llamada a funciones para delegar búsquedas exactas o cálculos.
Cuándo tiene más sentido la RAG que el ajuste fino del modelo
La RAG cambia lo que sabe el LLM, mientras que el ajuste fino cambia cómo se comporta. Si lo que falta es conocimiento, sobre todo conocimiento que cambia a menudo o que está en tus propios documentos, la respuesta es la RAG. Si lo que falla es el comportamiento, haz un ajuste fino.
El ajuste fino también modifica lo que sabe un modelo, pero los datos que absorbe quedan congelados en el momento del entrenamiento y pierden vigencia rápidamente en campos que evolucionan deprisa. Además, la información queda integrada en los pesos del modelo, que no conservan ningún registro de su origen.
Actualizar los documentos de origen que utiliza una capa de recuperación es más rápido y barato, y esta puede citar las fuentes exactas que ha utilizado. Por eso es una mejor opción cuando necesitas información actualizada y bien fundamentada.
¿El inconveniente de la RAG? Es una capa adicional que hay que crear y mantener, y añade latencia.
En la práctica, a menudo necesitarás ambas cosas. Los sistemas en producción combinan modelos con ajuste fino y RAG, y recurren a lo primero para lograr un comportamiento coherente y a lo segundo para disponer de datos actualizados.
Errores, riesgos y retos habituales del ajuste fino
Incluso cuando el ajuste fino es la herramienta adecuada, conlleva costes y riesgos:
- Coste y tiempo: Reunir datos de entrenamiento limpios y representativos es caro, y también lo es la capacidad de cómputo necesaria para el entrenamiento.
- Olvido catastrófico: Si se entrena con un conjunto de datos limitado, un modelo puede perder habilidades generales y adquirir nuevos modos de fallo, lo que provoca errores que el modelo base no cometía.
- Sobreajuste: Con datos insuficientes o demasiado repetitivos, el modelo memoriza tus ejemplos de entrenamiento en lugar de aprender patrones, por lo que funciona bien con sus muestras de entrenamiento, pero mal con entradas reales.
- Desactualización: El conocimiento integrado en los pesos se queda anticuado rápidamente, así que tienes que volver a entrenar con datos nuevos.
- Obsolescencia: Cuando sale un modelo más potente, a menudo supera de serie a tu modelo ajustado y tienes que repetir el trabajo.
- Dificultades de evaluación y reproducción: Demostrar que el modelo ajustado supera al modelo base es difícil. Además, dos ejecuciones de entrenamiento en GPU con la misma configuración pueden producir modelos ligeramente distintos.
- Gobernanza de datos: Entrenar con datos propios o sensibles plantea cuestiones de privacidad y licencias; más adelante, un modelo puede revelar fragmentos de aquello con lo que se entrenó.
Los principales métodos de ajuste fino
Los principales tipos de ajuste fino de LLM se diferencian por la parte del modelo que modifican: el ajuste fino completo vuelve a entrenar todo el modelo, mientras que los métodos de ajuste fino eficiente en parámetros (PEFT), como LoRA y QLoRA, solo actualizan algunos pesos. Los métodos PEFT requieren una fracción de la memoria del ajuste fino completo y, con la configuración adecuada, pueden igualar sus resultados.
El ajuste fino completo actualiza todos los pesos del modelo. Es el más caro y el que conlleva mayor riesgo de olvido catastrófico. Resérvalo para cambios de comportamiento importantes cuando dispongas de los datos y la capacidad de cómputo necesarios.
La alternativa es el ajuste fino eficiente en parámetros, o PEFT. Es un término genérico para los métodos que congelan la mayor parte del modelo y solo entrenan un pequeño conjunto de parámetros. Usa mucha menos memoria y es menos propenso al olvido, ya que el modelo base permanece intacto.
Con rangos bajos, PEFT aprende menos que un ajuste fino completo, pero aumentar el rango y ajustar la tasa de aprendizaje elimina gran parte de la diferencia en tareas de ajuste por instrucciones.
Entre los métodos PEFT se incluyen:
- LoRA (Low-Rank Adaptation): Es el punto de partida habitual: congela los pesos originales y entrena un pequeño conjunto de parámetros de adaptador añadidos, a menudo menos del 1 % del total, por lo que se ejecuta en una sola GPU de consumo.
- QLoRA (Quantized Low-Rank Adaptation): Comprime el modelo base a una precisión de 4 bits antes de aplicar LoRA, lo que permite hacer el ajuste fino de un modelo grande en una sola GPU.
Método | Qué actualiza | Hardware necesario | Cuándo usarlo |
Ajuste fino completo | Todos los pesos del modelo | Un nodo con varias GPU para modelos de la clase 7B, y muchas más para los más grandes | Necesitas un cambio profundo de comportamiento y dispones de los datos y la capacidad de cómputo |
LoRA (PEFT) | Un pequeño conjunto de pesos de adaptador añadidos | Una sola GPU de consumo | Tu punto de partida por defecto |
QLoRA (PEFT) | Adaptadores LoRA sobre un modelo base comprimido a 4 bits | Modelos muy grandes en una sola GPU | Tienes poca memoria, pero quieres un modelo base grande |
Además, usamos métodos de ajuste por instrucciones y por preferencias, desde RLHF (Reinforcement Learning from Human Feedback, aprendizaje por refuerzo a partir de retroalimentación humana) hasta alternativas más ligeras, como Direct Preference Optimization (DPO) y Odds Ratio Preference Optimization (ORPO), para definir cómo sigue un modelo las instrucciones y cómo se ajusta a las preferencias humanas.
Cómo hacer el ajuste fino de un LLM paso a paso
Una vez que hayas decidido que el ajuste fino de un LLM es la opción adecuada, este es el flujo de trabajo.
Paso 1: define la tarea y cómo medirás el éxito
Decide qué comportamiento quieres del LLM y cómo sabrás que lo has conseguido.
Especifica la tarea concreta que quieres que realice el modelo ajustado; por ejemplo, clasificar tickets de soporte, resumir contratos en un formato fijo o generar código con el estilo de tu empresa.
Después, define qué se considera un éxito. Algunas opciones habituales son:
- Validez de la salida: Por ejemplo, ¿el resultado se puede analizar como JSON válido o coincide con la estructura Markdown que necesitas?
- Puntuaciones automáticas: Usa métricas como BLEU o ROUGE, que comparan el texto generado con respuestas de referencia, o la precisión en la tarea sobre un conjunto etiquetado.
- Valoraciones humanas: Una rúbrica con puntuación o de aprobado/suspenso para cualidades que un script evalúa mal, como el tono o la utilidad.
- Fiabilidad con entradas difíciles: ¿Gestiona las entradas inusuales que hacían fallar al modelo base?
Paso 2: prepara tu conjunto de datos
La calidad de los datos determina el éxito del ajuste fino, así que esfuérzate en reunir el conjunto de datos adecuado para el ajuste fino.
Da formato a tus datos como pares de instrucción/respuesta en JSONL, donde cada línea contenga la entrada (y el contexto que haga falta) y la salida exacta que quieres obtener.
Por ejemplo, echa un vistazo a conjuntos de datos públicos como Alpaca-cleaned, de instrucciones generales, o Dolly, de Databricks, o al conjunto específico banking77, que incluye más de 13.000 consultas de soporte reales etiquetadas en 77 intenciones.
Para una tarea concreta, entre unos cientos y unos miles de ejemplos limpios y variados pueden cambiar el comportamiento, siempre que reflejen entradas reales de producción, incluidos los casos límite, y tengan un formato coherente.
¿Aún no tienes pares de entrada/salida? Crea el conjunto a partir de los datos que ya tienes, como tickets de soporte y sus mejores respuestas, o documentos y sus resúmenes.
Si solo tienes las salidas, usa un modelo más potente para generar una entrada plausible para cada una, o redacta a mano un pequeño conjunto inicial y amplíalo con un modelo «profesor» más grande; después, quédate con los mejores pares.
Para terminar, divide los datos en conjuntos de entrenamiento, validación y prueba, para poder medir los resultados con ejemplos que el modelo no haya visto.
Paso 3: elige un modelo base y un método
Empieza con un modelo de código abierto pequeño, de entre 3000 y 7000 millones de parámetros, y un método de ajuste fino eficiente en parámetros como LoRA o QLoRA.
Las familias abiertas como Llama, Mistral y Qwen te ofrecen una base sólida que puedes alojar tú mismo, y los métodos PEFT mantienen bajos los requisitos de hardware: QLoRA cuantiza el modelo base a 4 bits, por lo que el ajuste fino de un modelo de 7B solo requiere una tarjeta de consumo de 16-24 GB. El ajuste fino completo del mismo modelo necesita muchas veces esa cantidad de memoria.
Paso 4: configura los hiperparámetros de entrenamiento
Estos son los parámetros clave del ajuste fino de LLM y los rangos iniciales recomendados:
- La tasa de aprendizaje controla la magnitud de cada actualización de los pesos. Un estudio de 2024 de Biderman et al. concluyó que las mejores tasas de LoRA eran aproximadamente diez veces superiores a las del ajuste fino completo: normalmente, de 5e-5 a 5e-4, en comparación con el rango de 1e-5 a 5e-5. El estudio recomienda hacer un barrido de 1e-5 a 5e-4 y usar el valor más alto con el que el entrenamiento se mantenga estable.
- El tamaño de lote es el número de ejemplos de los que aprende el modelo antes de cada actualización de los pesos. En una sola GPU, usa un lote pequeño por dispositivo, de 1 a 8, y acumulación de gradientes para alcanzar un lote efectivo de entre 16 y 64, aproximadamente.
- El número de épocas es la cantidad de veces que el modelo ve el conjunto de datos completo. Cuando se entrena el modelo para realizar tareas específicas, entre 1 y 3 es una buena regla general, aunque las ejecuciones con LoRA suelen necesitar más.
- El rango de LoRA (r) determina la capacidad del adaptador, es decir, cuánto puede aprender. Empieza con un valor de entre 8 y 32 para tareas sencillas y auméntalo para las más complejas: en el estudio sobre LoRA de Biderman et al. citado anteriormente, el ajuste por instrucciones de un modelo de 7B con código necesitó un rango de 256 para igualar el ajuste fino completo, mientras que, en matemáticas, un rango de 64 se acercó bastante.
- La longitud máxima de secuencia es la entrada más larga que procesará la ejecución. Configúrala para que abarque tus ejemplos más largos, hasta el límite de la ventana de contexto del modelo, ya que cualquier entrada que la supere se truncará.
- El calentamiento y la planificación controlan cómo aumenta inicialmente la tasa de aprendizaje y cómo cambia a lo largo de la ejecución. Un calentamiento corto y un decaimiento coseno son los valores predeterminados habituales. Sin embargo, el estudio de Pareja et al. sobre modelos pequeños concluyó que prescindir del calentamiento no empeoraba las puntuaciones finales.
Considera estos valores como puntos de partida para un barrido, no como ajustes fijos.
Paso 5: entrenar y supervisar la pérdida
Mientras se ejecuta el entrenamiento, observa las curvas de pérdida de entrenamiento y de validación para comprobar si está funcionando.
La pérdida mide cuánto se alejan las salidas del modelo de tus ejemplos, y debería disminuir de forma gradual a medida que avanza la ejecución. La pérdida de entrenamiento corresponde a los datos de los que aprende el modelo. La pérdida de validación se calcula sobre los ejemplos reservados.
Si la pérdida de entrenamiento y la de validación disminuyen a la vez, el modelo está aprendiendo a generalizar. Si la pérdida de entrenamiento sigue bajando, pero la de validación se estanca o aumenta, el modelo está memorizando el conjunto de entrenamiento en lugar de aprender el patrón (sobreajuste).
Paso 6: evaluar y, después, desplegar
Una pérdida de entrenamiento baja no garantiza que las salidas sean correctas, así que evalúa el modelo ajustado según los criterios que definiste en el paso 1.
Si lo supera, tienes dos formas de desplegarlo:
- Sirve el adaptador sobre el modelo base y carga ambos en tiempo de ejecución; así, el adaptador sigue siendo intercambiable.
- Fusiona el adaptador con los pesos base para obtener un único modelo independiente que resulta más sencillo de alojar.
Usa Perplexity para que tu LLM acceda a información actualizada
El ajuste fino es la opción adecuada cuando quieres adaptar el comportamiento del modelo a tus necesidades.
Si tu modelo necesita información actual, sobre todo información que cambia rápidamente, necesitas un sistema RAG o una herramienta de búsqueda de terceros fiable.
Una pila de recuperación personalizada funciona mejor con conjuntos de datos propios, como tu wiki interna, el historial de atención al cliente, los contratos o la documentación de producto.
Cuando el conocimiento que quieres usar es público, no hace falta crear una capa de recuperación a medida. Perplexity es un motor de respuestas que ofrece resultados con citas en línea, en las que se puede hacer clic, procedentes de un índice web en tiempo real. Su Agent API proporciona esas respuestas citadas y basadas en la web en una sola llamada, para que tu aplicación pueda recurrir a fuentes actuales.
Preguntas frecuentes sobre el ajuste fino de LLM
¿Se puede hacer el ajuste fino de un LLM gratis?
Sí, puedes hacer el ajuste fino de un LLM abierto pequeño gratis. Por ejemplo, el nivel gratuito de Google Colab ofrece capacidad de GPU suficiente para ejecutar QLoRA en un modelo de entre 3B y 8B, lo que basta de sobra para una tarea concreta. Empiezas a pagar cuando necesitas más memoria, ejecuciones más largas o un modelo base más grande del que admite el nivel gratuito.
¿Necesitas tu propia GPU o puedes hacer el ajuste fino en la nube?
No necesitas tener una GPU propia para hacer el ajuste fino de LLM. Los servicios gestionados y los proveedores de GPU en la nube alquilan el hardware por horas, así que una sola GPU alquilada basta para una ejecución de QLoRA con un modelo pequeño. Comprar una GPU solo compensa si haces ajustes finos a menudo o si tienes que conservar todos tus datos en tus propias máquinas.
¿Cuánto se tarda en hacer el ajuste fino de un LLM?
Con un LLM pequeño, una ejecución puede durar desde unos minutos hasta unas pocas horas, según el tamaño del conjunto de datos y el hardware. Oumi, por ejemplo, hizo el ajuste fino completo de un modelo de 0,8B en algo más de una hora en su plataforma alojada.
Con modelos más grandes o decenas de miles de ejemplos, ese tiempo puede alargarse a un día o más: las ejecuciones de LoRA de Emburse con un modelo de 7B tardaron 8 horas con 5000 ejemplos y unas 30 horas con 50 000 en una sola GPU de 40 GB.
¿Puedes seguir actualizando un modelo ajustado a medida que cambian tus datos?
Puedes volver a hacer el ajuste fino con datos nuevos, pero cada ronda consume recursos de computación y conlleva el riesgo de olvido catastrófico. Para el conocimiento que cambia a menudo, RAG suele ser la mejor solución, ya que actualizas los documentos de origen en lugar de volver a entrenar el modelo.