読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】LoRAって、なんで学習するパラメータがあんなに減るん?【AI】

21レスカテゴリ:AI・機械学習
1: 名無しさん

LoRA を使うと、大きいモデルでも手元で追加学習できるって聞いた
パラメータを減らして、性能は落ちへんの?

2: 名無しさん

>>1
出どころは Hu らの論文(arXiv 公開は2021年)。名前は Low-Rank Adaptation(低ランク適応)
元のモデルの重み は凍結(学習で動かさない)して、変化分だけを小さい行列2つの積で表す

3: 名無しさん

>>2
B と A の大きさは

4: 名無しさん

>>3
が の行列なら、 は 、 は
はランク(行列が実質何本の独立な向きを持つか)で、 や よりずっと小さくする

5: 名無しさん

>>4
数字で

6: 名無しさん

>>5
の重み行列を全部学習すると

の LoRA なら

約0.39%で済む

7: 名無しさん

>>6
積にしただけで、なんで情報が足りるんや

8: 名無しさん

>>7
ちっちゃい例で見ると分かりやすい。、 なら

2行目は1行目のちょうど2倍で、ランク1
「変化分は少ない向きだけで表せる」と仮定して、その形しか作れんように制限してる

9: 名無しさん

>>8
その仮定、ほんまに成り立つん?

10: 名無しさん

>>9
論文は「追加学習での重みの変化は、実質的なランクが低い」という仮説を立てて、実験で確かめてる
GPT-3 175B(1750億パラメータ)で、クエリとバリューの重みに当てる場合、 でもかなりの性能が出てる

11: 名無しさん

>>10
GPT-3 やとどれくらい減るん

12: 名無しさん

>>11
論文の数字やと、普通の追加学習(全部のパラメータを動かす方式)に比べて
学習するパラメータは約1万分の1、GPUメモリは約3分の1(1.2TB から350GB)
保存するファイルも、 でクエリとバリューだけに当てると350GBから35MBになる

13: 名無しさん

>>12
その35MBってどう出てくるん

14: 名無しさん

>>13
GPT-3 は単語ベクトルが12,288次元で96層
クエリとバリューの2種類×96層に、 の と を足すと

約1900万個。16ビット(1個2バイト)で保存すると約38MBで、論文の約35MBと同じ桁

15: 名無しさん

>>14
推論のとき、行列が増えたぶん遅くならん?

16: 名無しさん

>>15
ならん。学習が終わったら を先に足して1つの行列にしてしまえる
アダプター(層の間に小さい層を足す方式)は計算が1段増えるけど、LoRA は形が元の行列と同じやから増えん

17: 名無しさん

>>16
学習の最初はどうなってるん

18: 名無しさん

>>17
はランダム、 は0で始める。だから最初は で、元のモデルとまったく同じところから学習が始まる

19: 名無しさん

>>18
じゃあ は小さければ小さいほどええんか

20: 名無しさん

>>19
そうとは限らん。論文自身、小さい がどんなタスクでも通用するとは期待してない、と書いてる
事前学習の内容とかけ離れたタスクなら、全部のパラメータを学習し直したほうが勝つ可能性がある
論文の結果は「試したタスクでは低いランクで十分だった」ってところまで

21: 名無しさん

>>20
変化分を細長い行列2つに分けて、そこだけ学習する。減る理由は掛け算の形そのものなんやな

管理人のひとこと