モデルのしくみ 上級
LoRA
LoRA
モデル本体はそのまま固定し、小さな追加部品だけを学習して、モデルの振る舞いを調整する軽量なファインチューニング手法です。少ない計算資源で追加学習ができ、用途別に差し替えて使えます。
例GPU が1枚しかないので、全体を学習せず LoRA で社内の文体を覚えさせた。
詳しく
LoRA(Low-Rank Adaptation、ローラ)は、大きなモデルを追加学習するときに、元のパラメータを動かさず、ごく小さな追加部分だけを学習する方法です。2021年に発表された手法で、画像生成モデルや大規模言語モデルのカスタマイズで広く使われています。
しくみ
通常のファインチューニングでは、数十億〜数千億個のパラメータをすべて更新します。そのため、学習中は大量のメモリが必要で、できあがる成果物もモデル本体と同じ大きさになります。
LoRA は、「調整で変わる量」は実は単純な構造で表せるだろう、という考えにもとづきます。大きな行列の変化を、細長い2つの小さな行列の積(低ランク分解)で近似し、この小さな行列だけを学習します。元のモデルの重みは固定したままです。
結果として、次のような利点が得られます。
- 学習するパラメータの数が、全体の1%未満といった規模まで減り、メモリと時間を節約できる。
- 成果物(アダプター)は小さく、数MB〜数百MB程度で保存・配布できる。
- 元のモデルは1つのまま、用途別のアダプターを差し替えて使える。
具体例
分厚い教科書(モデル本体)に、付箋やメモ書き(アダプター)を貼って、自分向けに使いやすくするイメージです。教科書そのものを書き換えないので、メモだけ外せば元に戻せます。別の用途用のメモに貼り替えることも簡単です。
画像生成の分野では、特定の画風やキャラクター、商品の見た目を追加で覚えさせた LoRA が数多く共有されています。文章のモデルでも、社内用語や出力形式を覚えさせる用途で使われます。
使うときの注意・よくある誤解
- 万能ではない:大量の新しい知識を覚えさせたい場合や、モデルの根本的な能力を高めたい場合は、全体を更新する学習のほうが向くことがあります。
- ランクなどの設定が必要:小さな行列の大きさ(ランク)などの設定が品質に影響します。大きいほど表現力は増えますが、軽さは失われます。
- データの質が決める:軽いからといって、データの質が低くてよいわけではありません。過学習しやすいので、検証用データで確認します。
- ライセンスの確認:元のモデルのライセンスが、改変物や成果物の配布を制限している場合があります。
- QLoRA:元のモデルを量子化して小さくしたまま LoRA を学習する派生手法で、家庭用に近い GPU でも大きなモデルを調整しやすくなります。
関連する考え方
LoRA はパラメータ効率の良いファインチューニング(PEFT)の代表です。全体を更新する通常のファインチューニング、教師ありファインチューニング(SFT)のデータを使って学習する際にも選べる方式で、量子化との組み合わせも多く見られます。
あわせて知りたい言葉
- ファインチューニング学習済みのモデルに、特定の用途向けのデータを追加で学習させて調整することです。出力の形式や口調、特定分野の判断のしかたをモデルに覚えさせるのに使い、プロンプトだけでは安定しない場面で検討します。
- 教師ありファインチューニング人が用意した「入力と望ましい出力」の組を使って、モデルに手本どおりの答え方を学習させる方法です。事前学習した後のモデルを、指示に従うアシスタントに仕立てる基本の工程です。
- 量子化モデルの重みを、16ビットなどから8ビット・4ビットといった少ないビット数で表すことで、モデルのサイズと必要なメモリを減らす手法です。手元の PC でモデルを動かすときによく使われます。
- パラメータモデル内部で学習によって調整される数値(重み)のことです。数が多いほど多くの知識やパターンを表現できる傾向がありますが、必要な計算量やメモリも大きくなります。ただし性能は数だけでは決まりません。
- GPU大量の計算を同時に並べて行うのが得意な半導体で、もともとは画像表示のために作られました。AI の学習や推論に向いていて、現在の AI 開発を支える中心的な部品です。