PEFT documentation
VeLoRA
はじめに
ガイド
設定とモデル統合 メモリ効率の良い学習モデルのマージ量子化カスタムモデルアダプター注入PEFT メソッドの組み合わせtorch.compilePEFTへの貢献トラブルシューティングPEFTチェックポイント形式
分散学習
メソッド
API リファレンス
You are viewing main version, which requires installation from source. If you'd like
regular pip install, checkout the latest stable version (v0.21.0).
VeLoRA
これはLoRAのバリアントであり、このページに特に記載がない限り、LoRAで可能なすべてのことがこの方法にも適用されます。
VeLoRAは、LoRAのバリアントであり、フォワードパスで保存されるLoRAのアクティベーションを圧縮してメモリ使用量を削減し、バックワードパスでそれらを再構築して更新ルールを実装します。PEFTでは、VeLoRAはLoraConfigのvelora_config引数を通じて、LoRAのバリアントとして設定されます。
from peft import LoraConfig, VeloraConfig
config = LoraConfig(
target_modules=["q_proj", "v_proj"],
velora_config=VeloraConfig(
num_groups=64,
scale=0.2,
init_type="batch_average",
),
)VeLoRA は、target_modules によって選択されたすべての LoRA レイヤーに適用されます。num_groups は、圧縮の前に入力アクティベーションの深さをどのように分割するかを制御します。アクティベーションの深さが num_groups で割り切れない場合、VeLoRA は内部的にグループ化された表現にパディングを追加し、再構築後にパディングを削除します。scale はバックワードパス中に再構築されたアクティベーションを再スケーリングし、init_type は射影の初期化方法を選択します。
batch_average_once を使用して最初のトレーニングバッチから射影を初期化し、batch_average を使用してすべてのトレーニングのフォワードパスから更新するか、random を使用して正規化されたランダムベクトルから即座に初期化します。
以下は、MetaMathQAベンチマークによる一部の結果です。
| バリアント | トレーニング損失 | 最大メモリ (GiB) | トークン/秒 |
|---|---|---|---|
| LoRA | 0.5427 | 27.69 | 2366.2 |
| LoRA + GC | 0.5426 | 13.17 | 1671.8 |
| LoRA+VeLoRA | 0.5427 | 19.94 | 2057.6 |
注意事項
- VeLoRAは現在、標準的なLoRAの線形層でのみサポートされています。