Kaip tiksliai suderinti LLM [ir kada vietoj to naudoti RAG ar raginimus]
Šiame vadove žingsnis po žingsnio paaiškinama, kaip tiksliai suderinti LLM, palyginamas visapusiškas tikslusis derinimas su LoRA ir QLoRA bei parodoma, kada raginimai arba RAG yra geresnis būdas pagerinti modelio išvestis.

Didžiojo kalbos modelio (LLM) tikslusis derinimas – tai iš anksto apmokyto LLM tobulinimas naudojant nedidelį, konkrečiai užduočiai skirtą duomenų rinkinį, kad jis pateiktų rezultatus, kurių vien raginimais neišgautumėte.
Tikslųjį derinimą sudaro trys dalys: renkamos pavyzdinės įvesties ir išvesties poros, parodančios norimą elgseną, vykdomi mokymo ciklai, pakreipiantys modelio svorius jų link, o rezultatas palyginamas su pradinio modelio išvestimis. Parametrų požiūriu efektyvūs metodai, tokie kaip LoRA, šį procesą atpigina tiek, kad pakanka vieno GPU.
Jei LLM rezultatai jūsų netenkina, pirmiausia patobulinkite raginimus ir paieška papildytą generavimą (RAG). Tikslusis derinimas keičia LLM elgseną. Kai reikia, kad jis naudotų naujausią arba nuosavybinę informaciją, paprastai geriau rinktis raginimus ir RAG.
Štai kaip žingsnis po žingsnio tiksliai suderinti LLM, kokie yra pagrindiniai tiksliojo derinimo metodai (LoRA ir QLoRA) ir kokie iššūkiai bei klaidos gali sužlugdyti procesą.
Kas yra LLM tikslusis derinimas ir kuo jis skiriasi nuo LLM išankstinio mokymo
LLM išankstinis mokymas nuo nulio ugdo bendruosius modelio kalbinius gebėjimus naudojant milžinišką tekstyną, o LLM tikslusis derinimas pritaiko iš anksto apmokytą modelį vienai užduočiai naudojant nedidelį duomenų rinkinį.
LLM išankstinis mokymas – daug išteklių reikalaujantis etapas, kurio metu sukuriamas bazinis modelis. Jis mokosi iš plataus tekstyno, todėl įgyja bendrųjų gramatikos ir faktų žinių bei protavimo gebėjimų, tačiau nėra specializuotas jūsų užduočiai.
LLM tikslusis derinimas tęsia bazinio modelio mokymą naudojant nedidelį, kruopščiai atrinktą duomenų rinkinį, kad modelis pateiktų norimus rezultatus konkrečiai užduočiai ar naudojimo atvejui. Pavyzdžiui, tai gali būti nuoseklus formatas, prekės ženklo balsas ar tonas, konkrečiai sričiai būdingi dėsningumai arba patikimi įrankių ir funkcijų iškvietimai.
Kada LLM verta tiksliai suderinti, o kada geriau naudoti raginimus ar RAG
Norėdami pagerinti LLM veikimą, kopkite laiptais: raginimai -> RAG -> tikslusis derinimas.
Patobulinkite raginimus išsamesnėmis instrukcijomis ir naudokite RAG, kad modelis gautų naujausią informaciją. Tikslųjį derinimą taikykite tik tada, kai raginimų ir paieškos patobulinimai neduoda rezultatų.
Būdas | Ką keičia | Kada naudoti | Pagrindinis apribojimas |
Raginimų inžinerija | Jūsų siunčiama užklausa | Elgsena beveik atitinka norimą, o jums svarbu greitis ir galimybė atšaukti pakeitimus | Apribota esamais bazinio modelio gebėjimais |
RAG | Tai, ką modelis mato inferencijos metu | Faktai dažnai keičiasi, o LLM turi pasiekti naujausią informaciją | Padidina paieškos delsą ir reikalauja papildomos infrastruktūros; nekeičia elgsenos |
LLM tikslusis derinimas | Modelio svoriai (vidiniai modelio parametrai) | Jums reikia nuoseklios elgsenos, formato ar tono dideliu mastu arba trumpesnių raginimų kiekvienam iškvietimui | Pradinės sąnaudos, į svorius įdiegtos žinios pasensta, rizika pamiršti iš anksto išmoktą elgseną |
Kada geresni raginimai pranoksta tikslųjį derinimą, o kada jų nepakanka
Raginimai – greičiausias ir pigiausias svertas. Daugeliu atvejų tikslesni ir išsamesni raginimai leidžia pasiekti norimų elgsenos pokyčių.
Tačiau ilgesni raginimai sulėtina darbą, padidina jo kainą ir negali įveikti esamų modelio apribojimų.
Ženklai, kad raginimų galimybės gali būti išnaudotos:
- Nauji kraštutiniai atvejai vis gadina rezultatą: Pavyzdžiui, modelis grąžina laisvą tekstą, kai jums reikia JSON, arba nukrypsta nuo tono, o jūs kiekvienam naujam atvejui lopote raginimą.
- Sistemos raginimas vis ilgėja: Raginimas išauga iki šimtų ar tūkstančių eilučių, ir jį sunku valdyti.
- Už jį mokate kiekvieną kartą iškvietę modelį: Raginimas siunčiamas ir apdorojamas iš naujo su kiekviena užklausa, todėl auga žetonų sąnaudos ir delsa.
- Pakeitimai nebeduoda jokio poveikio: Naujos instrukcijos rezultatų nepagerina.
Net ir tada pirmiausia išbandykite pigesnius raginimo lygmens sprendimus. Naudokite kelių pavyzdžių (few-shot) metodą, kad parodytumėte modeliui šabloną (įvesties ir išvesties poras), raginimų grandines, kad sudėtingas užduotis suskaidytumėte į mažesnius žingsnius, arba funkcijų iškvietimo mechanizmus, kad tikslias paieškas ar skaičiavimus perduotumėte kitiems įrankiams.
Kada RAG yra prasmingesnis už modelio tikslųjį derinimą
RAG keičia tai, ką LLM žino, o LLM tikslusis derinimas – tai, kaip jis elgiasi. Jei trūksta žinių, ypač tokių, kurios dažnai keičiasi arba yra jūsų pačių dokumentuose, sprendimas yra RAG. Jei spraga susijusi su elgsena, rinkitės tikslųjį derinimą.
Tikslusis derinimas taip pat keičia tai, ką modelis žino, tačiau bet kokie jo įsisavinti faktai užfiksuojami mokymo metu ir sparčiai besikeičiančiose srityse greitai praranda aktualumą. Be to, informacija įdiegiama į modelio svorius, todėl juose neišlieka jokio įrašo apie jos šaltinį.
Atnaujinti šaltinio dokumentus, kuriuos naudoja paieškos sluoksnis, greičiau ir pigiau, be to, šis sluoksnis gali nurodyti tikslius panaudotus šaltinius. Todėl tai geresnis pasirinkimas, kai reikia pagrįstos ir naujausios informacijos.
RAG trūkumas? Tai papildomas sluoksnis, kurį reikia sukurti ir prižiūrėti, be to, jis padidina delsą.
Praktikoje dažnai prireiks abiejų. Gamybinės sistemos derina tiksliai suderintus modelius su RAG: vieną naudoja nuosekliai elgsenai, kitą – aktualiems faktams.
Dažniausi tiksliojo derinimo spąstai, rizika ir iššūkiai
Net kai tikslusis derinimas yra tinkamas įrankis, jis susijęs su sąnaudomis ir rizika:
- Sąnaudos ir laikas: Švarių, reprezentatyvių mokymo duomenų surinkimas ir mokymui reikalingi skaičiavimo ištekliai brangiai kainuoja.
- Katastrofiškas pamiršimas: Apmokytas naudojant siaurą duomenų rinkinį, modelis gali prarasti bendruosius įgūdžius ir pradėti klysti naujais būdais, todėl atsiranda klaidų, kurių bazinis modelis nedarė.
- Persimokymas: Kai duomenų per mažai arba jie per daug pasikartojantys, modelis įsimena jūsų mokymo pavyzdžius, užuot mokęsis dėsningumų, todėl gerai veikia su mokymo pavyzdžiais, bet prastai – su realiais įvesties duomenimis.
- Žinių pasenimas: Į svorius įdiegtos žinios greitai pasensta, todėl modelį tenka iš naujo apmokyti naujais duomenimis.
- Modelio pasenimas: Pasirodžius pajėgesniam modeliui, jis dažnai iš karto pranoksta jūsų tiksliai suderintą modelį, ir darbą tenka atlikti iš naujo.
- Vertinimo ir atkartojimo iššūkiai: Sunku įrodyti, kad tiksliai suderintas modelis pranoksta bazinį. Be to, du GPU mokymo paleidimai su tais pačiais nustatymais gali sukurti šiek tiek skirtingus modelius.
- Duomenų valdymas: Mokymas naudojant nuosavybinius ar jautrius duomenis kelia privatumo ir licencijavimo klausimų; modelis vėliau gali atskleisti savo mokymo duomenų fragmentus.
Pagrindiniai tiksliojo derinimo metodai
Pagrindiniai LLM tiksliojo derinimo tipai skiriasi tuo, kokią modelio dalį jie keičia: visiškas tikslusis derinimas iš naujo apmoko visą modelį, o parametrų požiūriu efektyvaus tiksliojo derinimo (PEFT) metodai, tokie kaip LoRA ir QLoRA, atnaujina tik dalį svorių. PEFT metodams reikia tik nedidelės dalies tos atminties, kurios prireikia visiškam tiksliajam derinimui, o tinkamai sukonfigūravus jie gali pasiekti tokių pačių rezultatų.
Visiškas tikslusis derinimas atnaujina kiekvieną modelio svorį. Tai brangiausias metodas, keliantis didžiausią katastrofiško pamiršimo riziką. Taikykite jį dideliems elgsenos pokyčiams, kai turite tam reikalingų duomenų ir skaičiavimo išteklių.
Alternatyva – parametrų požiūriu efektyvus tikslusis derinimas, arba PEFT. Tai bendras terminas metodams, kurie užšaldo didžiąją modelio dalį ir apmoko tik nedidelį parametrų rinkinį. Jam reikia gerokai mažiau atminties ir jis mažiau linkęs į pamiršimą, nes bazinis modelis lieka nepakitęs.
Esant žemiems rangams, PEFT išmoksta mažiau nei visiškas tikslusis derinimas, tačiau padidinus rangą ir suderinus mokymosi spartą didžioji dalis atotrūkio instrukcijų derinimo užduotyse panaikinama.
Prie PEFT metodų priskiriami:
- LoRA (žemo rango adaptacija, angl. Low-Rank Adaptation): Įprastas atspirties taškas. Šis metodas užšaldo pradinius svorius ir apmoko nedidelį papildomų adapterio parametrų rinkinį (dažnai mažiau nei 1 % visų parametrų), todėl jį galima vykdyti viename plataus vartojimo GPU.
- QLoRA (kvantuota žemo rango adaptacija, angl. Quantized Low-Rank Adaptation): Prieš taikant LoRA, bazinis modelis suglaudinamas iki 4 bitų tikslumo, todėl didelį modelį galima tiksliai suderinti viename GPU.
Metodas | Ką atnaujina | Aparatinės įrangos poreikiai | Kada naudoti |
Visiškas tikslusis derinimas | Kiekvienas modelio svoris | Kelių GPU mazgas 7B klasės modeliams, didesniems – kur kas daugiau | Jums reikia gilių elgsenos pokyčių, ir turite tam reikalingų duomenų bei skaičiavimo išteklių |
LoRA (PEFT) | Nedidelis papildomų adapterio svorių rinkinys | Vienas plataus vartojimo GPU | Numatytasis atspirties taškas |
QLoRA (PEFT) | LoRA adapteriai, pritaikyti iki 4 bitų suglaudintam baziniam modeliui | Labai dideli modeliai viename GPU | Trūksta atminties, bet norite didelio bazinio modelio |
Be to, naudojame instrukcijų ir preferencijų derinimo metodus – nuo RLHF (stiprinamojo mokymosi iš žmonių grįžtamojo ryšio, angl. Reinforcement Learning from Human Feedback) iki lengvesnių alternatyvų, tokių kaip tiesioginis preferencijų optimizavimas (DPO) ir šansų santykio preferencijų optimizavimas (ORPO), kad formuotume, kaip modelis vykdo instrukcijas ir atitinka žmonių preferencijas.
Kaip žingsnis po žingsnio tiksliai suderinti LLM
Kai nusprendėte, kad LLM tikslusis derinimas yra tinkamas sprendimas, štai darbo eiga.
1 žingsnis: apibrėžkite užduotį ir tai, kaip vertinsite sėkmę
Nuspręskite, kokios elgsenos norite iš LLM ir kaip žinosite, kad jos pasiekėte.
Įvardykite konkrečią užduotį, kurią turėtų atlikti tiksliai suderintas modelis, pavyzdžiui, klasifikuoti pagalbos užklausas, apibendrinti sutartis nustatytu formatu ar generuoti kodą pagal jūsų įmonės stilių.
Tada apibrėžkite sėkmę. Dažniausi variantai:
- Išvesties tinkamumas: Pavyzdžiui, ar rezultatą galima išanalizuoti kaip galiojantį JSON, ar jis atitinka reikiamą Markdown struktūrą?
- Automatiniai balai: Naudokite metrikas, pavyzdžiui, BLEU ar ROUGE, kurios lygina sugeneruotą tekstą su etaloniniais atsakymais, arba užduoties tikslumą pažymėtame rinkinyje.
- Žmonių vertinimai: Balų arba „tinka / netinka“ vertinimo kriterijai savybėms, kurių automatinis scenarijus negali gerai įvertinti, pavyzdžiui, tonui ar naudingumui.
- Patikimumas su sudėtingais įvesties duomenimis: Ar modelis susidoroja su neįprastais įvesties duomenimis, kurie suklaidino bazinį modelį?
2 žingsnis: paruoškite duomenų rinkinį
Duomenų kokybė lemia tiksliojo derinimo sėkmę, todėl skirkite pastangų tinkamam tiksliojo derinimo duomenų rinkiniui surinkti.
Suformatuokite duomenis kaip instrukcijų ir atsakymų poras JSONL formatu, kur kiekvienoje eilutėje yra įvestis (ir bet koks kontekstas) bei tiksli išvestis, kurią norite gauti.
Pavyzdžiui, peržiūrėkite viešus duomenų rinkinius, tokius kaip bendrųjų instrukcijų rinkinys Alpaca-cleaned ar Databricks Dolly, arba konkrečiai užduočiai skirtą banking77, kuriame yra daugiau nei 13 000 tikrų pagalbos užklausų, pažymėtų pagal 77 ketinimus.
Konkrečiai užduočiai elgseną pakeisti gali nuo kelių šimtų iki kelių tūkstančių švarių, įvairių pavyzdžių – jei tik pavyzdžiai atspindi realius gamybinės aplinkos įvesties duomenis, įskaitant kraštutinius atvejus, ir yra nuosekliai suformatuoti.
Dar neturite įvesties ir išvesties porų? Sudarykite rinkinį iš jau turimų duomenų, pavyzdžiui, pagalbos užklausų ir geriausių atsakymų į jas arba dokumentų ir jų santraukų.
Jei turite tik išvestis, naudokite pajėgesnį modelį, kad kiekvienai sugeneruotumėte tikėtiną įvestį, arba ranka parašykite nedidelį pradinį rinkinį ir išplėskite jį naudodami didesnį „mokytojo“ modelį, tada palikite geriausias poras.
Galiausiai padalykite duomenis į mokymo, validavimo ir testavimo rinkinius, kad galėtumėte vertinti pagal pavyzdžius, kurių modelis nematė.
3 žingsnis: pasirinkite bazinį modelį ir metodą
Pradėkite nuo nedidelio atvirojo kodo modelio su 3–7 milijardais parametrų ir parametrų požiūriu efektyvaus tiksliojo derinimo metodo, pavyzdžiui, LoRA ar QLoRA.
Atvirosios modelių šeimos, tokios kaip Llama, Mistral ir Qwen, suteikia tvirtą bazę, kurią galite talpinti patys, o PEFT metodai neleidžia aparatinės įrangos reikalavimams išaugti: QLoRA kvantuoja bazinį modelį iki 4 bitų, todėl 7B modeliui tiksliai suderinti pakanka plataus vartojimo vaizdo plokštės su 16–24 GB atminties. Visiškam to paties modelio tiksliajam derinimui reikia daug kartų daugiau atminties.
4 žingsnis: nustatykite mokymo hiperparametrus
Štai pagrindiniai LLM tiksliojo derinimo parametrai ir siūlomi pradiniai intervalai:
- Mokymosi sparta lemia, koks didelis yra kiekvienas svorių atnaujinimas. 2024 m. Biderman ir kt. atliktas tyrimas parodė, kad geriausios LoRA spartos buvo maždaug dešimt kartų didesnės nei visiško tiksliojo derinimo: paprastai nuo 5e-5 iki 5e-4, o visiško tiksliojo derinimo – nuo 1e-5 iki 5e-5. Tyrime patariama išbandyti reikšmes nuo 1e-5 iki 5e-4 ir naudoti didžiausią, su kuria mokymas išlieka stabilus.
- Paketo dydis – tai, iš kiek pavyzdžių modelis mokosi prieš kiekvieną svorių atnaujinimą. Naudodami vieną GPU, nustatykite mažą 1–8 pavyzdžių paketą vienam įrenginiui ir taikykite gradientų kaupimą, kad efektyvusis paketas siektų maždaug 16–64 pavyzdžius.
- Epochų skaičius – tai, kiek kartų modelis peržiūri visą duomenų rinkinį. Mokant modelį atlikti konkrečias užduotis, geras orientyras yra 1–3 epochos, tačiau LoRA mokymams dažnai reikia daugiau.
- LoRA rangas (r) nustato adapterio talpą, t. y. tai, kiek jis gali išmokti. Paprastesnėms užduotims pradėkite nuo 8–32, o sudėtingesnėms rangą didinkite: anksčiau minėtame Biderman ir kt. LoRA tyrime, 7B modelį derinant pagal instrukcijas programavimo užduotims, prireikė rango 256, kad rezultatai prilygtų visapusiškam tiksliajam derinimui, o matematikos užduotyse rangas 64 buvo visai arti šio rezultato.
- Maksimalus sekos ilgis – tai ilgiausia įvestis, kurią apdoros mokymo procesas. Nustatykite jį taip, kad apimtų ilgiausius jūsų pavyzdžius (bet neviršytų modelio konteksto lango), nes viskas, kas ilgesnė, bus sutrumpinta.
- Įšilimas ir spartos grafikas nustato, kaip mokymosi sparta iš pradžių didėja ir kaip ji kinta viso mokymo metu. Įprastos numatytosios reikšmės – trumpas įšilimas ir kosinusinis mažėjimas. Vis dėlto Pareja ir kt. mažų modelių tyrimas parodė, kad atsisakius įšilimo galutiniai rezultatai nepablogėjo.
Šias reikšmes laikykite parametrų perrinkimo atspirties tašku, o ne fiksuotais nustatymais.
5 žingsnis: mokymas ir nuostolio stebėjimas
Mokymo metu stebėkite mokymo ir validavimo nuostolio kreives, kad įsitikintumėte, jog viskas veikia.
Nuostolis parodo, kiek modelio išvestys skiriasi nuo jūsų pavyzdžių, ir mokymui vykstant jis turėtų tolygiai mažėti. Mokymo nuostolis apskaičiuojamas pagal duomenis, iš kurių modelis mokosi. Validavimo nuostolis apskaičiuojamas pagal atidėtus pavyzdžius.
Jei mokymo nuostolis ir validavimo nuostolis mažėja kartu, modelis mokosi apibendrinti. Jei mokymo nuostolis toliau mažėja, bet validavimo nuostolis nustoja mažėti arba pradeda didėti, modelis įsimena mokymo rinkinį, užuot išmokęs dėsningumą (persimokymas).
6 žingsnis: įvertinimas ir diegimas
Mažas mokymo nuostolis negarantuoja teisingų išvesčių, todėl įvertinkite tiksliai suderintą modelį pagal kriterijus, kuriuos nustatėte 1 žingsnyje.
Kai modelis atitinka kriterijus, jį galima įdiegti dviem būdais:
- Teikite adapterį kartu su baziniu modeliu ir abu įkelkite vykdymo metu – taip adapterį bus galima lengvai pakeisti kitu.
- Sujunkite adapterį su bazinio modelio svoriais ir gausite vieną savarankišką modelį, kurį paprasčiau talpinti.
Naudokite Perplexity, kad suteiktumėte savo LLM prieigą prie naujausios informacijos
Tikslusis derinimas yra tinkamas pasirinkimas, kai norite pritaikyti modelio elgseną savo poreikiams.
Jei jūsų modeliui reikia naujausios informacijos, ypač tokios, kuri greitai keičiasi, jums reikia RAG arba patikimo trečiosios šalies paieškos įrankio.
Individualiai sukurta informacijos paieškos sistema geriausiai tinka nuosaviems duomenų rinkiniams, pavyzdžiui, jūsų vidinei wiki, klientų aptarnavimo istorijai, sutartims ar produktų dokumentacijai.
Kai norimos naudoti žinios yra viešos, nereikia kurti specialaus informacijos paieškos sluoksnio. Perplexity – tai atsakymų variklis, kurio atsakymuose pateikiamos tekste įterptos spustelėjamos citatos iš nuolat atnaujinamo žiniatinklio indekso. Jo Agent API vienu iškvietimu pateikia tokius žiniatinklio šaltiniais pagrįstus atsakymus su citatomis, todėl jūsų programa gali remtis naujausiais šaltiniais.
Dažniausiai užduodami klausimai apie LLM tikslųjį derinimą
Ar LLM galima tiksliai suderinti nemokamai?
Taip, mažą atvirąjį LLM galima tiksliai suderinti nemokamai. Pavyzdžiui, nemokama Google Colab versija suteikia pakankamai GPU išteklių paleisti QLoRA su 3B–8B modeliu – to visiškai pakanka konkrečiai užduočiai. Mokėti tenka pradėti tada, kai prireikia daugiau atminties, ilgesnių mokymų arba didesnio bazinio modelio, nei leidžia nemokama versija.
Ar reikia turėti savo GPU, ar tikslųjį derinimą galima atlikti debesyje?
Norint tiksliai suderinti LLM, nebūtina turėti savo GPU. Valdomųjų paslaugų teikėjai ir GPU debesijos paslaugų teikėjai nuomoja aparatinę įrangą valandiniu tarifu, todėl mažo modelio QLoRA mokymui pakanka vieno išsinuomoto GPU. Pirkti GPU apsimoka tik tuo atveju, jei tiksliai derinate dažnai arba visus duomenis privalote laikyti savo kompiuteriuose.
Kiek laiko trunka LLM tikslusis derinimas?
Mažo LLM mokymas, priklausomai nuo duomenų rinkinio dydžio ir aparatinės įrangos, gali užtrukti nuo kelių minučių iki kelių valandų. Pavyzdžiui, Oumi savo talpinamoje platformoje visapusiškai tiksliai suderino 0,8B modelį per šiek tiek daugiau nei valandą.
Su didesniais modeliais ar dešimtimis tūkstančių pavyzdžių šis laikas gali išsitęsti iki paros ar ilgiau: Emburse atlikti LoRA mokymai su 7B modeliu viename 40 GB GPU su 5 000 pavyzdžių truko 8 valandas, o su 50 000 pavyzdžių – apie 30 valandų.
Ar galima toliau atnaujinti tiksliai suderintą modelį, kai keičiasi jūsų duomenys?
Modelį galima iš naujo tiksliai suderinti naudojant naujus duomenis, tačiau kiekvienas toks ciklas reikalauja skaičiavimo išteklių ir kelia katastrofinio pamiršimo riziką. Dažnai kintančioms žinioms paprastai geriau tinka RAG, nes tuomet atnaujinate šaltinių dokumentus, o ne mokote modelį iš naujo.