LoRA の学習パラメータ数を計算
入力
| 層数 | 32 |
|---|---|
| 層あたりの適用モジュール数 | 4 |
| 隠れ層サイズ | 4,096 |
| LoRA ランク | 8 |
LoRA の学習パラメータ数を計算
層数・層あたりの適用モジュール数・隠れ層サイズ・LoRA ランクから、LoRA ファインチューニングが追加する学習可能パラメータ数と、それに必要なオプティマイザのメモリを見積もります。
入力
モデルアーキテクチャ
LoRA アダプタ
結果
値を入力すると計算結果が表示されます。
詳細
LoRA の学習パラメータ数
Low-Rank Adaptation(LoRA)は、大規模言語モデルを低コストでファインチューニングする最も一般的な方法です。すべての重みを更新する代わりに、ベースモデルを凍結し、適用する各重み行列のそばに小さな低ランク行列のペアを学習します。その結果、パラメータのごく一部にしか触れないにもかかわらず、ほぼフルファインチューニングのように振る舞います。この計算では、その「ごく一部」が何パラメータに相当し、どれだけのオプティマイザメモリを必要とするかを、モデルの形状とアダプタのランクから見積もります。
LoRA が学習対象を縮める仕組み
トランスフォーマーの重み行列はある隠れベクトルを別のベクトルへ写像するため、正方の層ではおよそ 個の値を保持します。それらすべてをファインチューニングするのは高くつきます。オプティマイザはそのすべてについて勾配と統計量を保存しなければならないからです。LoRA はその密な更新を、2 つの細い行列の積、すなわち形状 のものと のもの(ランク は よりはるかに小さい)に置き換えます。ベース重みは決して動かず、学習されるのはこの 2 つの因子だけで、推論時にはその積が元の行列に足し戻されます。
適用された各行列が寄与する学習可能な値は 個、入力幅と出力幅が等しいときは 個であるため、学習対象は通常モデル全体の 1 パーセントを大きく下回ります。これが LoRA を単一のアクセラレータ上で実用的にしている理由です。
計算式
層数 、層あたりの適用モジュール数 、ランク 、隠れ層サイズ とすると、学習可能パラメータ数は次のようになります。
P=L⋅m⋅2⋅r⋅d混合精度 Adam は学習可能パラメータあたり約 16 バイトのオプティマイザ状態とマスター重み、すなわち 32 ビットのマスターコピーと一次・二次モーメント推定値を保持するため、オプティマイザのメモリ(MB)は次のようになります。
M=10616Pこれはアダプタの状態だけを数えます。凍結されたベースモデルは依然として重みのためにメモリを占有しますが、勾配やオプティマイザ状態は不要であり、ここから節約が生まれます。
計算例
32 層のモデルで、各層のアテンションの 4 つの射影を適用し、ランク 8、隠れ層サイズ 4096 とします。
P=32×4×2×8×4096=8388608これはおよそ 839 万個の学習可能パラメータです。オプティマイザ状態は次のとおりです。
M=10616×8388608≈134.2 MB70 億パラメータのベースモデルにとって、この 839 万個のアダプタは全体のおよそ 0.1 パーセントにすぎませんが、多くの下流タスクにモデルを特化させるには十分です。
ランクとモジュールの選び方
ランクが容量を決める主なつまみです。軽いタスク適応にはランク 4 から 8 が一般的で、対象タスクがベースモデルの学習から大きく離れている場合は 16 から 64 がより余裕を与えます。ランクを倍にすると学習可能パラメータとオプティマイザのメモリの両方が倍になるため、低いランクで適合しきれないときにだけ上げる価値があります。層あたりのモジュール数の入力は、どの行列がアダプタを受けるかを反映します。クエリとバリューだけなら 2、アテンションブロック全体なら 4、フィードフォワード行列を含めるならそれ以上です。
アダプタをモデル全体のサイズと比較するには Transformerのパラメータ数の計算 を参照してください。凍結された重みやアクティベーションを含む学習ジョブ全体のメモリを見積もるには LLMトレーニングVRAMの計算 を参照してください。
よくある質問 (FAQ)
LoRA ランクは何を制御しますか
ランクは、適用された各重み行列に加わる低ランク更新の次元を決めます。ランクを上げるとアダプタがベースモデルからの変化を捉える容量が増えますが、その代償として学習可能パラメータとオプティマイザのメモリが増え、いずれもランクに比例します。ランクを下げるとサイズが小さく速くなりますが、難しいタスクには適合しきれないことがあります。多くのファインチューニングはランク 4 から 64 を使い、8 や 16 が一般的な出発点です。最適な値は、対象タスクがベースモデルからどれだけ離れているかによります。
LoRA ファインチューニングはフルファインチューニングよりどれだけ小さいですか
LoRA は低ランクのアダプタだけを学習し、ベース重みを凍結するため、学習対象は通常モデル全体の 1 パーセントを大きく下回ります。70 億パラメータのモデルを控えめなランクで適用しても、学習可能パラメータは数百万にとどまることが多いです。オプティマイザ状態は総パラメータ数ではなく学習可能パラメータ数に比例するため、メモリの節約は大きくなります。比較対象となるモデル全体のサイズは parameter-count-from-architecture の計算で見積もれます。
どのモジュールが通常適用されますか
最も一般的な選択は、アテンションの射影行列(クエリ、キー、バリュー、出力)で、層あたり 4 モジュールに相当します。クエリとバリューの射影だけ(2 モジュール)を適用するレシピもあれば、より広いカバレッジのためにフィードフォワード行列を加えるものもあり、その分パラメータコストは増えます。層あたりのモジュール数の入力は、設定が対象とする行列に合わせてください。
免責事項
この見積もりは、適用される行列が正方であると仮定し、LoRA の因子とその混合精度 Adam のオプティマイザ状態(パラメータあたり約 16 バイト)だけを数えます。凍結されたベースモデル、アクティベーション、アダプタ以外のパラメータの勾配、バイアスや埋め込みの調整は含みません。厳密なメモリ集計ではなく、計画用の数値として扱ってください。