【ローラ】

LoRA(ローラ) とは?

最終更新:
💡 巨大AIに「ちょこっと追加レッスン」で新しい技を覚えさせる裏ワザ

学習済みモデルの重みを固定し、重みの更新分を低ランクの小さな行列の積で表して学習するファインチューニング手法。学習対象のパラメーターや、その保存に必要な容量を減らせる。

📌 このページのポイント
元の重みを保ち、更新分を学ぶ 全重みを学習 LoRA 1000 × 1000 1000 × 1000 学習:100万個 元の重みは固定 青:更新する重み 緑:追加の行列 B 1000 × 4 A 4 × 1000 元の重み + B × A = 適応後の重み r = 4 の例:追加の学習対象は8000個
図は1000×1000の1行列にランク上限4の更新分を足す例。行列の形は模式的で、B×Aの倍率は省略。減るのは学習対象の数で、元の重みや中間計算のメモリは必要。対象層やランク、設定で容量・性能は変わる。
ひよこ ひよこ
LoRAってなに?普通のファインチューニングと何が違うの?
ペンギン先生 ペンギン先生
全重みを更新するフルファインチューニングに対して、LoRAは元の重みを固定し、追加する小さな行列を学ぶ方法だよ。学習対象を減らせるけど、元モデルの重みや中間計算のメモリも必要。どんな大きなモデルでも個人のPCで学べる、とは限らないんだ。
ひよこ ひよこ
なんでそれで上手くいくの?全部更新しないと性能落ちそうだけど…
ペンギン先生 ペンギン先生
特定のタスクへの重みの更新分を、低ランクで表すという仮説に基づくよ。元論文では複数の言語モデルでフルファインチューニングに匹敵する結果が報告された。ただし、どのモデルやタスクでも同じ性能になる保証ではなく、ランクや対象層、データを選んで評価する必要があるんだ。
ひよこ ひよこ
画像生成AIでLoRAってよく聞くけど、あれもこれ?
ペンギン先生 ペンギン先生
同じ考え方を画像生成に使えるよ。DiffusersにはStable DiffusionなどのLoRA学習例がある。追加した重みは元モデルと組み合わせて使うもので、ファイルだけで独立したモデルになるわけではない。容量や画風の変化も学習する層や設定、データで変わるんだ。
ひよこ ひよこ
LoRAの「低ランク」って何のこと?
ペンギン先生 ペンギン先生
重みの更新分をBとAという行列の積で表すよ。仮に元の重みが1000×1000でr=4なら、Bは1000×4、Aは4×1000で計8000個のパラメーター。積は1000×1000で、ランクは最大4になる。元の100万個の重みを置き換えるのではなく、更新分として足すんだ。
ひよこ ひよこ
QLoRAってLoRAとどう違うの?
ペンギン先生 ペンギン先生
QLoRAは、元の重みを4bitで保存する量子化とLoRAを組み合わせるよ。計算時には重みを復元し、論文では主にBFloat16で計算する。2023年の論文は650億パラメーターのモデルを48GBのGPU1枚で学習したと報告したけど、これはその実験条件の結果で、すべての設定のメモリを保証する数字ではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「LoRA」って出てきたら「大きなAIモデルを少ない資源でカスタマイズする効率的な方法」と思えればだいたいOK!
📖 おまけ:英語の意味
「Low-Rank Adaptation」 = 低ランク適応
💬 低ランクの行列で重みの更新分を表し、学習済みモデルを用途へ適応させるという意味だよ

参考資料

← 用語集にもどる