Kā precīzi pielāgot LLM [un kad tā vietā izmantot RAG vai uzvednes]

Šajā rokasgrāmatā soli pa solim izskaidrots, kā precīzi pielāgot LLM, salīdzināta pilna precīzā pielāgošana ar LoRA un QLoRA, kā arī parādīts, kad uzvednes vai RAG ir labākais veids, kā uzlabot modeļa izvades.

Diagram comparing pre-training and fine-tuning: pre-training turns a vast general text corpus (trillions of tokens, large labs, huge compute) into a base model, while fine-tuning combines a base model with a small task-specific dataset (a few hundred to a few thousand examples, one GPU, hours) to produce a specialized model.

Lielā valodas modeļa (LLM) precizēšana nozīmē iepriekš apmācīta LLM pilnveidošanu ar nelielu, uzdevumam specifisku datu kopu, lai tas sniegtu rezultātus, kurus nevar iegūt tikai ar uzvednēm.

Precizēšanas gaitā tiek savākti ievades/izvades piemēru pāri, kas parāda vēlamo uzvedību, veiktas apmācības iterācijas, kas pietuvina modeļa svarus šiem piemēriem, un rezultāts tiek salīdzināts ar sākotnējā modeļa izvadēm. Parametru ziņā efektīvas metodes, piemēram, LoRA, padara šo procesu tik lētu, ka to var veikt ar vienu GPU.

Ja neesat apmierināti ar LLM izvadēm, vispirms pilnveidojiet uzvednes un izguvē papildinātu ģenerēšanu (RAG). Precizēšana maina LLM uzvedību. Ja vēlaties, lai tas izmantotu jaunāko vai jūsu uzņēmumam piederošu informāciju, parasti labāka izvēle ir uzvednes un RAG.

Šeit aprakstīts, kā soli pa solim precizēt LLM, kādas ir galvenās precizēšanas metodes (LoRA un QLoRA), kā arī izaicinājumi un kļūdas, kas var izjaukt procesu.

Kas ir LLM precizēšana un kā tā atšķiras no LLM priekšapmācības

LLM priekšapmācība no nulles veido modeļa vispārējās valodas spējas, izmantojot milzīgu korpusu, savukārt LLM precizēšana pielāgo jau priekšapmācītu modeli vienam uzdevumam, izmantojot nelielu datu kopu.

LLM priekšapmācība ir resursietilpīgs posms, kura rezultātā tiek iegūts bāzes modelis. Tas mācās no plaša teksta korpusa, kas tam sniedz vispārīgu gramatikas izpratni, faktu zināšanas un spriešanas spējas, taču nenodrošina specializāciju jūsu uzdevumam.

LLM precizēšana turpina bāzes modeļa apmācību ar nelielu, rūpīgi atlasītu datu kopu, lai tas sniegtu vēlamās izvades konkrētam uzdevumam vai lietojuma gadījumam. Tas var būt, piemēram, konsekvents formāts, zīmola balss vai tonis, jomai raksturīgas likumsakarības vai uzticami rīku un funkciju izsaukumi.

Kad precizēt LLM un kad tā vietā izmantot uzvednes vai RAG

Lai uzlabotu LLM veiktspēju, virzieties pakāpeniski: uzvednes -> RAG -> precizēšana.

Pilnveidojiet uzvednes ar detalizētākām instrukcijām un izmantojiet RAG, lai sniegtu modelim aktuālu informāciju. Precizēšanu izmantojiet tikai tad, ja uzvedņu un izguves uzlabojumi nedod rezultātu.

Pieeja

Ko tā maina

Kad to izmantot

Galvenais ierobežojums

Uzvedņu inženierija

Jūsu nosūtītais pieprasījums

Uzvedība ir tuvu vēlamajai, un jums ir svarīgs ātrums un iespēja izmaiņas viegli atsaukt

Ierobežots ar bāzes modeļa esošajām spējām

RAG

Tas, ko modelis redz secināšanas laikā

Fakti bieži mainās, un LLM ir nepieciešama piekļuve aktuālai informācijai

Rada izguves aizturi un prasa papildu infrastruktūru; nemaina uzvedību

LLM precizēšana

Modeļa svari (modeļa iekšējie parametri)

Jums nepieciešama konsekventa uzvedība, formāts vai tonis plašā mērogā vai īsākas uzvednes katrā izsaukumā

Sākotnējās izmaksas, svaros iestrādātās zināšanas noveco, priekšapmācībā apgūtās uzvedības aizmiršanas risks

Kad labākas uzvednes pārspēj precizēšanu un kad ar tām nepietiek

Uzvednes ir ātrākais un lētākais rīks. Daudzos gadījumos precīzākas un detalizētākas uzvednes ļauj panākt vēlamās uzvedības izmaiņas.

Taču garākas uzvednes palēnina darbu, padara to dārgāku un nespēj pārvarēt modeļa esošos ierobežojumus.

Pazīmes, ka uzvedņu uzlabošana, iespējams, ir sasniegusi savas robežas:

  • Jauni robežgadījumi atkal un atkal sabojā izvadi: piemēram, modelis atgriež brīvu tekstu, lai gan jums nepieciešams JSON, vai novirzās no vēlamā toņa, un jūs labojat uzvedni katram jaunam gadījumam.
  • Sistēmas uzvedne kļūst arvien garāka: uzvedne sasniedz simtiem vai tūkstošiem rindu, un to ir grūti pārvaldīt.
  • Jūs par to maksājat katrā izsaukumā: uzvedne tiek atkārtoti nosūtīta un apstrādāta katrā pieprasījumā, tāpēc pieaug tokenu izmaksas un aizture.
  • Izmaiņas vairs nedod efektu: jaunas instrukcijas neuzlabo izvades.

Pat tad vispirms izmēģiniet lētākus risinājumus uzvedņu līmenī. Izmantojiet dažu piemēru (few-shot) uzvednes, lai parādītu modelim vēlamo paraugu (ievades/izvades pārus), uzvedņu ķēdēšanu, lai sadalītu sarežģītus uzdevumus mazākos soļos, vai funkciju izsaukšanas mehānismus, lai deleģētu precīzu datu meklēšanu vai aprēķinus.

Kad RAG ir piemērotāka par modeļa precizēšanu

RAG maina to, ko LLM zina, savukārt LLM precizēšana maina tā uzvedību. Ja trūkst zināšanu, it īpaši tādu, kas bieži mainās vai atrodas jūsu dokumentos, risinājums ir RAG. Ja problēma ir uzvedībā, izmantojiet precizēšanu.

Precizēšana maina arī modeļa zināšanas, taču visi apgūtie fakti tiek iesaldēti apmācības brīdī un strauji mainīgās jomās ātri zaudē aktualitāti. Turklāt informācija tiek iestrādāta modeļa svaros, tāpēc ziņas par tās avotu netiek saglabātas.

Izguves slānī izmantoto avota dokumentu atjaunināšana ir ātrāka un lētāka, turklāt šis slānis var norādīt precīzus izmantotos avotus. Tāpēc RAG ir labāka izvēle, ja nepieciešama pamatota un aktuāla informācija.

RAG trūkums? Tas ir papildu slānis, kas jāizveido un jāuztur, un tas palielina aizturi.

Praksē bieži vien ir nepieciešami abi. Ražošanas sistēmās precizētus modeļus apvieno ar RAG, izmantojot vienu konsekventai uzvedībai, bet otru — aktuāliem faktiem.

Biežākās precizēšanas kļūdas, riski un izaicinājumi

Pat ja precizēšana ir piemērotais rīks, tā rada izmaksas un riskus:

  • Izmaksas un laiks: tīru, reprezentatīvu apmācības datu apkopošana un apmācībai nepieciešamie skaitļošanas resursi ir dārgi.
  • Katastrofāla aizmiršana: apmācīts ar šauru datu kopu, modelis var zaudēt vispārējās prasmes un iegūt jaunus kļūmju veidus, kā rezultātā rodas kļūdas, kuras bāzes modelis nepieļāva.
  • Pārpielāgošana: ja datu ir pārāk maz vai tie ir pārāk vienveidīgi, modelis iegaumē jūsu apmācības piemērus, nevis apgūst likumsakarības, tāpēc tas labi darbojas ar apmācības paraugiem, bet slikti — ar reāliem ievaddatiem.
  • Zināšanu novecošana: svaros iestrādātās zināšanas ātri noveco, tāpēc modelis ir atkārtoti jāapmāca ar jauniem datiem.
  • Modeļa novecošana: kad tiek izlaists jaudīgāks modelis, tas bieži jau sākotnēji pārspēj jūsu precizēto modeli, un darbs ir jāveic no jauna.
  • Novērtēšanas un atkārtojamības izaicinājumi: ir grūti pierādīt, ka precizētais modelis darbojas labāk par bāzes modeli. Turklāt divi GPU apmācības cikli ar vienādiem iestatījumiem var radīt nedaudz atšķirīgus modeļus.
  • Datu pārvaldība: apmācība ar uzņēmumam piederošiem vai sensitīviem datiem rada privātuma un licencēšanas jautājumus; modelis vēlāk var atklāt fragmentus no datiem, ar kuriem tas tika apmācīts.

Galvenās precizēšanas metodes

Galvenie LLM precizēšanas veidi atšķiras pēc tā, cik lielu modeļa daļu tie maina: pilnā precizēšana atkārtoti apmāca visu modeli, savukārt parametru ziņā efektīvas precizēšanas (PEFT) metodes, piemēram, LoRA un QLoRA, atjaunina tikai daļu svaru. PEFT metodēm nepieciešama tikai neliela daļa no pilnās precizēšanas atmiņas, un ar pareiziem iestatījumiem tās var sasniegt līdzvērtīgus rezultātus.

Pilnā precizēšana atjaunina visus modeļa svarus. Tā ir visdārgākā un rada vislielāko katastrofālas aizmiršanas risku. Izmantojiet to tikai būtiskām uzvedības izmaiņām, ja jums ir tām nepieciešamie dati un skaitļošanas resursi.

Alternatīva ir parametru ziņā efektīva precizēšana jeb PEFT. Tas ir vispārīgs apzīmējums metodēm, kas iesaldē lielāko daļu modeļa un apmāca tikai nelielu parametru kopu. Tai nepieciešams daudz mazāk atmiņas, un tā ir mazāk pakļauta aizmiršanai, jo bāzes modelis paliek neskarts.

Pie zemiem rangiem PEFT apgūst mazāk nekā pilnā precizēšana, taču ranga palielināšana un mācīšanās ātruma pielāgošana novērš lielāko daļu atšķirību instrukciju pielāgošanas uzdevumos.

Pie PEFT metodēm pieder:

  • LoRA (Low-Rank Adaptation, zema ranga adaptācija): ierastais sākumpunkts — iesaldē sākotnējos svarus un apmāca nelielu pievienoto adaptera parametru kopu, kas bieži ir mazāk nekā 1 % no kopējā apjoma, tāpēc to var darbināt ar vienu patērētāja klases GPU.
  • QLoRA (Quantized Low-Rank Adaptation, kvantizēta zema ranga adaptācija): pirms LoRA lietošanas saspiež bāzes modeli līdz 4 bitu precizitātei, kas ļauj precizēt lielu modeli ar vienu GPU.

Metode

Ko tā atjaunina

Aparatūras prasības

Kad to izmantot

Pilnā precizēšana

Visi modeļa svari

Vairāku GPU mezgls 7B klases modeļiem, lielākiem — daudz vairāk

Jums nepieciešamas būtiskas uzvedības izmaiņas, un ir pieejami dati un skaitļošanas resursi

LoRA (PEFT)

Neliela pievienoto adaptera svaru kopa

Viens patērētāja klases GPU

Jūsu noklusējuma sākumpunkts

QLoRA (PEFT)

LoRA adapteri, kas pievienoti 4 bitos saspiestam bāzes modelim

Ļoti lieli modeļi ar vienu GPU

Jums trūkst atmiņas, bet vēlaties izmantot lielu bāzes modeli

Papildus tām mēs izmantojam instrukciju un preferenču pielāgošanas metodes, lai noteiktu, kā modelis izpilda instrukcijas un atbilst cilvēku preferencēm: no RLHF (Reinforcement Learning from Human Feedback, stimulētā mācīšanās no cilvēku atgriezeniskās saites) līdz vieglākām alternatīvām, piemēram, Direct Preference Optimization (DPO) un Odds Ratio Preference Optimization (ORPO).

Kā soli pa solim precizēt LLM

Kad esat nolēmuši, ka LLM precizēšana ir pareizais risinājums, izmantojiet šo darbplūsmu.

1. solis: definējiet uzdevumu un to, kā mērīsiet panākumus

Izlemiet, kādu uzvedību vēlaties no LLM un kā pārliecināsieties, ka to esat panākuši.

Nosauciet konkrēto uzdevumu, kas jāveic precizētajam modelim, piemēram, atbalsta pieteikumu klasificēšana, līgumu kopsavilkumu veidošana noteiktā formātā vai koda ģenerēšana jūsu uzņēmuma stilā.

Pēc tam definējiet, kas ir panākumi. Biežākās iespējas:

  • Izvades derīgums: piemēram, vai rezultātu var parsēt kā derīgu JSON vai tas atbilst nepieciešamajai Markdown struktūrai?
  • Automātiskie vērtējumi: izmantojiet tādus rādītājus kā BLEU vai ROUGE, kas salīdzina ģenerēto tekstu ar atsauces atbildēm, vai uzdevuma precizitāti iezīmētā datu kopā.
  • Cilvēku vērtējumi: punktu vai „izturēts/neizturēts” vērtēšanas kritēriji tādām īpašībām, kuras skripts novērtē slikti, piemēram, tonim vai noderīgumam.
  • Uzticamība sarežģītu ievaddatu gadījumā: vai modelis tiek galā ar neparastiem ievaddatiem, kas sagādāja grūtības bāzes modelim?

2. solis: sagatavojiet datu kopu

Datu kvalitāte nosaka precizēšanas panākumus, tāpēc rūpīgi savāciet piemērotu precizēšanas datu kopu.

Formatējiet datus kā instrukciju/atbilžu pārus JSONL formātā, kur katrā rindā ir ievade (kopā ar kontekstu, ja tāds ir) un precīza izvade, kuru vēlaties saņemt.

Piemēram, aplūkojiet publiskas datu kopas, tādas kā vispārīgo instrukciju datu kopa Alpaca-cleaned vai Databricks Dolly, vai uzdevumam specifisko banking77, kurā ir vairāk nekā 13 000 reālu atbalsta pieprasījumu, kas iezīmēti atbilstoši 77 nolūkiem.

Konkrētam uzdevumam uzvedības maiņai var pietikt ar dažiem simtiem līdz dažiem tūkstošiem tīru, daudzveidīgu piemēru — ja vien piemēri atspoguļo reālus ražošanas vides ievaddatus, tostarp robežgadījumus, un ir konsekventi formatēti.

Vēl nav ievades/izvades pāru? Izveidojiet kopu no jau esošajiem datiem, piemēram, atbalsta pieteikumiem un labākajām atbildēm uz tiem vai dokumentiem un to kopsavilkumiem.

Ja jums ir tikai izvades, izmantojiet jaudīgāku modeli, lai katrai no tām ģenerētu ticamu ievadi, vai manuāli uzrakstiet nelielu sākuma kopu un paplašiniet to ar lielāku „skolotāja” modeli, pēc tam saglabājiet labākos pārus.

Visbeidzot sadaliet datus apmācības, validācijas un testa kopās, lai varētu veikt mērījumus ar piemēriem, kurus modelis nav redzējis.

3. solis: izvēlieties bāzes modeli un metodi

Sāciet ar nelielu atvērtā koda modeli ar 3–7 miljardiem parametru un parametru ziņā efektīvu precizēšanas metodi, piemēram, LoRA vai QLoRA.

Atvērtās modeļu saimes, piemēram, Llama, Mistral un Qwen, nodrošina spēcīgu bāzi, ko varat mitināt paši, un PEFT metodes uztur zemas aparatūras prasības: QLoRA kvantizē bāzes modeli līdz 4 bitiem, tāpēc 7B modeļa precizēšanai pietiek ar 16–24 GB patērētāja klases videokarti. Šī paša modeļa pilnai precizēšanai nepieciešams daudzkārt vairāk atmiņas.

4. solis: iestatiet apmācības hiperparametrus

Lūk, galvenie LLM precizēšanas parametri un ieteicamie sākotnējie diapazoni:

  • Mācīšanās ātrums nosaka, cik liels ir katrs svaru atjauninājums. Bidermana u. c. 2024. gada pētījumā konstatēts, ka LoRA optimālās vērtības ir aptuveni desmit reizes augstākas nekā pilnajai precizēšanai — parasti no 5e-5 līdz 5e-4, salīdzinot ar 1e-5 līdz 5e-5. Pētījumā ieteikts pārbaudīt vērtības no 1e-5 līdz 5e-4 un izmantot augstāko vērtību, ar kuru apmācība noris stabili.
  • Partijas lielums ir piemēru skaits, no kuriem modelis mācās pirms katras svaru atjaunināšanas. Ar vienu GPU izmantojiet nelielu partiju katrai ierīcei — no 1 līdz 8 piemēriem — un gradientu uzkrāšanu, lai sasniegtu efektīvo partijas lielumu aptuveni no 16 līdz 64.
  • Epohu skaits norāda, cik reizes modelis redz visu datu kopu. Apmācot modeli konkrētu uzdevumu veikšanai, labs orientieris ir 1–3 epohas, taču LoRA apmācībām bieži vajag vairāk.
  • LoRA rangs (r) nosaka adaptera kapacitāti jeb to, cik daudz tas spēj iemācīties. Vienkāršākiem uzdevumiem sāciet ar 8 līdz 32 un sarežģītākiem to palieliniet: iepriekš minētajā Bidermana u. c. LoRA pētījumā, apmācot 7B modeli instrukciju izpildei programmēšanas uzdevumos, bija nepieciešams rangs 256, lai sasniegtu pilnas precīzās pielāgošanas rezultātus, savukārt matemātikas uzdevumos tos gandrīz sasniedza jau rangs 64.
  • Maksimālais secības garums ir garākā ievade, ko apmācība apstrādās. Iestatiet to tā, lai tas aptvertu jūsu garākos piemērus, nepārsniedzot modeļa konteksta logu, jo viss, kas ir garāks, tiek apgriezts.
  • Iesildīšana un grafiks nosaka, kā mācīšanās ātrums apmācības gaitā pieaug un mainās. Parastie noklusējuma iestatījumi ir īsa iesildīšana un kosinusa samazināšana. Tomēr Parejas u. c. pētījumā par maziem modeļiem atklājās, ka iesildīšanas izlaišana gala rezultātus nepasliktināja.

Uztveriet šīs vērtības kā sākumpunktu hiperparametru pārmeklēšanai, nevis kā nemainīgus iestatījumus.

5. solis: apmāciet modeli un uzraugiet zudumu

Apmācības laikā sekojiet līdzi apmācības un validācijas zuduma līknēm, lai redzētu, vai apmācība darbojas.

Zudums mēra, cik tālu modeļa izvades ir no jūsu piemēriem, un apmācības gaitā tam vajadzētu vienmērīgi samazināties. Apmācības zudums attiecas uz datiem, no kuriem modelis mācās. Validācijas zudumu mēra ar atlicinātajiem piemēriem.

Ja apmācības zudums un validācijas zudums samazinās vienlaikus, modelis mācās vispārināt. Ja apmācības zudums turpina samazināties, bet validācijas zudums vairs nesamazinās vai sāk pieaugt, modelis iegaumē apmācības kopu, nevis apgūst likumsakarību (pārpielāgošanās).

6. solis: novērtējiet un pēc tam izvietojiet

Zems apmācības zudums negarantē pareizas izvades, tāpēc novērtējiet precīzi pielāgoto modeli pēc kritērijiem, ko noteicāt 1. solī.

Kad modelis ir izturējis novērtējumu, to var izvietot divos veidos:

  • Izvietojiet adapteri virs bāzes modeļa un ielādējiet abus izpildes laikā — tā adapteri var viegli nomainīt.
  • Apvienojiet adapteri ar bāzes svariem, lai iegūtu vienu patstāvīgu modeli, ko ir vienkāršāk mitināt.

Izmantojiet Perplexity, lai nodrošinātu savam LLM piekļuvi aktuālai informācijai

Precīzā pielāgošana ir pareizā izvēle, ja vēlaties pielāgot modeļa uzvedību savām vajadzībām.

Ja modelim ir nepieciešama aktuāla informācija, it īpaši tāda, kas ātri mainās, jums vajag RAG vai uzticamu trešās puses meklēšanas rīku.

Pielāgota izgūšanas sistēma vislabāk der privātām datu kopām, piemēram, jūsu iekšējai wiki vietnei, klientu atbalsta vēsturei, līgumiem vai produktu dokumentācijai.

Ja zināšanas, ko vēlaties izmantot, ir publiski pieejamas, nav nepieciešams veidot pielāgotu izgūšanas slāni. Perplexity ir atbilžu dzinējs, kas sniedz atbildes ar iekļautām, noklikšķināmām atsaucēm no reāllaika tīmekļa indeksa. Tā Agent API vienā izsaukumā nodrošina šīs uz tīmekļa datiem balstītās atbildes ar atsaucēm, lai jūsu lietotne varētu izmantot aktuālus avotus.

Biežāk uzdotie jautājumi par LLM precīzo pielāgošanu

Vai LLM var precīzi pielāgot bez maksas?

Jā, nelielu atvērtu LLM var precīzi pielāgot bez maksas. Piemēram, Google Colab bezmaksas plāns nodrošina pietiekamu GPU jaudu, lai palaistu QLoRA 3B–8B modelim, un ar to pilnībā pietiek konkrētam uzdevumam. Maksāt nākas tad, kad vajag vairāk atmiņas, ilgākas apmācības vai lielāku bāzes modeli, nekā spēj nodrošināt bezmaksas plāns.

Vai jums vajag savu GPU, vai arī precīzo pielāgošanu var veikt mākonī?

Lai precīzi pielāgotu LLM, jums nav nepieciešams savs GPU. Pārvaldītie pakalpojumi un GPU mākoņpakalpojumu sniedzēji iznomā aparatūru uz stundām, tāpēc nelielā modeļa QLoRA apmācībai pietiek ar vienu nomātu GPU. GPU iegāde atmaksājas tikai tad, ja precīzo pielāgošanu veicat bieži vai visi dati jāglabā jūsu pašu datoros.

Cik ilgi aizņem LLM precīzā pielāgošana?

Nelielam LLM apmācība var ilgt no dažām minūtēm līdz dažām stundām atkarībā no datu kopas lieluma un aparatūras. Piemēram, Oumi savā mitinātajā platformā pilnībā precīzi pielāgoja 0,8B modeli nedaudz vairāk nekā stundas laikā.

Lielāki modeļi vai desmitiem tūkstošu piemēru šo laiku pagarina līdz dienai vai vairāk: Emburse LoRA apmācības 7B modelim ar vienu 40 GB GPU ilga 8 stundas ar 5000 piemēriem un aptuveni 30 stundas ar 50 000 piemēriem.

Vai precīzi pielāgotu modeli var turpināt atjaunināt, mainoties jūsu datiem?

Modeli var atkārtoti precīzi pielāgot ar jauniem datiem, taču katra kārta prasa skaitļošanas resursus un rada katastrofālas aizmiršanas risku. Bieži mainīgām zināšanām RAG parasti ir labāks risinājums, jo jūs atjaunināt avota dokumentus, nevis atkārtoti apmācāt modeli.