【ろらりょうしか】

LoRA量子化 とは?

最終更新:
💡 ベースを軽く保持し、追加した小さな部分を学習する

量子化したベースモデルとLoRAの追加学習を組み合わせる方法。代表的なQLoRAは4ビットのベースを固定し、LoRAアダプタを学習する。全体の必要メモリや得られる品質は、モデル・データ・設定で変わる。

📌 このページのポイント
QLoRA:軽く保持し、追加部分を学ぶ入力 → モデルの計算に使うベース4ビットで保持重みは固定LoRA小さな追加行列ここを更新+両方の計算を合わせた出力保持するビット数と計算型は、区別しよう
ベースと追加部分の役割を簡略化した図。固定したベースも計算に使います。必要メモリや品質は設定・データによって変わります。
ひよこ ひよこ
LoRAに、何を足したの?
ペンギン先生 ペンギン先生
ベースモデルの重みを低ビットの量子化で保持する工夫だよ。代表的なQLoRAでは4ビットのベースを固定し、追加したLoRAアダプタを学習する。すべての重みを学び直す方法とは、更新する対象が違うんだ。
ひよこ ひよこ
固定したベースは、計算しない?
ペンギン先生 ペンギン先生
計算には使うよ。ベースを通じて勾配を伝え、アダプタの更新へつなぐ。固定というのは、ベースの重みを学習で更新しないという意味だよ。入力から出力への計算を飛ばす、ということではないんだ。
ひよこ ひよこ
計算も、全部4ビットなの?
ペンギン先生 ペンギン先生
保持する重みと、計算に使うデータ型は分けて考えるよ。Hugging Faceの実装資料には計算型を指定する設定がある。QLoRAの論文では、4ビットのNF4形式、量子化に関わる値の追加量子化、メモリの急増を扱うオプティマイザーなどを紹介しているね。
ひよこ ひよこ
24GBのGPUで70Bモデルを学べる?
ペンギン先生 ペンギン先生
どの環境でも可能とは言えないよ。元論文の要旨が示す例は、65Bモデルを1枚の48GB GPUで追加学習したものだね。学習には保持する重み以外のメモリも必要で、入力の長さやバッチサイズなどで変わる。1つの実験結果を、全モデル共通の必要量にしないようにしよう。
ひよこ ひよこ
量子化の劣化を、LoRAが必ず直す?
ペンギン先生 ペンギン先生
品質を保証する仕組みではないよ。論文は評価した条件での結果を示しているので、自分の用途では学習後のモデルを確かめよう。データの品質、量子化の設定、学ぶ対象によって結果は変わる。メモリが一律10分の1になる、精度が必ず同じになる、と決めつけずに比べるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「QLoRA」って出てきたら「量子化でベースを軽く持ち、LoRAの追加部分を学習する方法」と思えばだいたいOK!
📖 おまけ:英語の意味
「QLoRA: Efficient Finetuning of Quantized LLMs」 = 量子化した大規模言語モデルの効率的な追加学習
💬 Dettmersらが2023年5月に発表した手法。量子化による保持メモリの削減と、低ランクの追加部分を学ぶLoRAを組み合わせるよ。

参考資料

← 用語集にもどる