Konečně závěrečná práce mého PhD 🧮 Učení se uvažovat ve 13 parametrech 🧮 vyvíjíme TinyLoRA, novou metodu FT. s TinyLoRA + RL se modely dobře učí s desítkami nebo stovkami parametrů příklad: používáme pouze 13 parametrů k trénování modelu 7B Qwen z 76 na 91 % na GSM8K 🤯
je tu článek, který se mi líbí z roku 2018, jmenuje se Hraní Atari se šesti neurony. dal precedent, že RL se může naučit některé "programy", které zabírají velmi málo bajtů přesto nejmenší jemné ladění, které lidé dnes obvykle dělají, je LoRA s rank=1, která stále používá miliony parametrů... 🤔
cesta k nám byla přemýšlet o tom, jak velký "program" by mohl naučit LLaMA nebo Qwen rozumu. 3 miliony parametrů v bf16 zaberou 6 MB. To se zdá moc velké? naše teorie: pokud každá RL epizoda vysílá přibližně 1 bit, měli bychom být schopni například zakódovat GSM8K do mnohem menšího množství dat...
a všimněte si, že to *nefunguje* u SFT. v podstatě abyste plně minimalizovali ztráty se SFT, musíte si všechny výstupní tokeny zapamatovat se 100% jistotou. To vyžaduje mnohem více bitů a proto potřebujeme větší velikosti aktualizací SFT modelů pro dobrý výkon: (více o tom v části 3)
nejde jen o artefakt GSM8K nebo nějakého konkrétního modelu na všech datových sadách, které jsme zkoušeli (MATH, AIME, Minerva...), jsme schopni obnovit >90 % výkonových zisků trénováním stovek parametrů (kromě AMC, které někdy vyžaduje tisíce)
Jedním zajímavým inženýrským detailem bylo, že je opravdu těžké dělat RL s různými tvary LoRA, protože LLM RL vyžaduje rychlou inferenci, která vyžaduje implementaci na hardwarové úrovni (jádra) Obešel jsem to tak, že jsem při každém rolloutu LoRA závaží spojil a pak je oddělil pro trénink. Ve skutečnosti to není tak pomalé. V článku najdete další podrobnosti a brzy sdílím kód
108