LoRA(ローラ)
この記事は約7分で読めます
ざっくり言うと
LoRA(Low-Rank Adaptation / ローラ)は、AIを調整するやり方のひとつです。学習のあいだ、元のAIが持つ数値には手を触れず、小さな追加部分だけを学習させます。
学習する量も、あとに残る差分も小さくすみます。少ない負担で調整するやり方(PEFT / Parameter-Efficient Fine-Tuning)の代表格です。
画像を作るAIに自分好みの作風で描いてほしいときや、文章のAIに自分のお店の言い回しで書かせたいとき。どちらも、いまのAIをあと少しだけ寄せたい場面ですよね。LoRAは、そこで使われる調整のやり方です。
AI全体を作り替えるのではなく、用途ごとに小さな部品を作ります。この部品はアダプターと呼ばれます。ただし、アダプターだけでは動きません。土台になるAI(ベースモデル)とセットで使います。
イメージ
この例えは、アダプターを別のファイルとして読み込む使い方を表しています。実際には、付箋の中身を本文へ書き写すように、推論用のモデルへLoRAの差分をマージ(合体)させることもできます。
マージしたあとのファイルは、元のベースモデルと同じ状態ではありません。付箋の中身を書き写した本が、もとの本とは別物になるのと同じです。
正確には
LoRAは、Huらが2021年に発表した手法です。AIの中身には、答えを左右する数値が大量に並んでおり、調整とはこの数値をどう変えるかを決める作業を指します。
元の数値をW0、加えたい変化をΔWと書くと、LoRAは大きなΔWをそのまま学習しません。より小さな2つの行列(数値を縦横に並べた表)AとBのかけ算で表します。式にするとW = W0 + ΔW、ΔW = BAです。
ここでランクrという設定を、元の行列の大きさ(次元)より小さくとります。こうすると、学習する数値の数がぐっと減ります。
LoRAを差し込む場所も、全部ではありません。対象は、Attention(入力のどこに注目するかを決める部分)などで使われる線形層のうち、選んだところに限られます。どの層を選ぶかは、モデルと設定によって変わります。
元論文が出した数字の読み方
元論文は、GPT-3 175Bという大きなモデルで実験しています。Adamを使ったフルファインチューニングと比べて、学習対象のパラメータを最大1万分の1、GPUメモリの要件を約3分の1に減らせたと報告しています。
フルファインチューニングとの違い
全体を作り替えるやり方と並べると、性格の違いがはっきりします。
| 見るところ | フルファインチューニング | LoRA |
|---|---|---|
| 学習するところ | モデル全体、または広い範囲の重み | 選んだ箇所の低ランク行列 |
| 元の重み | 学習中に書き換える | 学習中は動かさない |
| 保存されるもの | 学習した状態を丸ごと保存したファイルなど | 通常はアダプターの差分 |
| 用途の切り替え | 調整済みの別のモデルを用意する | 対応するアダプターを入れ替えられる |
| 使うとき | 調整済みモデルを動かす | 別に読み込むか、ベースへマージする |
ファイルの大きさに、共通の目安はありません。ランク、対象にした層、モデルの規模、保存するときの精度で変わります。「必ず数MB」と思い込まず、アダプターの設定と実物のファイルを確かめてください。
ランクと対象モジュールという設定
ランクrは、学習する差分をどれくらいの細かさで表すかに関わる設定です。対象モジュールは、モデルの中のどの線形層にLoRAを入れるかを決めます。
ランクや対象の範囲を広げると、学習するパラメータは増えます。ただし、品質が必ず上がるとは限りません。
まずは小さな設定から始めましょう。そのうえで、学習に使っていない評価用のデータで、ねらった出力に近づいたかを確かめてください。
使うときは、別読み込みかマージか
どちらの形で使うかで、速さやメモリ、切り替えやすさが変わります。
ベースへマージする
差分を重みに加えて一体化させる形です。Hugging Face PEFTがこの機能を案内しており、元論文も推論の遅れを増やさずにすむと説明しています。
別に読み込んで切り替える
アダプターを別ファイルのまま持ち、その場で読み込む形です。用途ごとに付け替えられる一方、管理や計算の手間が生じることがあります。
速さ、メモリ、切り替えやすさ。このどれを優先するかで、選ぶ形が変わります。
使う場面
どこで使われる?
- 文章のAI(LLM)
文体や書式、特定の作業への慣らし - 画像を作るAI
画像生成の流れの中で、選んだ層を効率よく調整 - 1つの土台を使い分ける
1つのベースモデルに、複数のアダプターを組み合わせる
Hugging Face Diffusersは、画像を作るモデル向けのLoRA学習の方法を公式に案内しています。LoRAは、文章のAIだけの手法ではありません。
LoRAで何を改善できるかは、用意したデータと、評価するタスクによって決まります。文体や出力の形だけでなく、専門的な作業に慣らせる場合もあります。
ただし、よく変わる知識を正確なまま保ちたい用途では、RAG(答えるときに資料を検索して読ませるしくみ)やデータベース参照のほうが、更新しやすいことがあります。
注意点
画像や文章を学習・配布に使うときは、「公開されているから自由に学習・再配布できる」とは限りません。文化庁の「AIと著作権」などの公的な資料にも目を通し、個別の案件は必要に応じて専門家へ相談してください。
関連用語
LoRAは、もっと広い調整の話の中にある1つのやり方です。近い言葉と並べて見ると、位置関係がつかめます。
- ファインチューニング — 学習済みのAIに追加のお手本を見せて、望む答え方へ寄せる調整全体の呼び名です。LoRAはその中のひとつにあたります
- パラメータ — モデルの中にある、答えを左右する数値のことです。LoRAが減らすのは、このうち学習する分の数にあたります
- トレーニング — データを読ませて覚えさせる工程のことです。LoRAでの調整も、この工程の一部にあたります
やってみよう
LoRAは目的ではなく、調整の手段のひとつです。採用するかどうかは、評価の結果を見てから決めましょう。
よくある質問
- Q. LoRA(ローラ)とは何ですか?
- A. AIを調整するやり方のひとつです。学習のあいだ、元のAIが持つ数値には手を触れず、アダプターと呼ばれる小さな追加部分だけを学習させるため、学習の負担も、あとに残る差分も小さくすみます。
- Q. LoRAとファインチューニングは何が違いますか?
- A. ファインチューニングは調整全体の呼び名で、LoRAはその中のひとつです。モデル全体を書き換えるやり方と違い、学習中は元の重みを動かさないので、用途ごとにアダプターを入れ替えて使えます。
- Q. 自分の店の言い回しを覚えさせたいとき、LoRAは向いていますか?
- A. 文体や書式をそろえたい用途には向いています。ただし、よく変わる知識を正確なまま保ちたいなら、答えるときに資料を検索して読ませるRAGのほうが、更新しやすいことがあります。
- Q. 配布されているLoRAを使うとき、気をつけることはありますか?
- A. 相性・品質・費用・権利の4つを確かめてください。とくに、前提となるベースモデルとその版がそろっているか、学習データの利用条件やライセンス、配布先の規約に反しないかを見ます。
公開: 更新: ✓ 公式情報と照合:
参考ソース
判断クイズ
配布されているLoRAを使う前に、確かめることが分かりますか?
3問です。答えるとその場で解説が出ます。全問終えたら、「回答を記録する」で学習の記録に残せます。
全問に答えると、回答を記録できます。
残るのは「答えたかどうか」だけで、正解数は保存されません。この端末の中だけに残り、別の端末には引き継がれません。
この教科書は無料で全文公開しています。仕事で使えるところまで進みたい方は、実習と資料がそろった生徒プランをどうぞ。
あわせて読みたい
- AI基礎 | 用語集約7分
ファインチューニングって何?
ファインチューニングとは、学習済みのAIに追加のお手本を見せて、特定の仕事で望む答え方に寄せていく工程です。事前学習やプロンプト、RAGとの違いと、主なサービスがどこまで対応しているかをやさしく解説します。内容を見る - AI基礎 | 用語集約6分
Negative Prompt(画像生成)
画像生成AIに「これは絵に入れないで」と伝える指示のことです。Stable Diffusion系のnegative_promptとMidjourneyの--noを例に、書き方と効き方の目安を公式資料に沿ってやさしく解説します。内容を見る - ChatGPT | 便利な機能・小ワザ約10分
ChatGPTにテンプレ文を覚えさせて使い回す
メールの挨拶、クレーム対応の決まり文句、自己紹介。毎回使い回す定型文をChatGPTに覚えさせる方法を、同じチャット内・カスタム指示・メモリ機能の3段階に分けて、初心者向けにやさしく解説します。内容を見る