7.2. Fine-Tuning to follow instructions
Cilj ovog odeljka je da pokaže kako podešavati već unapred obučeni model da prati uputstva umesto samo generisanja teksta, na primer, odgovaranje na zadatke kao chatbot.
Skup podataka
Da bi se podešavao LLM da prati uputstva, potrebno je imati skup podataka sa uputstvima i odgovorima za podešavanje LLM-a. Postoje različiti formati za obučavanje LLM-a da prati uputstva, na primer:
Primer stila upita Apply Alpaca:
Phi-3 пример стила упита:
Trening LLM-a sa ovakvim skupovima podataka umesto samo sirovog teksta pomaže LLM-u da razume da treba da daje specifične odgovore na pitanja koja prima.
Stoga, jedna od prvih stvari koje treba uraditi sa skupom podataka koji sadrži zahteve i odgovore je da se modeluje taj datum u željenom formatu prompta, kao:
Then, kao i uvek, potrebno je odvojiti skup podataka u skupove za obuku, validaciju i testiranje.
Batching & Data Loaders
Zatim, potrebno je grupisati sve ulaze i očekivane izlaze za obuku. Za to je potrebno:
Tokenizovati tekstove
Podesiti sve uzorke na istu dužinu (obično će dužina biti onoliko velika koliko je dužina konteksta korišćena za prethodnu obuku LLM-a)
Kreirati očekivane tokene pomeranjem ulaza za 1 u prilagođenoj funkciji za grupisanje
Zameniti neke tokene za popunjavanje sa -100 kako bi ih isključili iz gubitka obuke: Nakon prvog
endoftext
tokena, zameniti sve ostaleendoftext
tokene sa -100 (jer korišćenjecross_entropy(...,ignore_index=-100)
znači da će ignorisati ciljeve sa -100)[Opcionalno] Maskirati koristeći -100 takođe sve tokene koji pripadaju pitanju kako bi LLM naučio samo kako da generiše odgovor. U stilu Apply Alpaca to će značiti maskirati sve do
### Response:
Sa ovim kreiranim, vreme je da se kreiraju učitavači podataka za svaki skup podataka (obuka, validacija i test).
Load pre-trained LLM & Fine tune & Loss Checking
Potrebno je učitati prethodno obučeni LLM kako bi se fino podešavao. Ovo je već raspravljano na drugim stranicama. Zatim, moguće je koristiti prethodno korišćenu funkciju obuke za fino podešavanje LLM-a.
Tokom obuke takođe je moguće videti kako se gubitak obuke i gubitak validacije menjaju tokom epoha da bi se videlo da li se gubitak smanjuje i da li dolazi do prekomernog prilagođavanja. Zapamtite da prekomerno prilagođavanje nastaje kada se gubitak obuke smanjuje, ali se gubitak validacije ne smanjuje ili čak povećava. Da biste to izbegli, najjednostavnija stvar je da prekinete obuku u epohi kada ovo ponašanje počne.
Response Quality
Pošto ovo nije fino podešavanje klasifikacije gde je moguće više verovati varijacijama gubitka, takođe je važno proveriti kvalitet odgovora u testnom skupu. Stoga, preporučuje se da se prikupe generisani odgovori iz svih testnih skupova i provere njihov kvalitet ručno da bi se videlo da li ima pogrešnih odgovora (napomena da je moguće da LLM ispravno kreira format i sintaksu rečenice odgovora, ali daje potpuno pogrešan odgovor. Varijacija gubitka neće odražavati ovo ponašanje). Napomena da je takođe moguće izvršiti ovu reviziju prosleđivanjem generisanih odgovora i očekivanih odgovora drugim LLM-ovima i tražiti od njih da procene odgovore.
Ostali testovi za proveru kvaliteta odgovora:
Merenje Massive Multitask Language Understanding (MMLU): MMLU procenjuje znanje modela i sposobnosti rešavanja problema u 57 predmeta, uključujući humanističke nauke, nauke i još mnogo toga. Koristi pitanja sa višestrukim izborom za procenu razumevanja na različitim nivoima težine, od osnovnog do naprednog profesionalnog.
LMSYS Chatbot Arena: Ova platforma omogućava korisnicima da uporede odgovore različitih chatbota jedan pored drugog. Korisnici unose upit, a više chatbota generiše odgovore koji se mogu direktno uporediti.
AlpacaEval: AlpacaEval je automatizovani okvir za evaluaciju gde napredni LLM poput GPT-4 procenjuje odgovore drugih modela na različite upite.
General Language Understanding Evaluation (GLUE): GLUE je zbirka od devet zadataka razumevanja prirodnog jezika, uključujući analizu sentimenta, tekstualno impliciranje i odgovaranje na pitanja.
SuperGLUE: Oslanjajući se na GLUE, SuperGLUE uključuje izazovnije zadatke dizajnirane da budu teški za trenutne modele.
Beyond the Imitation Game Benchmark (BIG-bench): BIG-bench je velika skala benchmark sa više od 200 zadataka koji testiraju sposobnosti modela u oblastima kao što su rezonovanje, prevođenje i odgovaranje na pitanja.
Holistic Evaluation of Language Models (HELM): HELM pruža sveobuhvatnu evaluaciju kroz različite metrike kao što su tačnost, robusnost i pravednost.
OpenAI Evals: Okvir za evaluaciju otvorenog koda od strane OpenAI koji omogućava testiranje AI modela na prilagođenim i standardizovanim zadacima.
HumanEval: Zbirka programskih problema korišćenih za procenu sposobnosti generisanja koda jezičkih modela.
Stanford Question Answering Dataset (SQuAD): SQuAD se sastoji od pitanja o člancima na Wikipediji, gde modeli moraju razumeti tekst da bi tačno odgovorili.
TriviaQA: Velika zbirka trivijalnih pitanja i odgovora, zajedno sa dokumentima kao dokazima.
i još mnogo, mnogo više
Follow instructions fine-tuning code
Možete pronaći primer koda za izvođenje ovog fino podešavanja na https://github.com/rasbt/LLMs-from-scratch/blob/main/ch07/01_main-chapter-code/gpt_instruction_finetuning.py
References
Last updated