本文へスキップ

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つの行列(数値を縦横に並べた表)ABのかけ算で表します。式にすると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問です。答えるとその場で解説が出ます。全問終えたら、「回答を記録する」で学習の記録に残せます。

1. 配布サイトでLoRAのファイルを手に入れました。これだけで動きますか?
2. 「LoRAならパラメータが1万分の1で済む」と紹介されていました
3. 料金表や在庫のような、よく変わる情報を正確に答えさせたい。LoRAで学習させますか?

全問に答えると、回答を記録できます。

残るのは「答えたかどうか」だけで、正解数は保存されません。この端末の中だけに残り、別の端末には引き継がれません。

この教科書は無料で全文公開しています。仕事で使えるところまで進みたい方は、実習と資料がそろった生徒プランをどうぞ。

生徒プランを見る(14日間無料)

あわせて読みたい