În sfârșit, lucrarea finală a doctoratului meu 🧮 Învățarea raționamentului în 13 parametri 🧮 dezvoltăm TinyLoRA, o nouă metodă de ft (ft method). cu TinyLoRA + RL, modelele învață bine cu zeci sau sute de parametri exemplu: folosim doar 13 parametri pentru a antrena modelul Qwen 7B de la 76 la 91% pe GSM8K 🤯
Există un articol care îmi place din 2018, numit Playing Atari with Six Neurons. a dat precedentul că RL poate învăța unele "programe" care consumă foarte puțini octeți totuși, cea mai mică ajustare fină pe care oamenii o fac de obicei în zilele noastre este LoRA cu rang=1, care încă folosește milioane de parametri... 🤔
modul în care am ajuns aici a fost să ne gândim la ce dimensiune de "program" ar putea învăța LLaMA sau Qwen să raționeze. 3 milioane de parametri în bf16 consumă 6 MB. Pare prea mare? teoria noastră: dacă fiecare episod RL transmite aproximativ 1 bit, ar trebui să putem codifica, de exemplu, GSM8K în mult mai puține date...
și rețineți că acest lucru *nu* funcționează cu SFT. practic, pentru a minimiza complet pierderea cu SFT, trebuie să memorezi toate jetoanele de ieșire cu 100% încredere. Aceasta necesită mult mai mulți biți și, prin urmare, avem nevoie de dimensiuni mai mari de actualizare pentru modelele SFT pentru o performanță bună: (mai multe despre asta în Secțiunea 3)
nu este doar un artefact al GSM8K sau al vreunui model anume pe toate seturile de date încercate (MATH, AIME, Minerva...), reușim să recuperăm >90% din câștigurile de performanță antrenând sute de parametri (cu excepția AMC, care uneori necesită mii)
un detaliu amuzant de inginerie a fost că este foarte greu să faci RL cu forme diferite de LoRA, deoarece RL-ul LLM necesită inferență rapidă, ceea ce necesită implementare la nivel hardware (kernel-uri) Am rezolvat asta combinând greutățile LoRA la fiecare lansare și apoi decontopindu-le pentru antrenament. De fapt, nu e chiar atât de lent. Există mai multe detalii în ziar și voi împărtăși codul în curând
96