7.2. Fine-Tuning to follow instructions
Die doel van hierdie afdeling is om te wys hoe om 'n reeds vooropgeleide model fyn af te stem om instruksies te volg eerder as net teks te genereer, byvoorbeeld om op take te reageer as 'n chat bot.
Dataset
Om 'n LLM fyn af te stem om instruksies te volg, is dit nodig om 'n dataset met instruksies en antwoorde te hê om die LLM fyn af te stem. Daar is verskillende formate om 'n LLM op te lei om instruksies te volg, byvoorbeeld:
Die Apply Alpaca prompt styl voorbeeld:
Phi-3 Prompt Styl Voorbeeld:
Training a LLM met hierdie tipe datastelle in plaas van net rou teks help die LLM om te verstaan dat hy spesifieke antwoorde op die vrae wat hy ontvang, moet gee.
Daarom is een van die eerste dinge om te doen met 'n dataset wat versoeke en antwoorde bevat, om daardie data in die gewenste promptformaat te modelleer, soos:
Then, soos altyd, is dit nodig om die dataset in stelle vir opleiding, validasie en toetsing te skei.
Batching & Data Loaders
Dan is dit nodig om al die invoere en verwagte uitsette vir die opleiding in batches te plaas. Hiervoor is dit nodig om:
Tokenize die teks
Vul al die monsters tot dieselfde lengte (gewoonlik sal die lengte so groot wees soos die kontekslengte wat gebruik is om die LLM voor te leer)
Skep die verwagte tokens deur die invoer met 1 in 'n pasgemaakte collate-funksie te skuif
Vervang sommige padding tokens met -100 om hulle van die opleidingsverlies uit te sluit: Na die eerste
endoftext
token, vervang al die anderendoftext
tokens met -100 (want die gebruik vancross_entropy(...,ignore_index=-100)
beteken dat dit teikens met -100 sal ignoreer)[Opsioneel] Masker met -100 ook al die tokens wat aan die vraag behoort sodat die LLM net leer hoe om die antwoord te genereer. In die Apply Alpaca styl sal dit beteken om alles te masker tot
### Response:
Met dit geskep, is dit tyd om die data loaders vir elke dataset (opleiding, validasie en toets) te skep.
Laai voor-geleerde LLM & Fyn afstem & Verlies Kontrole
Dit is nodig om 'n voor-geleerde LLM te laai om dit fyn af te stem. Dit is reeds op ander bladsye bespreek. Dan is dit moontlik om die voorheen gebruikte opleidingsfunksie te gebruik om die LLM fyn af te stem.
Tydens die opleiding is dit ook moontlik om te sien hoe die opleidingsverlies en validasieverlies gedurende die epoches varieer om te sien of die verlies verminder en of oorpassing plaasvind. Onthou dat oorpassing plaasvind wanneer die opleidingsverlies verminder, maar die validasieverlies nie verminder of selfs toeneem nie. Om dit te vermy, is die eenvoudigste ding om die opleiding te stop by die epoch waar hierdie gedrag begin.
Antwoord Kwaliteit
Aangesien dit nie 'n klassifikasie fyn afstemming is waar dit moontlik is om meer op die verlies variasies te vertrou nie, is dit ook belangrik om die kwaliteit van die antwoorde in die toetsstel te kontroleer. Daarom word dit aanbeveel om die gegenereerde antwoorde van al die toetsstelle te versamel en hulle kwaliteit handmatig te kontroleer om te sien of daar verkeerde antwoorde is (let daarop dat dit moontlik is vir die LLM om die formaat en sintaksis van die antwoordsin te korrek te skep, maar 'n heeltemal verkeerde antwoord te gee. Die verlies variasie sal hierdie gedrag nie weerspieël nie). Let daarop dat dit ook moontlik is om hierdie hersiening uit te voer deur die gegenereerde antwoorde en die verwagte antwoorde aan ander LLMs oor te dra en hulle te vra om die antwoorde te evalueer.
Ander toetse om te loop om die kwaliteit van die antwoorde te verifieer:
Meet Massiewe Multitask Taalbegrip (MMLU): MMLU evalueer 'n model se kennis en probleemoplossingsvermoëns oor 57 vakke, insluitend menswetenskappe, wetenskappe, en meer. Dit gebruik meerkeuse vrae om begrip op verskillende moeilikheidsgraad te assesseer, van elementêr tot gevorderd professioneel.
LMSYS Chatbot Arena: Hierdie platform laat gebruikers toe om antwoorde van verskillende chatbots langs mekaar te vergelyk. Gebruikers voer 'n prompt in, en verskeie chatbots genereer antwoorde wat direk vergelyk kan word.
AlpacaEval: AlpacaEval is 'n geoutomatiseerde evaluasieraamwerk waar 'n gevorderde LLM soos GPT-4 die antwoorde van ander modelle op verskeie prompts evalueer.
Algemene Taalbegrip Evaluasie (GLUE): GLUE is 'n versameling van nege natuurlike taalbegrip take, insluitend sentimentanalise, teksimplikasie, en vraagbeantwoording.
SuperGLUE: Gebaseer op GLUE, sluit SuperGLUE meer uitdagende take in wat ontwerp is om moeilik te wees vir huidige modelle.
Buiten die Imitasie Speletjie Benchmark (BIG-bench): BIG-bench is 'n grootmaat benchmark met meer as 200 take wat 'n model se vermoëns in areas soos redeneer, vertaling, en vraagbeantwoording toets.
Holistiese Evaluasie van Taalmodelle (HELM): HELM bied 'n omvattende evaluasie oor verskeie metrieks soos akkuraatheid, robuustheid, en billikheid.
OpenAI Evals: 'n Oopbron evaluasieraamwerk deur OpenAI wat toelaat dat AI-modelle op pasgemaakte en gestandaardiseerde take getoets word.
HumanEval: 'n Versameling programmeringsprobleme wat gebruik word om die kodegenereringsvermoëns van taalmodelle te evalueer.
Stanford Vraag Beantwoording Dataset (SQuAD): SQuAD bestaan uit vrae oor Wikipedia-artikels, waar modelle die teks moet verstaan om akkuraat te antwoord.
TriviaQA: 'n Grootmaat dataset van trivia vrae en antwoorde, saam met bewysdokumente.
en baie baie meer
Volg instruksies fyn afstemming kode
Jy kan 'n voorbeeld van die kode om hierdie fyn afstemming uit te voer vind in https://github.com/rasbt/LLMs-from-scratch/blob/main/ch07/01_main-chapter-code/gpt_instruction_finetuning.py
Verwysings
Last updated