PEFT documentation

PEFT統合用の関数

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

PEFT統合用の関数

PeftModel 以外のモデル、例えば Transformers や Diffusers の統合に役立つ可能性のある関数のコレクション

ここで提供されている関数はPEFTの「パブリックAPI」とみなすことができ、PEFT統合を提供するパッケージから安全に使用できます。

アダプター重みのdtypeをキャストします

peft.tuners.tuners_utils.cast_adapter_dtype

< >

( model: nn.Moduleadapter_name: strautocast_adapter_dtype: bool = True )

パラメータ

  • adapter_name (str) — アダプター名。
  • autocast_adapter_dtype (bool, 省略可) — アダプターのデータ型をオートキャストするかどうか。デフォルトはTrueです。

アダプター重みを正しいdtypeにキャストするためのヘルパーメソッドです。アダプターレイヤーに新しいパラメータを再割り当てしますが、古いパラメータを参照しているオブジェクトがある場合、それらは更新されません。

現在、これは float dtype を float32 にのみアップキャストします。

モデルからPEFTアダプターを削除する

peft.tuners.tuners_utils.delete_adapter

< >

( model: nn.Moduleadapter_name: strprefix: strlayer_cls: type[BaseTunerLayer] = <class 'peft.tuners.tuners_utils.BaseTunerLayer'> ) → new_adapter (list[str] | None)

パラメータ

  • model (nn.Module) — アダプターを削除する対象のモデル。
  • adapter_name (str) — 削除するアダプターの名前。
  • prefix (str) — PEFTメソッドのプレフィックスです。LoRAの場合は“lora_”などです。
  • layer_cls (型、任意) — アダプタレイヤーのクラスです。デフォルトはBaseTunerLayerです。

戻り値

new_adapter (list[str] | None)

削除後の残りのアダプターの名前、またはアクティブなアダプターがもう存在しない場合はNone。必要に応じて、モデルの新しいアクティブなアダプターを設定するために使用します。

既存のPEFTアダプターを削除します。

注: この関数は、モデルにPEFT設定が存在する場合でも削除しません。また、最後のPEFTアダプターを削除しても、PEFTレイヤーを完全に除去しません。PEFTモデルインスタンスを使用している場合はmodel.unload()の使用を検討するか、ベースモデルを再読み込みしてください。

PEFTアダプターのステートディクトを取得します

peft.get_peft_model_state_dict

< >

( modelstate_dict = Noneadapter_name: str = 'default'unwrap_compiled: bool = Falsesave_embedding_layers: bool | Literal['auto'] = 'auto' )

パラメータ

  • model (PeftModel) — Peftモデルです。torch.nn.DistributedDataParallel、DeepSpeed、FSDPを使用する場合は、モデルは基盤モデル/アンラップされたモデル(つまり model.module)である必要があります。
  • state_dict (dict、任意、デフォルトはNone) — モデルの state dict です。指定されない場合、渡されたモデルの state dict が使用されます。
  • adapter_name (str, 省略可能、デフォルトは"default") — 返す state dict を持つアダプタの名前。
  • unwrap_compiled (bool、省略可、デフォルトはFalse) — torch.compile が使用された場合、モデルをアンラップするかどうか。
  • save_embedding_layers (Union[bool, str], , 省略可能、デフォルトは auto) — True の場合、アダプター重みの他に埋め込み層も保存します。auto の場合、利用可能な場合、config の target_modules に一般的な埋め込み層 peft.utils.other.EMBEDDING_LAYER_NAMES が含まれているかをチェックし、その結果に基づいてブールフラグを設定します。これは 🤗 transformers のモデルでのみ機能します。

PEFTモデルの指定されたアダプターのstate dictを取得します。

これはPEFTのパラメータのみを含み、ベースモデルのパラメータは含まれません。そのため、返されるstate_dictは、通常、モデル全体サイズと比較して小さいです。完全なstate_dictを取得するには、model.state_dict()を呼び出すだけです。

アダプター名はstate_dictから削除されることに注意してください。これは、アダプターを読み込む際に変更できる任意の名前だからです。例えば、アダプター名が'default'で、元のキーが'model.q_proj.lora_A.default.weight'の場合、返されるキーは'model.q_proj.lora_A.weight'になります。重みを読み込む際にアダプター名を処理するには、この関数をset_peft_model_state_dict()と併せて使用してください。

PEFT設定に基づいて、モデルにPEFTアダプターを注入します

peft.inject_adapter_in_model

< >

( peft_config: PeftConfigmodel: torch.nn.Moduleadapter_name: str = 'default'low_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )

パラメータ

  • peft_config (PeftConfig) — PEFTモデルのパラメータを含む設定オブジェクト。
  • model (torch.nn.Module) — アダプターを注入する対象のモデル。
  • adapter_name (str, optional, デフォルトは "default") — 注入するアダプターの名前です。指定しない場合、デフォルトのアダプター名(“default”)が使用されます。
  • low_cpu_mem_usage (bool、optional、デフォルトはFalse) — メタデバイス上に空のアダプター重みを生成します。読み込みプロセスを高速化するために有用です。
  • state_dict (dict、任意、デフォルトはNone) — ここでstate_dictが渡された場合、state_dict のエントリに基づいてアダプターが注入されます。 これは、PEFT メソッドの正確なtarget_modulesが不明な場合に有用です。例えば、チェックポイントがメタデータなしで作成された場合などが挙げられます。なお、state_dictの値は使用されず、アダプトすべき正しいレイヤーを決定するためにキーのみが使用されます。

PEFTレイヤーを作成し、モデルにインプレースで注入します。

現在、APIはプロンプト学習手法、adaption prompt、または複数のターゲット層間でアダプタの状態を共有するチューナーをサポートしていません。後者にはget_peft_model()を使用してください。

この関数はget_peft_model()に似ていますが、PeftModelのインスタンスを返しません。代わりに、渡されたモデルの元のインスタンスを変更して返します。

モデルのアクティブなPEFTアダプターを設定します

peft.tuners.tuners_utils.set_adapter

< >

( modeladapter_name: str | list[str]inference_mode: bool = Falselayer_cls: type[BaseTunerLayer] = <class 'peft.tuners.tuners_utils.BaseTunerLayer'> )

パラメータ

  • model (nn.Module) — アダプターを設定する対象のモデル。
  • adapter_name (str, list[str]) — アクティブに設定するアダプターの名前
  • inference_mode (bool, 任意) — アクティブなアダプターをフリーズするかどうか(つまり requires_grad=False)を指定します。デフォルトは False です。
  • layer_cls (型、任意) — アダプタレイヤーのクラスです。デフォルトはBaseTunerLayerです。

モデルのアクティブなPEFTアダプターを設定します。

アクティブアダプターとは、フォワードパスに参加するアダプターのことです。複数のPEFTアダプター間で切り替えたい場合は、この関数を使用してください。

指定されたアダプターのトレーニングモードを設定します

peft.tuners.tuners_utils.set_training

< >

( modeladapter_names: str | Sequence[str]training: bool = True )

パラメータ

  • model (nn.Module) — アダプターモジュールの学習モードを更新する対象のモデル。
  • adapter_names (str または Sequence[str]) — 学習モードを更新するアダプタの名前。
  • training (bool, 省略可) — トレーニングモードを有効(True、デフォルト)にするか無効(False)にするかを指定します。

指定されたアダプターモジュールでトレーニングモードを有効化または無効化します。

指定されたアダプターのrequires_grad属性を設定します

peft.tuners.tuners_utils.set_requires_grad

< >

( modeladapter_names: str | Sequence[str]requires_grad: bool = True )

パラメータ

  • model (nn.Module) — アダプターの勾配要件を更新する対象のモデル。
  • adapter_names (str または Sequence[str]) — 勾配の有効化/無効化を行うアダプタの名前。
  • requires_grad (bool, 省略可能) — 有効(True、デフォルト)にするか無効(False)にするかを指定します。

指定されたアダプターで勾配を有効または無効にします。

PEFTステートディクトの重みをモデルに読み込みます

peft.set_peft_model_state_dict

< >

( modelpeft_model_state_dictadapter_name = 'default'ignore_mismatched_sizes: bool = Falselow_cpu_mem_usage: bool = False )

パラメータ

  • model (PeftModel) — Peftモデルです。
  • peft_model_state_dict (dict) — Peft モデルの state dict です。
  • adapter_name (str, 省略可能、デフォルトは "default") — 設定する state dict を持つアダプターの名前。
  • ignore_mismatched_sizes (bool、任意、デフォルトはFalse) — state dict のサイズ不一致を無視するかどうか。
  • low_cpu_mem_usage (bool、optional、デフォルトはFalse) — modelがメタデバイス上のアダプター重みで読み込まれた場合(例えば、low_cpu_mem_usage=Trueを指定してinject_adapter_in_modelを呼び出した後など)、この引数はTrueに設定する必要があります。それ以外の場合は、Falseのままにしてください。

PEFTモデルのstate dictを設定します。

PEFTのstate_dict(get_peft_model_state_dict()によって返されるもの)が与えられた場合、重みをモデルに挿入します。モデルには、PEFTアダプターがすでに配置されている必要があります(例:inject_adapter_in_model() を使用して配置する)。

アダプター重みの設定により、アダプター名の再挿入も処理されます。この名前は、アダプターを訓練した際に最初に使用されたものとは異なる場合があります。

Update on GitHub