Transformers documentation

PEFT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PEFT

PeftAdapterMixin は、Transformers におけるアダプタの管理に PEFT ライブラリの関数を提供します。このミックスインは、プロンプト学習以外のすべての PEFT メソッド(LoRA、IA3、AdaLoRA など)をサポートしています。プロンプトチューニング手法(プロンプトチューニング、プロンプト学習)は、torch モジュールに注入できないためサポートされていません。

クラス transformers.integrations.PeftAdapterMixin

< >

( )

A class containing all functions for loading and using adapters weights that are supported in PEFT library. For more details about adapters and injecting them on a transformer-based model, check out the documentation of PEFT library: https://huggingface.co/docs/peft/index

現在サポートされている PEFT メソッドはすべて、プロンプト学習以外の手法(LoRA、IA³ など)です。プロンプトチューニングやプロンプト学習などの他の PEFT モデルは、これらのアダプターが torch モジュールに「注入」できないため、対象外です。これらの手法を使用するには、PEFT ライブラリの使用ガイドを参照してください。

このミックスインを使用すると、適切なPEFTバージョン(>= 0.20.0)がインストールされている場合、以下が可能になります:

  • ローカルパスまたはリモートのHubリポジトリに保存されたアダプターを読み込み、モデルに注入します
  • モデルに新しいアダプターをアタッチし、Trainerまたは独自の実装で学習します。
  • 複数のアダプターをアタッチし、それらを反復的にアクティブ化/非アクティブ化します
  • モデルからすべてのアダプターを有効化/無効化します。
  • アクティブなアダプターのstate_dictを取得します。

load_adapter

< >

( peft_model_id: str | None = Noneadapter_name: str | None = Nonepeft_config: dict[str, typing.Any] | None = Noneadapter_state_dict: dict[str, 'torch.Tensor'] | None = Nonelow_cpu_mem_usage: bool = Falseis_trainable: bool = Falsehotswap: typing.Union[bool, typing.Literal['auto']] = 'auto'local_files_only: bool = Falseadapter_kwargs: dict[str, typing.Any] | None = Noneload_config: typing.Optional[ForwardRef('LoadStateDictConfig')] = None**kwargs )

パラメータ

  • peft_model_id (str, 任意) — Hub で検索するモデルの識別子、または保存されたアダプター設定ファイルとアダプター重みのローカルパス。
  • adapter_name (str, 省略可) — 使用するアダプター名です。設定されていない場合、“default”が使用されます。
  • load_config (LoadStateDictConfig、省略可) — アダプター重みを取得する際に再利用するロード設定です。通常はfrom_pretrainedから取得します。
  • kwargs (dict[str, Any]、省略可) — キーワード引数として渡される、LoadStateDictConfig の追加フィールドです。
  • peft_config (dict[str, Any], 省略可) — 追加するアダプタの設定です。サポートされているアダプタは、プロンプト学習以外のすべての設定(LoRA、IA³ など)です。この引数は、ユーザーが PEFT の状態辞書を直接渡す場合に使用されます。
  • adapter_state_dict (dict[str, torch.Tensor]、省略可) — 読み込むアダプターの state dict です。ユーザーが PEFT の state dict を直接渡す場合に、この引数が使用されます。
  • low_cpu_mem_usage (bool、省略可、デフォルトはFalse) — PEFT アダプターを読み込む際のメモリ使用量を削減します。これにより、読み込みプロセスの高速化も期待できます。
  • is_trainable (bool、省略可、デフォルトは False) — アダプターを学習可能にするかどうかを指定します。False の場合、アダプターは凍結され、推論にのみ使用できます。
  • hotswap — ("auto" または bool, 省略可, デフォルトは "auto") 既存の (LoRA) アダプターを、新しく読み込まれたアダプターでその場で置き換えるかどうか。つまり、追加のアダプターを読み込むのではなく、既存のアダプターの重みを新しいアダプターの重みで置き換えます。これにより、より高速かつメモリ効率の高い処理が可能になります。ただし、hotswap の主な利点は、モデルが torch.compile でコンパイルされている場合、新しいアダプターを読み込んでもモデルの再コンパイルが不要になる点です。hotswap を使用する場合は、渡す adapter_name は、すでに読み込まれているアダプターの名前である必要があります。

    新しいアダプターと古いアダプターでランクと/またはLoRA alpha(つまりスケーリング)が異なる場合、アダプターを読み込む前に追加のメソッドを呼び出す必要があります。

ファイルまたはリモートの Hub フォルダからアダプター重みをロードします。アダプターや PEFT 手法について詳しくない場合は、PEFT 公式ドキュメント https://huggingface.co/docs/peft を参照してください。

アダプター重みの読み込みにバックエンドとしてPEFTのインストールが必要です。

add_adapter

< >

( adapter_configadapter_name: str | None = None )

パラメータ

  • adapter_config (~peft.PeftConfig) — 追加するアダプターの設定です。サポートされているアダプターは、プロンプト学習以外の手法(LoRA、IA³ など)です。
  • adapter_name (str、任意、デフォルトは "default") — 追加するアダプターの名前です。名前が指定されない場合、アダプターにデフォルトの名前が割り当てられます。

アダプターや PEFT 手法について詳しくない場合は、PEFT の公式ドキュメント https://huggingface.co/docs/peft で詳しくお読みください。

学習目的で、現在のモデルに新しいアダプターを追加します。アダプター名が指定されない場合、PEFT ライブラリの慣例に従い、アダプターにデフォルト名が割り当てられます(PEFT では、デフォルトのアダプター名として “default” を使用しています)。

新たに追加されたアダプターは自動的に有効化されません。有効化するには、model.set_adapterを使用してください。

set_adapter

< >

( adapter_name: list[str] | str )

パラメータ

  • adapter_name (Union[list[str], str]) — 設定するアダプターの名前です。複数のアダプターを設定するには、文字列のリストを指定できます。

アダプターや PEFT 手法について詳しくない場合は、PEFT の公式ドキュメント https://huggingface.co/docs/peft で詳しくお読みください。

特定のアダプターを設定し、モデルにそのアダプターを使用するよう強制して、他のアダプターを無効にします。

disable_adapters

< >

( )

アダプターや PEFT 手法について詳しくない場合は、PEFT の公式ドキュメント https://huggingface.co/docs/peft で詳しくお読みください。

モデルにアタッチされているすべてのアダプターを無効にします。これにより、ベースモデルのみで推論が行われます。

enable_adapters

< >

( )

アダプターや PEFT 手法について詳しくない場合は、PEFT の公式ドキュメント https://huggingface.co/docs/peft で詳しくお読みください。

モデルにアタッチされたアダプターを有効にします。

enable_peft_hotswap

< >

( target_rank: int = 128check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error' )

パラメータ

  • target_rank (int、任意、デフォルトは 128) — 読み込まれるすべてのアダプターの中で最も高いランク。
  • check_compiled (str, 省略可, デフォルトは "error") — モデルがすでにコンパイルされている場合の処理方法です。一般的には避けるべきです。選択肢は以下の通りです:
    • “error”(デフォルト):エラーを発生させます
    • “warn”: 警告を発行します
    • “ignore”: 何もしない

異なるランクのPEFTアダプターをホットスワップする可能性を有効にします。また、モデルがコンパイル済みの場合、再コンパイルをトリガーせずにスワップを行うこともできます。

現在、ホットスワップはLoRAのみサポートされています。

このメソッドを呼び出す必要があるのは、アダプターをホットスワップする場合で、かつモデルがコンパイルされているか、読み込まれたアダプターのランクが異なる場合です。すべてのランクが同一であり、モデルがコンパイルされていない場合は、このメソッドを先に呼び出さなくてもホットスワップが機能します。

active_adapters

< >

( )

アダプターや PEFT 手法について詳しくない場合は、PEFT の公式ドキュメント https://huggingface.co/docs/peft で詳しくお読みください。

モデルの現在アクティブなアダプターを取得します。マルチアダプター推論(複数のアダプターを組み合わせる推論)の場合、ユーザーが適切に対処できるよう、すべてのアクティブなアダプターのリストを返します。

以前のPEFTバージョン(マルチアダプター推論に対応していないもの)では、module.active_adapterは単一の文字列を返します。

get_adapter_state_dict

< >

( adapter_name: str | None = Nonestate_dict: dict | None = None )

パラメータ

  • adapter_name (str, 省略可) — state dict を取得するアダプターの名前です。名前が指定されない場合、アクティブなアダプターが使用されます。
  • state_dict (torch.Tensor のネストされた辞書、任意) — モデルの状態辞書です。デフォルトでは self.state_dict() が使用されますが、モデルの状態辞書を復元する際に特別な注意が必要になる場合(モデル並列化を使用している場合など)には、こちらを指定できます。

アダプターや PEFT 手法について詳しくない場合は、PEFT の公式ドキュメント https://huggingface.co/docs/peft で詳しくお読みください。

指定されたadapter_nameアダプターに属する重みテンソルのみを含むべきアダプター状態辞書を取得します。 adapter_nameが指定されない場合、アクティブなアダプターが使用されます。

delete_adapter

< >

( adapter_names: list[str] | str )

パラメータ

  • adapter_names (Union[list[str], str]) — 削除するアダプターの名前。

ベースとなるモデルからPEFTアダプターを削除します。

Update on GitHub