Com fer l'ajust fi d'un LLM [i quan utilitzar RAG o indicacions]
Aquesta guia explica com fer l'ajust fi d'un LLM pas a pas, compara l'ajust fi complet amb LoRA i QLoRA, i mostra quan les indicacions o RAG són la millor manera de millorar les respostes d'un model.

Fer l'ajust fi (fine-tuning) d'un model de llenguatge gran (LLM) consisteix a perfeccionar un LLM preentrenat amb un conjunt de dades petit i específic per a una tasca, de manera que generi resultats que no podries obtenir només amb prompts.
L'ajust fi consisteix a recopilar parells d'exemples d'entrada/sortida que mostrin el comportament que vols, executar passades d'entrenament que acostin els pesos del model cap a aquests exemples i comparar el resultat amb les sortides del model original. Els mètodes eficients en paràmetres com LoRA fan que el procés sigui prou econòmic per executar-lo en una sola GPU.
Si no estàs satisfet amb les sortides de l'LLM, primer perfecciona els prompts i la generació augmentada per recuperació (RAG). L'ajust fi canvia com es comporta l'LLM. Quan necessites que faci servir informació recent o pròpia, els prompts i la RAG solen ser una opció millor.
A continuació t'expliquem com fer l'ajust fi d'un LLM pas a pas, quins són els principals mètodes d'ajust fi (LoRA i QLoRA) i quins reptes i errors poden fer fracassar el procés.
Què és l'ajust fi d'un LLM i en què es diferencia del preentrenament d'un LLM
El preentrenament d'un LLM construeix des de zero la capacitat lingüística general d'un model a partir d'un corpus enorme, mentre que l'ajust fi d'un LLM adapta un model preentrenat amb un conjunt de dades petit per a una sola tasca.
El preentrenament d'un LLM és la fase que consumeix més recursos i que dona com a resultat un model base. El model aprèn d'un corpus de text ampli, que li proporciona gramàtica, coneixements i capacitat de raonament generals, però cap especialització per a la teva tasca.
L'ajust fi d'un LLM continua l'entrenament del model base amb un conjunt de dades petit i seleccionat perquè generi les sortides desitjades per a una tasca o un cas d'ús concrets. Pensa en un format coherent, una veu o un to de marca, patrons específics d'un domini o crides fiables a eines i funcions.
Quan cal fer l'ajust fi d'un LLM i quan és millor recórrer als prompts o a la RAG
Per millorar el rendiment d'un LLM, puja l'escala graó a graó: prompts -> RAG -> ajust fi.
Perfecciona els prompts amb instruccions més detallades i fes servir la RAG per donar al model informació actualitzada. Recorre a l'ajust fi només quan les millores en els prompts i en la recuperació no donin resultat.
Enfocament | Què canvia | Quan fer-lo servir | Limitació principal |
Enginyeria de prompts | La sol·licitud que envies | El comportament s'acosta al que vols i busques rapidesa i reversibilitat | Limitat per les capacitats existents del model base |
RAG | El que veu el model en el moment de la inferència | Les dades canvien sovint i necessites que l'LLM accedeixi a informació actualitzada | Afegeix latència de recuperació i infraestructura; no canvia el comportament |
Ajust fi d'LLM | Els pesos del model (paràmetres interns del model) | Necessites un comportament, un format o un to coherents a escala, o prompts més curts a cada crida | Cost inicial, el coneixement integrat als pesos queda desfasat i hi ha risc d'oblidar comportaments preentrenats |
Quan uns prompts millors superen l'ajust fi i quan no n'hi ha prou
Els prompts són la palanca més ràpida i econòmica. En molts casos, uns prompts més precisos i detallats aconsegueixen els canvis de comportament desitjats.
Però els prompts més llargs alenteixen la feina, l'encareixen i no poden superar les limitacions existents del model.
Senyals que els prompts poden haver arribat al seu límit:
- Els nous casos límit no paren de trencar la sortida: Per exemple, el model retorna text en prosa quan necessites JSON o s'allunya del to, i has d'apedaçar el prompt per a cada cas nou.
- El prompt del sistema no para de créixer: El prompt arriba a centenars o milers de línies i és difícil de gestionar.
- Ho pagues a cada crida: El prompt es torna a enviar i a processar a cada sol·licitud, de manera que el cost en tokens i la latència augmenten.
- Els canvis deixen de marcar la diferència: Les noves instruccions no milloren les sortides.
Fins i tot llavors, prova primer les solucions més econòmiques centrades en el prompt. Fes servir exemples few-shot per mostrar el patró al model (parells d'entrada/sortida), l'encadenament de prompts per dividir les tasques difícils en passos més petits o les crides a funcions per delegar consultes exactes o càlculs.
Quan té més sentit la RAG que l'ajust fi del model
La RAG canvia el que sap l'LLM, mentre que l'ajust fi canvia com es comporta. Si la mancança és de coneixement, sobretot de coneixement que canvia sovint o que es troba als teus propis documents, la solució és la RAG. Si la mancança és de comportament, fes un ajust fi.
L'ajust fi també modifica el que sap un model, però qualsevol dada que absorbeixi queda congelada en el moment de l'entrenament i perd vigència ràpidament en camps que evolucionen de pressa. A més, la informació queda integrada als pesos del model, de manera que aquests no conserven cap registre de la font d'on prové.
Actualitzar els documents font que fa servir una capa de recuperació és més ràpid i econòmic, i aquesta capa pot citar les fonts exactes que ha utilitzat. Per això és una opció millor quan necessites informació actualitzada i justificable.
L'inconvenient de la RAG? És una capa addicional que cal construir i mantenir, i afegeix latència.
A la pràctica, sovint necessitaràs totes dues coses. Els sistemes en producció combinen models ajustats amb RAG: els primers aporten un comportament coherent i la RAG, les dades actuals.
Errors, riscos i reptes habituals de l'ajust fi
Fins i tot quan l'ajust fi és l'eina adequada, comporta costos i riscos:
- Cost i temps: Recopilar dades d'entrenament netes i representatives és car, i també ho és la capacitat de càlcul per a l'entrenament.
- Oblit catastròfic: Quan s'entrena amb un conjunt de dades limitat, un model pot perdre habilitats generals i adquirir nous modes de fallada, cosa que provoca errors que el model base no cometia.
- Sobreajustament: Amb dades massa escasses o massa repetitives, el model memoritza els exemples d'entrenament en lloc d'aprendre'n els patrons, de manera que funciona bé amb les mostres d'entrenament però malament amb entrades reals.
- Desactualització: El coneixement integrat als pesos queda desfasat ràpidament, de manera que cal tornar a entrenar el model amb dades noves.
- Obsolescència: Quan surt un model més potent, sovint supera d'entrada el teu model ajustat i has de tornar a fer la feina.
- Reptes d'avaluació i reproducció: És difícil demostrar que el model ajustat supera el model base. A més, dues execucions d'entrenament en GPU amb la mateixa configuració poden produir models lleugerament diferents.
- Governança de dades: Entrenar amb dades pròpies o sensibles planteja qüestions de privadesa i de llicències; més endavant, un model pot revelar fragments de les dades amb què es va entrenar.
Els principals mètodes d'ajust fi
Els principals tipus d'ajust fi d'LLM es diferencien per la part del model que modifiquen: l'ajust fi complet torna a entrenar tot el model, mentre que els mètodes d'ajust fi eficient en paràmetres (PEFT), com LoRA i QLoRA, només actualitzen alguns pesos. Els mètodes PEFT requereixen una fracció de la memòria que necessita l'ajust fi complet i, amb la configuració adequada, poden igualar-ne els resultats.
L'ajust fi complet actualitza tots els pesos del model. És el mètode més car i el que comporta més risc d'oblit catastròfic. Reserva'l per a canvis de comportament importants quan tinguis les dades i la capacitat de càlcul necessàries.
L'alternativa és l'ajust fi eficient en paràmetres, o PEFT. És un terme genèric per a mètodes que congelen la major part del model i només entrenen un petit conjunt de paràmetres. Fa servir molta menys memòria i és menys propens a l'oblit, ja que el model base es manté intacte.
Amb rangs baixos, el PEFT aprèn menys que un ajust fi complet, però augmentar el rang i ajustar la taxa d'aprenentatge redueix la major part de la diferència en les tasques d'ajust per instruccions.
Entre els mètodes PEFT hi ha:
- LoRA (Low-Rank Adaptation): És el punt de partida habitual: congela els pesos originals i entrena un petit conjunt de paràmetres d'adaptador afegits, sovint menys de l'1% del total, de manera que es pot executar en una sola GPU de consum.
- QLoRA (Quantized Low-Rank Adaptation): Comprimeix el model base a una precisió de 4 bits abans d'aplicar LoRA, cosa que permet fer l'ajust fi d'un model gran en una sola GPU.
Mètode | Què actualitza | Maquinari necessari | Quan fer-lo servir |
Ajust fi complet | Tots els pesos del model | Un node amb diverses GPU per a models de la classe 7B, i molts més recursos per als més grans | Necessites un canvi de comportament profund i disposes de les dades i la capacitat de càlcul |
LoRA (PEFT) | Un petit conjunt de pesos d'adaptador afegits | Una sola GPU de consum | El teu punt de partida per defecte |
QLoRA (PEFT) | Adaptadors LoRA sobre un model base comprimit a 4 bits | Models molt grans en una sola GPU | Tens poca memòria, però vols un model base gran |
A més d'aquests, fem servir mètodes d'ajust per instruccions i per preferències, des de l'RLHF (Reinforcement Learning from Human Feedback, aprenentatge per reforç a partir de retroalimentació humana) fins a alternatives més lleugeres, com Direct Preference Optimization (DPO) i Odds Ratio Preference Optimization (ORPO), per definir com un model segueix les instruccions i s'ajusta a les preferències humanes.
Com fer l'ajust fi d'un LLM pas a pas
Un cop hagis decidit que l'ajust fi d'un LLM és la decisió encertada, aquest és el flux de treball.
Pas 1: Defineix la tasca i com mesuraràs l'èxit
Decideix quin comportament vols de l'LLM i com sabràs que l'has aconseguit.
Especifica la tasca concreta que vols que faci el model ajustat: per exemple, classificar tiquets de suport, resumir contractes en un format fix o generar codi amb l'estil propi de la teva empresa.
Després, defineix què és l'èxit. Entre les opcions habituals hi ha:
- Validesa de la sortida: Per exemple, el resultat es pot analitzar com a JSON vàlid o s'ajusta a l'estructura Markdown que necessites?
- Puntuacions automàtiques: Fes servir mètriques com BLEU o ROUGE, que comparen el text generat amb respostes de referència, o la precisió en la tasca sobre un conjunt etiquetat.
- Valoracions humanes: Una rúbrica amb puntuació o d'apte/no apte per a qualitats que un script avalua malament, com el to o la utilitat.
- Fiabilitat amb entrades difícils: Gestiona les entrades inusuals que feien ensopegar el model base?
Pas 2: Prepara el conjunt de dades
La qualitat de les dades determina l'èxit de l'ajust fi, així que esforça't a recopilar un conjunt de dades adequat per a l'ajust fi.
Dona format a les dades com a parells d'instrucció/resposta, en JSONL, on cada línia conté l'entrada (més qualsevol context) i la sortida exacta que vols obtenir.
Per exemple, consulta conjunts de dades públics com Alpaca-cleaned, d'instruccions generals, o Dolly, de Databricks, o el conjunt específic per a una tasca banking77, que inclou més de 13.000 consultes de suport reals etiquetades en 77 intencions.
Per a una tasca concreta, entre uns quants centenars i uns quants milers d'exemples nets i variats poden canviar el comportament, sempre que els exemples reflecteixin entrades reals de producció, inclosos els casos límit, i tinguin un format coherent.
Encara no tens parells d'entrada/sortida? Crea el conjunt a partir de les dades que ja tens, com ara tiquets de suport i les millors respostes que s'hi han donat, o documents i els seus resums.
Si només tens les sortides, fes servir un model més potent per generar una entrada plausible per a cadascuna, o escriu a mà un petit conjunt inicial i amplia'l amb un model «professor» més gran; després, conserva els millors parells.
Per acabar, divideix les dades en conjunts d'entrenament, validació i prova, perquè puguis avaluar el model amb exemples que no ha vist.
Pas 3: Tria un model base i un mètode
Comença amb un model de codi obert petit, d'entre 3.000 i 7.000 milions de paràmetres, i un mètode d'ajust fi eficient en paràmetres com LoRA o QLoRA.
Famílies obertes com Llama, Mistral i Qwen t'ofereixen una base sòlida que pots allotjar tu mateix, i els mètodes PEFT mantenen baixos els requisits de maquinari: QLoRA quantifica el model base a 4 bits, de manera que fer l'ajust fi d'un model de 7B només requereix una targeta de consum de 16-24 GB. L'ajust fi complet del mateix model necessita diverses vegades aquesta quantitat de memòria.
Pas 4: Estableix els hiperparàmetres d'entrenament
Aquests són els paràmetres clau de l'ajust fi d'un LLM i els intervals inicials recomanats:
- La taxa d'aprenentatge controla la mida de cada actualització dels pesos. Un estudi del 2024 de Biderman et al. va concloure que les taxes òptimes de LoRA eren aproximadament deu vegades més altes que les de l'ajust fi complet: normalment, de 5e-5 a 5e-4, enfront d'1e-5 a 5e-5. L'estudi recomana fer un escombratge d'1e-5 a 5e-4 i utilitzar el valor més alt que permeti un entrenament estable.
- La mida del lot és el nombre d'exemples dels quals aprèn el model abans de cada actualització dels pesos. En una sola GPU, utilitzeu un lot petit per dispositiu, d'1 a 8, i l'acumulació de gradients per arribar a un lot efectiu d'aproximadament 16 a 64.
- El nombre d'èpoques és el nombre de vegades que el model veu el conjunt de dades complet. Quan s'entrena el model per fer tasques específiques, una bona regla general és fer-ne entre 1 i 3, però les execucions amb LoRA sovint en necessiten més.
- El rang de LoRA (r) defineix la capacitat de l'adaptador, és a dir, quant pot aprendre. Comenceu amb un valor d'entre 8 i 32 per a tasques més senzilles i augmenteu-lo per a les més difícils: a l'estudi sobre LoRA de Biderman et al. citat més amunt, l'ajust per instruccions d'un model de 7B amb codi va necessitar un rang de 256 per igualar l'ajust fi complet, mentre que el rang 64 s'hi va acostar en matemàtiques.
- La longitud màxima de seqüència és l'entrada més llarga que processarà l'execució. Configureu-la perquè cobreixi els exemples més llargs, fins a la finestra de context del model, ja que qualsevol entrada més llarga es trunca.
- L'escalfament (warmup) i la planificació controlen com augmenta i canvia la taxa d'aprenentatge al llarg de l'execució. Un escalfament breu i un decaïment cosinusoidal són els valors predeterminats habituals. Tanmateix, l'estudi de Pareja et al. sobre models petits va constatar que eliminar l'escalfament no perjudicava les puntuacions finals.
Preneu aquests valors com a punts de partida per a una exploració d'hiperparàmetres, no com a configuracions fixes.
Pas 5: entrenar i supervisar la pèrdua
Mentre s'executa l'entrenament, observeu les corbes de pèrdua d'entrenament i de validació per comprovar si funciona.
La pèrdua mesura fins a quin punt les sortides del model s'allunyen dels vostres exemples, i hauria de baixar de manera constant a mesura que avança l'execució. La pèrdua d'entrenament correspon a les dades de les quals aprèn el model. La pèrdua de validació es calcula sobre els exemples reservats.
Si la pèrdua d'entrenament i la de validació baixen alhora, el model aprèn a generalitzar. Si la pèrdua d'entrenament continua baixant però la de validació s'estanca o puja, el model memoritza el conjunt d'entrenament en lloc d'aprendre el patró (sobreajustament).
Pas 6: avaluar i després desplegar
Una pèrdua d'entrenament baixa no garanteix que les sortides siguin correctes, així que avalueu el model ajustat segons els criteris que vau definir al pas 1.
Quan superi l'avaluació, teniu dues maneres de desplegar-lo:
- Serviu l'adaptador sobre el model base i carregueu-los tots dos en temps d'execució; així l'adaptador continua sent intercanviable.
- Fusioneu l'adaptador amb els pesos base per obtenir un únic model autònom que sigui més senzill d'allotjar.
Utilitzeu Perplexity per donar al vostre LLM accés a informació actualitzada
L'ajust fi és l'opció adequada quan voleu adaptar el comportament del model a les vostres necessitats.
Si el vostre model necessita informació actual, sobretot informació que canvia ràpidament, us cal un sistema RAG o una eina de cerca de tercers fiable.
Una pila de recuperació personalitzada funciona millor per a conjunts de dades propis, com ara la vostra wiki interna, l'historial d'atenció al client, els contractes o la documentació del producte.
Quan el coneixement que voleu utilitzar és públic, no cal crear una capa de recuperació a mida. Perplexity és un motor de respostes que ofereix respostes amb citacions en línia i clicables procedents d'un índex web en temps real. La seva Agent API proporciona aquestes respostes citades i basades en el web amb una sola crida, de manera que la vostra aplicació pot recórrer a fonts actuals.
Preguntes freqüents sobre l'ajust fi d'LLM
Es pot fer l'ajust fi d'un LLM de franc?
Sí, podeu fer l'ajust fi d'un LLM obert petit de franc. Per exemple, el nivell gratuït de Google Colab ofereix prou capacitat de GPU per executar QLoRA en un model de 3B a 8B, que és més que suficient per a una tasca concreta. Comenceu a pagar quan necessiteu més memòria, execucions més llargues o un model base més gran del que admet el nivell gratuït.
Necessiteu una GPU pròpia o podeu fer l'ajust fi al núvol?
No cal tenir una GPU pròpia per fer l'ajust fi d'LLM. Els serveis gestionats i els proveïdors de GPU al núvol lloguen el maquinari per hores, de manera que una sola GPU llogada és suficient per a una execució de QLoRA amb un model petit. Comprar una GPU només surt a compte si feu ajustos fins sovint o si heu de mantenir totes les dades a les vostres pròpies màquines.
Quant de temps triga l'ajust fi d'un LLM?
En un LLM petit, una execució pot acabar en uns minuts o en poques hores, segons la mida del conjunt de dades i el maquinari. Oumi, per exemple, va fer l'ajust fi complet d'un model de 0,8B en poc més d'una hora a la seva plataforma allotjada.
Els models més grans o les desenes de milers d'exemples allarguen aquest temps fins a un dia o més: les execucions de LoRA d'Emburse en un model de 7B van trigar 8 hores per a 5.000 exemples i unes 30 hores per a 50.000 en una sola GPU de 40 GB.
Es pot continuar actualitzant un model ajustat a mesura que canvien les dades?
Podeu tornar a fer l'ajust fi amb dades noves, però cada ronda consumeix recursos de càlcul i comporta el risc d'oblit catastròfic. Per al coneixement que canvia sovint, RAG sol ser la millor solució, ja que actualitzeu els documents font en lloc de tornar a entrenar el model.