PEFT documentation

VeLoRA

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).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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)トークン/秒
LoRA0.542727.692366.2
LoRA + GC0.542613.171671.8
LoRA+VeLoRA0.542719.942057.6

注意事項

  • VeLoRAは現在、標準的なLoRAの線形層でのみサポートされています。
Update on GitHub