Kuidas LLM-i peenhäälestada [ja millal kasutada selle asemel RAG-i või viipe]

See juhend selgitab samm-sammult, kuidas LLM-i peenhäälestada, võrdleb täielikku peenhäälestust LoRA ja QLoRA-ga ning näitab, millal on viipade koostamine või RAG parem viis mudeli väljundite parandamiseks.

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.

Suure keelemudeli (LLM) peenhäälestamine tähendab eeltreenitud LLM-i täiendavat treenimist väikesel ülesandepõhisel andmestikul, et see annaks tulemusi, mida ainuüksi viipadega ei saavuta.

Peenhäälestamiseks tuleb koguda sisendi ja väljundi näidispaare, mis näitavad soovitud käitumist, teha treeningkäike, mis nihutavad mudeli kaalusid nende suunas, ja võrrelda tulemust algse mudeli väljunditega. Parameetritõhusad meetodid, nagu LoRA, muudavad selle nii odavaks, et seda saab käitada ühel GPU-l.

Kui LLM-i väljundid sind ei rahulda, täiusta esmalt oma viipu ja otsinguga täiendatud genereerimist (RAG). Peenhäälestus muudab seda, kuidas LLM käitub. Kui vajad, et see kasutaks värsket või ettevõttesisest teavet, on viipade täiustamine ja RAG tavaliselt parem valik.

Siit leiad juhise, kuidas LLM-i samm-sammult peenhäälestada, peamised peenhäälestusmeetodid (LoRA ja QLoRA) ning väljakutsed ja vead, mis võivad protsessi nurjata.

Mis on LLM-i peenhäälestus ja mille poolest see erineb LLM-i eeltreenimisest

LLM-i eeltreenimine loob mudeli üldise keeleoskuse nullist tohutul tekstikorpusel, LLM-i peenhäälestus aga kohandab eeltreenitud mudelit väikesel andmestikul ühe kindla ülesande jaoks.

LLM-i eeltreenimine on ressursimahukas etapp, mille tulemusel valmib baasmudel. See õpib laiast tekstikorpusest, mis annab talle üldise grammatika, faktid ja arutlusoskuse, kuid mitte spetsialiseerumist sinu ülesandele.

LLM-i peenhäälestus jätkab baasmudeli treenimist väikesel kureeritud andmestikul, et see annaks konkreetse ülesande või kasutusjuhu jaoks soovitud väljundeid. Mõtle näiteks ühtlasele vormingule, brändi häälele või toonile, valdkonnapõhistele mustritele või usaldusväärsetele tööriista- ja funktsioonikutsetele.

Millal LLM-e peenhäälestada ja millal kasutada selle asemel viipu või RAG-i

LLM-i jõudluse parandamiseks liigu redelil samm-sammult ülespoole: viipade täiustamine -> RAG -> peenhäälestus.

Täiusta oma viipu üksikasjalikumate juhistega ja kasuta RAG-i, et anda mudelile ajakohast teavet. Kasuta peenhäälestust ainult siis, kui viipade ja otsingu täiustamine ei anna soovitud tulemust.

Lähenemisviis

Mida see muudab

Kasuta, kui

Peamine piirang

Viipade koostamine

Saadetav päring

Käitumine on peaaegu õige ning soovid kiirust ja tagasivõetavust

Piiratud baasmudeli olemasolevate võimetega

RAG

Mida mudel järeldamise ajal näeb

Faktid muutuvad sageli ja LLM peab pääsema ligi ajakohasele teabele

Lisab otsingulatentsust ja taristut; ei muuda käitumist

LLM-i peenhäälestus

Mudeli kaalud (mudeli sisemised parameetrid)

Vajad suures mahus ühtlast käitumist, vormingut või tooni või iga kutse puhul lühemaid viipu

Esialgsed kulud, kaaludesse talletatud teadmised vananevad, eeltreenitud käitumise unustamise oht

Millal on paremad viibad peenhäälestusest tõhusamad ja millal neist ei piisa

Viipade täiustamine on kiireim ja odavaim hoob. Paljudel juhtudel saavutavad täpsemad ja üksikasjalikumad viibad soovitud käitumismuutused.

Pikemad viibad aga aeglustavad tööd ja muudavad selle kallimaks ega suuda ületada mudeli olemasolevaid piiranguid.

Märgid, et viipade täiustamine võib olla jõudnud oma piirini:

  • Uued äärejuhud rikuvad pidevalt väljundit: näiteks tagastab mudel JSON-i asemel proosat või kaldub toonist kõrvale ning sa paikad viipa iga uue juhtumi jaoks.
  • Süsteemiviip muudkui kasvab: viip ulatub sadade või tuhandete ridadeni ja seda on raske hallata.
  • Maksad selle eest iga kutsega: viip saadetakse ja töödeldakse iga päringuga uuesti, nii et tokenikulu ja latentsus kasvavad.
  • Muudatused ei too enam kasu: uued juhised ei paranda väljundeid.

Isegi siis proovi esmalt odavamaid viibapõhiseid lahendusi. Kasuta few-shot-näiteid, et näidata mudelile mustrit (sisendi ja väljundi paare), viipade aheldamist, et jagada keerulised ülesanded väiksemateks sammudeks, või funktsioonikutsete konkse, et suunata täpsed otsingud või arvutused mujale.

Millal on RAG mõistlikum kui mudeli peenhäälestamine

RAG muudab seda, mida LLM teab, LLM-i peenhäälestus aga seda, kuidas see käitub. Kui puudu on teadmistest – eriti sellistest, mis muutuvad sageli või asuvad sinu enda dokumentides –, on lahenduseks RAG. Kui puudujääk on käitumises, kasuta peenhäälestust.

Peenhäälestus muudab ka seda, mida mudel teab, kuid kõik omandatud faktid külmutatakse treenimise hetkel ja kiiresti arenevates valdkondades vananevad need ruttu. Lisaks talletub teave mudeli kaaludesse, mistõttu ei jää neisse jälge selle allikast.

Otsingukihi kasutatavate lähtedokumentide uuendamine on kiirem ja odavam ning otsingukiht saab viidata täpsetele allikatele, mida see kasutas. Seetõttu on see parem valik, kui vajad põhjendatud ja ajakohast teavet.

RAG-i puudus? See on lisakiht, mida tuleb ehitada ja hooldada, ning see suurendab latentsust.

Praktikas vajad sageli mõlemat. Tootmissüsteemides kombineeritakse peenhäälestatud mudeleid RAG-iga: üks tagab ühtlase käitumise, teine ajakohased faktid.

Peenhäälestuse levinud lõksud, riskid ja väljakutsed

Isegi kui peenhäälestus on õige tööriist, kaasnevad sellega kulud ja riskid:

  • Kulu ja aeg: puhaste ja esinduslike treeningandmete kogumine ning treenimiseks vajalik arvutusvõimsus on kallid.
  • Katastroofiline unustamine: kitsal andmestikul treenitud mudel võib kaotada üldoskusi ja omandada uusi tõrkemustreid, mille tagajärjel tekib vigu, mida baasmudel ei teinud.
  • Ülesobitamine: liiga väheste või liiga korduvate andmete korral jätab mudel treeningnäited meelde, selle asemel et mustreid õppida, mistõttu toimib see treeningnäidistel hästi, kuid päris sisenditel halvasti.
  • Vananemine: kaaludesse talletatud teadmised aeguvad kiiresti, mistõttu tuleb mudelit uute andmetega uuesti treenida.
  • Iganemine: kui ilmub võimekam mudel, edestab see sageli sinu peenhäälestatud mudelit juba ilma igasuguse kohandamiseta ja töö tuleb uuesti teha.
  • Hindamise ja reprodutseerimise väljakutsed: on raske tõestada, et peenhäälestatud mudel ületab baasmudelit. Lisaks võivad kaks samade sätetega GPU-treeningkäiku anda veidi erinevad mudelid.
  • Andmehaldus: ettevõttesiseste või tundlike andmetega treenimine tekitab privaatsus- ja litsentsiküsimusi; mudel võib hiljem paljastada katkeid andmetest, millel seda treeniti.

Peamised peenhäälestusmeetodid

LLM-i peenhäälestuse peamised tüübid erinevad selle poolest, kui suurt osa mudelist need muudavad: täielik peenhäälestus treenib kogu mudeli uuesti, parameetritõhusad peenhäälestusmeetodid (PEFT), nagu LoRA ja QLoRA, aga uuendavad ainult osa kaaludest. PEFT-meetodid vajavad vaid murdosa täieliku peenhäälestuse mälust ja õigete sätetega võivad need saavutada samaväärseid tulemusi.

Täielik peenhäälestus uuendab mudeli kõiki kaale. See on kõige kallim ja sellega kaasneb suurim katastroofilise unustamise oht. Kasuta seda ainult suurte käitumismuutuste jaoks, kui sul on selle toetamiseks piisavalt andmeid ja arvutusvõimsust.

Alternatiiv on parameetritõhus peenhäälestus ehk PEFT. See on üldmõiste meetoditele, mis külmutavad suurema osa mudelist ja treenivad vaid väikest hulka parameetreid. See kasutab tunduvalt vähem mälu ja on unustamisele vähem altis, kuna baasmudel jääb puutumata.

Madalate astakute korral õpib PEFT vähem kui täielik peenhäälestus, kuid astaku tõstmine ja õpikiiruse häälestamine kaotavad juhistehäälestuse ülesannetes suurema osa sellest vahest.

PEFT-meetodite hulka kuuluvad:

  • LoRA (Low-Rank Adaptation, madala astakuga kohandamine): tavapärane lähtepunkt, mis külmutab algsed kaalud ja treenib väikest hulka lisatud adapteriparameetreid, sageli alla 1% koguarvust, nii et see töötab ühel tarbijaklassi GPU-l.
  • QLoRA (Quantized Low-Rank Adaptation, kvantiseeritud madala astakuga kohandamine): tihendab baasmudeli enne LoRA rakendamist 4-bitisele täpsusele, mis võimaldab suurt mudelit peenhäälestada ühel GPU-l.

Meetod

Mida see uuendab

Tegelik riistvaravajadus

Kasuta, kui

Täielik peenhäälestus

Mudeli kõik kaalud

7B-klassi mudelite jaoks mitme GPU-ga sõlm, suuremate puhul palju rohkem

Vajad sügavat käitumismuutust ning sul on andmed ja arvutusvõimsus

LoRA (PEFT)

Väike hulk lisatud adapterikaale

Üks tarbijaklassi GPU

Sinu vaikimisi lähtepunkt

QLoRA (PEFT)

LoRA adapterid 4-bitiseks tihendatud baasmudelil

Väga suured mudelid ühel GPU-l

Sul on mälu vähe, kuid soovid suurt baasmudelit

Lisaks neile kasutame juhiste- ja eelistushäälestuse meetodeid – alates RLHF-ist (Reinforcement Learning from Human Feedback, inimtagasisidel põhinev stiimulõpe) kuni kergemate alternatiivideni, nagu Direct Preference Optimization (DPO) ja Odds Ratio Preference Optimization (ORPO) –, et kujundada, kuidas mudel juhiseid järgib ja inimeste eelistustele vastab.

Kuidas LLM-i samm-sammult peenhäälestada

Kui oled otsustanud, et LLM-i peenhäälestamine on õige valik, on töövoog järgmine.

1. samm: määra ülesanne ja see, kuidas edukust mõõdad

Otsusta, millist käitumist LLM-ilt soovid ja kuidas tead, et oled selle saavutanud.

Nimeta konkreetne ülesanne, mida peenhäälestatud mudel peab täitma, näiteks tugipiletite klassifitseerimine, lepingute kokkuvõtete koostamine kindlas vormingus või koodi genereerimine sinu ettevõtte stiilis.

Seejärel määratle edukus. Levinud valikud on järgmised:

  • Väljundi kehtivus: näiteks kas tulemus on parsitav kehtiva JSON-ina või vastab see vajalikule Markdowni struktuurile?
  • Automaatsed hinded: kasuta mõõdikuid, nagu BLEU või ROUGE, mis võrdlevad genereeritud teksti viitevastustega, või ülesande täpsust märgendatud andmekogumil.
  • Inimeste hinnangud: punktipõhine või läbis/ei läbinud tüüpi hindamisjuhend omaduste jaoks, mida skript hindab halvasti, näiteks toon või kasulikkus.
  • Töökindlus keeruliste sisendite korral: kas mudel tuleb toime ebatavaliste sisenditega, mis baasmudeli komistama panid?

2. samm: valmista ette andmestik

Andmete kvaliteet määrab peenhäälestuse edu, seega pinguta õige peenhäälestusandmestiku kogumisel.

Vorminda andmed juhise ja vastuse paarideks JSONL-vormingus, kus iga rida sisaldab sisendit (koos mis tahes kontekstiga) ja täpset väljundit, mida soovid tagasi saada.

Tutvu näiteks avalike andmestikega, nagu üldjuhiste andmestik Alpaca-cleaned või Databricksi Dolly, või ülesandepõhise andmestikuga banking77, mis sisaldab üle 13 000 tegeliku tugipäringu, mis on märgendatud 77 kavatsuse järgi.

Kitsalt piiritletud ülesande puhul võib käitumist muuta juba mõnisada kuni mõni tuhat puhast ja mitmekesist näidet – tingimusel, et näited peegeldavad tegelikke tootmissisendeid, sealhulgas äärejuhte, ja on ühtlaselt vormindatud.

Sisendi ja väljundi paare veel pole? Koosta komplekt olemasolevatest andmetest, näiteks tugipiletitest ja nende parimatest vastustest või dokumentidest ja nende kokkuvõtetest.

Kui sul on ainult väljundid, lase võimekamal mudelil genereerida igaühe jaoks usutav sisend või kirjuta käsitsi väike lähtekomplekt ja laienda seda suurema „õpetajamudeli“ abil, seejärel jäta alles parimad paarid.

Lõpuks jaga andmed treening-, valideerimis- ja testkomplektiks, et saaksid tulemusi mõõta näidetel, mida mudel pole näinud.

3. samm: vali baasmudel ja meetod

Alusta väikese, 3–7 miljardi parameetriga avatud lähtekoodiga mudeliga ja parameetritõhusa peenhäälestusmeetodiga, nagu LoRA või QLoRA.

Avatud mudeliperekonnad, nagu Llama, Mistral ja Qwen, pakuvad tugevat baasi, mida saad ise majutada, ning PEFT-meetodid hoiavad riistvaranõuded madalad: QLoRA kvantiseerib baasmudeli 4-bitiseks, nii et 7B-mudeli peenhäälestamiseks piisab 16–24 GB mäluga tarbijaklassi graafikakaardist. Sama mudeli täielik peenhäälestus vajab mitu korda rohkem mälu.

4. samm: määra treeningu hüperparameetrid

Siin on LLM-i peenhäälestuse peamised parameetrid ja soovitatavad algvahemikud:

  • Õpikiirus määrab, kui suur on iga kaalude uuendus. Bidermani jt 2024. aasta uuring leidis, et LoRA parimad õpikiirused olid ligikaudu kümme korda suuremad kui täieliku peenhäälestuse omad: tavaliselt 5e-5 kuni 5e-4, täieliku peenhäälestuse puhul aga 1e-5 kuni 5e-5. Uuring soovitab proovida väärtusi vahemikus 1e-5 kuni 5e-4 ja kasutada suurimat väärtust, mille korral treenimine püsib stabiilsena.
  • Partii suurus näitab, mitmest näitest mudel enne iga kaalude uuendamist õpib. Ühe GPU puhul kasuta väikest seadmepõhist partiid suurusega 1–8 ja gradiendi akumuleerimist, et jõuda efektiivse partii suuruseni umbes 16–64.
  • Epohhide arv näitab, mitu korda mudel kogu andmestikku läbi näeb. Kui treenid mudelit konkreetseid ülesandeid täitma, on hea rusikareegel 1–3, kuid LoRA-treeningud vajavad sageli rohkem.
  • LoRA astak (r) määrab adapteri mahu ehk selle, kui palju see suudab õppida. Lihtsamate ülesannete puhul alusta väärtusega 8–32 ja tõsta seda keerukamate puhul: eespool viidatud Bidermani jt LoRA-uuringus vajas 7B-mudeli juhishäälestamine koodiandmetel astakut 256, et jõuda täieliku peenhäälestuse tasemele, samas kui matemaatikas jõudis astak 64 sellele lähedale.
  • Jada maksimaalne pikkus on pikim sisend, mida treening töötleb. Määra see nii, et see kataks su pikimad näited, kuni mudeli kontekstiaknani välja, sest kõik pikemad sisendid kärbitakse.
  • Soojendus ja ajakava määravad, kuidas õppimiskiirus treeningu jooksul tõuseb ja muutub. Tavapärased vaikevalikud on lühike soojendus ja koosinuslangus. Samas leidis Pareja jt väikemudelite uuring, et soojenduse ärajätmine lõpptulemusi ei halvendanud.

Käsitle neid parameetriotsingu lähtepunktidena, mitte fikseeritud seadetena.

5. samm: treeni mudelit ja jälgi kadu

Treeningu ajal jälgi treening- ja valideerimiskao kõveraid, et näha, kas treening toimib.

Kadu mõõdab, kui kaugel on mudeli väljundid sinu näidetest, ja see peaks treeningu edenedes ühtlaselt vähenema. Treeningkadu mõõdetakse andmetel, millest mudel õpib. Valideerimiskadu mõõdetakse kõrvale jäetud näidetel.

Kui treeningkadu ja valideerimiskadu vähenevad koos, õpib mudel üldistama. Kui treeningkadu muudkui väheneb, kuid valideerimiskadu jääb paigale või hakkab tõusma, jätab mudel treeningandmestiku pähe, selle asemel et mustrit õppida (ülesobitamine).

6. samm: hinda ja seejärel juuruta

Madal treeningkadu ei taga õigeid väljundeid, seega hinda peenhäälestatud mudelit 1. sammus seatud kriteeriumide alusel.

Kui mudel hindamise läbib, on juurutamiseks kaks võimalust:

  • Käita adapterit baasmudeli peal ja laadi mõlemad käitusajal; nii jääb adapter vahetatavaks.
  • Ühenda adapter baasmudeli kaaludega, et saada üks iseseisev mudel, mida on lihtsam majutada.

Kasuta Perplexityt, et anda oma LLM-ile juurdepääs ajakohasele teabele

Peenhäälestus on õige valik, kui soovid kohandada mudeli käitumist oma vajadustele.

Kui su mudel vajab ajakohast teavet, eriti kiiresti muutuvat teavet, on sul vaja RAG-i või usaldusväärset kolmanda osapoole otsingutööriista.

Kohandatud teabeotsingulahendus sobib kõige paremini ettevõttesiseste andmestike jaoks, nagu sisemine viki, klienditoe ajalugu, lepingud või tootedokumentatsioon.

Kui teadmised, mida soovid kasutada, on avalikud, pole vaja eraldi teabeotsingukihti ehitada. Perplexity on vastusemootor, mis tagastab vastused tekstisiseste klõpsatavate viidetega reaalajas uuendatavast veebiindeksist. Selle Agent API pakub neid veebiallikatel põhinevaid ja viidetega vastuseid ühe päringuga, nii et su rakendus saab tugineda ajakohastele allikatele.

Korduma kippuvad küsimused LLM-ide peenhäälestuse kohta

Kas LLM-i saab tasuta peenhäälestada?

Jah, väikese avatud LLM-i saab peenhäälestada tasuta. Näiteks pakub Google Colabi tasuta pakett piisavalt GPU-ressurssi, et käitada QLoRA-t 3B–8B-mudelil, millest piisab kitsa ülesande jaoks täiesti. Maksma hakkad siis, kui vajad rohkem mälu, pikemaid treeninguid või suuremat baasmudelit, kui tasuta pakett võimaldab.

Kas sul on vaja oma GPU-d või saab peenhäälestada pilves?

LLM-ide peenhäälestamiseks ei pea sul olema oma GPU-d. Hallatud teenused ja GPU-pilveteenuse pakkujad rendivad riistvara tunnitasu alusel, nii et väikese mudeli QLoRA-treeninguks piisab ühest renditud GPU-st. GPU ostmine tasub end ära ainult siis, kui peenhäälestad sageli või pead hoidma kõiki oma andmeid enda masinates.

Kui kaua LLM-ide peenhäälestus aega võtab?

Väikese LLM-i puhul võib treening olenevalt andmestiku suurusest ja riistvarast kesta mõnest minutist mõne tunnini. Näiteks Oumi peenhäälestas 0,8B-mudeli täielikult veidi enam kui tunniga oma hostitud platvormil.

Suuremate mudelite või kümnete tuhandete näidete puhul võib see venida päevani või kauemgi: Emburse'i LoRA-treeningud 7B-mudelil võtsid ühel 40 GB GPU-l 5000 näite puhul aega 8 tundi ja 50 000 näite puhul umbes 30 tundi.

Kas peenhäälestatud mudelit saab andmete muutudes pidevalt uuendada?

Mudelit saab uute andmetega uuesti peenhäälestada, kuid iga voor nõuab arvutusressurssi ja toob kaasa katastroofilise unustamise riski. Sageli muutuvate teadmiste puhul on RAG tavaliselt parem lahendus, sest siis uuendad mudeli ümberõpetamise asemel lähtedokumente.