PEFT documentation
モデル
モデル
PeftModelは、PEFT手法を適用するためのベースとなるTransformerモデルとその設定を指定するためのベースモデルクラスです。ベースのPeftModelには、Hubからモデルを読み込むおよび保存するためのメソッドが含まれています。
PeftModel
クラス peft.PeftModel
< source >( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'autocast_adapter_dtype: bool = Truelow_cpu_mem_usage: bool = False )
パラメータ
- model (
torch.nn.Module) — 適応させるベースモデル。通常は Transformers のモデルです。 - peft_config (PeftConfig) — Peft モデルの設定です。
- adapter_name (
str, 省略可) — アダプターの名前。デフォルトは"default"です。 - autocast_adapter_dtype (
bool、省略可能、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。 - low_cpu_mem_usage (
bool,optional, デフォルトはFalse) — メタデバイス上に空のアダプター重みを作成します。読み込みプロセスを高速化するために有用です。> 学習用の新しい PEFT アダプターを作成する際は、
low_cpu_mem_usage=Trueを使用しないでください。
Peftのさまざまな手法を含むベースモデル。
属性:
- base_model (
torch.nn.Module) — Peft で使用されるベースの Transformer モデル。 - peft_config (PeftConfig) — Peft モデルの設定です。
- modules_to_save (
listofstr) — モデルを保存する際に保存するサブモジュール名のリスト。 - prompt_encoder (PromptEncoder) — PromptLearningConfig を使用する場合に、Peft で用いられるプロンプトエンコーダー。
- prompt_tokens (
torch.Tensor) — PromptLearningConfigを使用する場合に、Peftで用いられる仮想プロンプトトークンです。 - transformer_backbone_name (
str) — PromptLearningConfig を使用する場合、ベースモデルにおける transformer バックボーンの名前。 - word_embeddings (
torch.nn.Embedding) — PromptLearningConfigを使用する場合、ベースモデルのtransformerバックボーンにおける単語埋め込み
add_adapter
< source >( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )
パラメータ
- adapter_name (
str) — 追加するアダプターの名前。 - peft_config (PeftConfig) — 追加するアダプターの設定です。
- low_cpu_mem_usage (
bool、optional、デフォルトはFalse) — メタデバイス上に空のアダプター重みを生成します。保存されたアダプターを読み込む際に、処理を高速化するために有用です。学習用の新しい PEFT アダプターを作成する場合は、このオプションを使用しないでください。 - autocast_adapter_dtype (
bool、省略可、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。
渡された設定に基づいて、モデルにアダプターを追加します。
このアダプターは学習されていません。学習済みのアダプターを読み込むには、PeftModel.load_adapter()を参照してください。
新しいアダプターの名前は一意である必要があります。
新しいアダプターは自動的にアクティブなアダプターとして設定されません。アクティブなアダプターを設定するには、PeftModel.set_adapter()を使用してください。
peftに関する情報を含めるために、モデルカードを更新または作成します:
peftライブラリのタグを追加します- peftのバージョンを追加
- ベースモデルの情報を追加します
- 使用された場合、量子化情報を追加します
既存のアダプターを削除します。
アダプターモジュールを無効にするコンテキストマネージャーです。ベースモデルで推論を実行する際に使用します。
モデルのフォワードパス。
from_pretrained
< source >( model: torch.nn.Modulemodel_id: Union[str, os.PathLike]adapter_name: str = 'default'is_trainable: bool = Falseconfig: Optional[PeftConfig] = Noneautocast_adapter_dtype: bool = Trueephemeral_gpu_offload: bool = Falselow_cpu_mem_usage: bool = Falsekey_mapping: Optional[dict[str, str]] = None**kwargs: Any )
パラメータ
- model (
torch.nn.Module) — 適応させる対象のモデルです。🤗 Transformers のモデルの場合、モデルは from_pretrained で初期化されている必要があります。 - model_id (
strまたはos.PathLike) — 使用する PEFT 設定の名前。以下のいずれかです:- Hugging Face Hub上のモデルリポジトリにホストされているPEFT設定の
model idを表す文字列。 save_pretrainedメソッドを使用して保存されたPEFT設定ファイルを含むディレクトリへのパス(./my_peft_config_directory/)。
- Hugging Face Hub上のモデルリポジトリにホストされているPEFT設定の
- adapter_name (
str、任意、デフォルトは"default") — 読み込むアダプターの名前です。複数のアダプターを読み込む場合に便利です。 - is_trainable (
bool、省略可、デフォルトはFalse) — アダプターを学習可能にするかどうかを指定します。Falseの場合、アダプターは凍結され、推論にのみ使用できます。 - config (PeftConfig、任意) —
自動読み込みされる設定の代わりに使用する設定オブジェクトです。この設定オブジェクトは
model_idおよびkwargsと排他的です。from_pretrainedを呼び出す前に設定がすでに読み込まれている場合に便利です。 - autocast_adapter_dtype (
bool、省略可、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。 - ephemeral_gpu_offload (
bool, 省略可能) — 部分的に読み込まれたモジュールに対して、エフェメラルな GPU オフロードを使用するかどうか。デフォルトはFalseです。モデルの一部やコンポーネント(アダプターなど)を、必要とされるまで CPU メモリに保持する場合に有用です。小さなデータに対してコストの高い演算を実行する代わりに、データはオンデマンドで GPU に転送され、演算が実行された後、結果が CPU メモリに戻されます。これにより、わずかな一時的な VRAM のオーバーヘッドが生じますが、特定のケースでは桁違いの高速化が得られます。 - low_cpu_mem_usage (
bool、optional、デフォルトはFalse) — 保存された重みの読み込み前に、メタデバイス上に空のアダプター重みを作成します。プロセスを高速化するために有用です。 - key_mapping (dict, 任意、デフォルトは None) —
state_dictの読み込み前に適用される、PEFT のstate_dictキーの追加マッピングです。このマッピングが適用される場合、事前に PEFT 固有の"base_model.model"プレフィックスが削除され、アダプター名(例:"default")はまだ挿入されていません。この引数を渡すのは、その意味を十分に理解している場合のみとします。 - kwargs — (
optional): 特定の PEFT 設定クラスに渡される追加のキーワード引数。これにはtorch_device(str, optional): アダプターを読み込むデバイス(load_adapter[PeftModel.load_adapter] に転送されます)。Noneの場合、デバイスは推論されます。
事前学習済みモデルと読み込まれたPEFTの重みからPEFTモデルをインスタンス化します。
渡されたmodelがインプレースで変更される可能性があることに注意してください。
ベースモデルを返します。
get_layer_status
< source >( ) → listpeft.peft_model.TunerLayerStatus
戻り値
listpeft.peft_model.TunerLayerStatus
dataclassのリストで、各要素が対応するアダプタ層のステータスを含みます。
モデル内の各アダプタ層のステータスを取得します。
このメソッドはTunerLayerStatusデータクラスの実例のリストを返します。各実例には、以下の属性が含まれます。
name(str): アダプタ層の名前。例:model.encoder.block.0.layer.0.SelfAttention.qmodule_type(str): アダプタ層のタイプ。例:lora.Linearenabled(bool): アダプタ層が有効かどうか。active_adapters(list[str]): アクティブなアダプターの名前(存在する場合)。例:["default"]merged_adapters(list[str]): マージされたアダプターの名前(存在する場合)。例:["default"]available_adapters(list[str]): 利用可能なアダプターの名前。例:["default"]quantization_backend(strまたはNone): 量子化バックエンドの名前。例:"bnb 4bit"。量子化されていない場合はNone。
get_model_status
< source >( ) → peft.peft_model.TunerModelStatus
戻り値
peft.peft_model.TunerModelStatus
モデルのステータスを含むデータクラス。
モデルのチューナーのステータスを取得します。
このメソッドは、TunerModelStatusデータクラスの実例を返します。この実例には、以下の属性が含まれます。
base_model_type(str): ベースモデルのタイプ。例:T5Modeladapter_model_type(str): アダプターモデルの型。例:LoraModelpeft_types(dict[str, str]): アダプター名からアダプタータイプへのマッピングです。例:{"default": "LORA"}。trainable_params(int): モデル内の学習可能なパラメータの数。total_params(int): モデルのパラメータの総数。num_adapter_layers(int): モデル内のアダプタ層の数。enabled(bool,Literal["irregular"]): すべてのアダプタ層が有効かどうかを示します。一部が有効で一部が無効の場合は、"irregular"になります。 これはモデルが不整合な状態にあり、期待通りに動作しない可能性があることを意味します。active_adapters(list[str],Literal["irregular"]): アクティブなアダプターの名前です。アクティブなアダプターがすべてのレイヤー間で一致しない場合、この値は"irregular"となり、モデルが不整合な状態にあり、期待通りに動作しない可能性があることを示します。merged_adapters(list[str],Literal["irregular"]): マージされたアダプターの名前です。マージされたアダプターがすべてのレイヤー間で一致しない場合、"irregular"となり、モデルが不整合な状態にあり、期待通りに動作しない可能性があることを示します。available_adapters(list[str]): 利用可能なアダプターの名前。例:["default"]quantization_backend(str,None,Literal["irregular"]): 量子化バックエンドの名前です。例:"bnb 4bit"、量子化されていない場合はNoneです。すべてのレイヤーでバックエンドが一致しない場合は、"irregular"になります。
モデルの学習可能なパラメータ数と全パラメータ数を返します。
get_prompt
< source >( batch_size: inttask_ids: Optional[torch.Tensor] = Nonemax_cache_len: Optional[int] = None )
Peftで使用する仮想プロンプトを返します。プロンプト学習手法を使用している場合にのみ適用されます。
モデルを保存する際に保存するプロンプト埋め込みを返します。プロンプト学習手法を使用している場合にのみ適用されます。
ヘルスチェック
< source >( min_trainable_params: int = 1max_trainable_params_percent = 50 )
学習前に、このモデルのサスペクショナルなアダプタ状態を確認してください。
この関数は、モデルおよびレイヤーのステータス API を要約し、アダプタ状態の不整合、マージされたアダプタ、および妥当でない学習可能パラメータ数に関する調査結果を含みます。トレーニングループ、オプティマイザ、データセットの検証は行いません。モデルに不整合が見つかった場合(例:同じアダプタについて、一部のレイヤーが有効で一部のレイヤーが無効になっている場合)、ステータスは"irregular"として報告されます。これはほぼ常に、何かが誤って行われたことを意味しており、モデルの属性を誤って変更していないか確認する必要があります。
チェックで疑わしいものが検出された場合、"findings" フィールドに報告されます。"findings"" リストが空であることは、疑わしいアダプタ状態が検出されなかったことを意味しますが、トレーニングの実行が必ず成功することを保証するものではありません。
load_adapter
< source >( model_id: Union[str, os.PathLike]adapter_name: stris_trainable: bool = Falsetorch_device: Optional[str] = Noneautocast_adapter_dtype: bool = Trueephemeral_gpu_offload: bool = Falselow_cpu_mem_usage: bool = Falsekey_mapping: Optional[dict[str, str]] = None**kwargs: Any )
パラメータ
- model_id (
strまたはos.PathLike) — 使用する PEFT 設定の名前。以下のいずれかです:- Hugging Face Hub上のモデルリポジトリにホストされているPEFT設定の
model idを表す文字列。 save_pretrainedメソッドを使用して保存されたPEFT設定ファイルを含むディレクトリへのパス(./my_peft_config_directory/)。
- Hugging Face Hub上のモデルリポジトリにホストされているPEFT設定の
- adapter_name (
str) — 追加するアダプターの名前。 - is_trainable (
bool、省略可、デフォルトはFalse) — アダプターを学習可能にするかどうかを指定します。Falseの場合、アダプターは凍結され、推論にのみ使用できます。 - torch_device (
str、省略可、デフォルトは None) — アダプターを読み込むデバイスです。Noneの場合、デバイスは推論されます。 - autocast_adapter_dtype (
bool、省略可、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。 - ephemeral_gpu_offload (
bool、任意、デフォルトはFalse) — 部分的に読み込まれたモジュールに対してエフェメラルな GPU オフロードを使用するかどうか。デフォルトはFalseです。 - low_cpu_mem_usage (
bool、optional、デフォルトはFalse) — 保存された重みの読み込み前に、メタデバイス上に空のアダプター重みを作成します。プロセスを高速化するために有用です。 - key_mapping (dict, 任意、デフォルトは None) —
state_dictの読み込み前に適用される、PEFT のstate_dictキーの追加マッピングです。このマッピングが適用される場合、事前に PEFT 固有の"base_model.model"プレフィックスが削除され、アダプター名(例:"default")はまだ挿入されていません。この引数を渡すのは、その意味を十分に理解している場合のみとします。 - kwargs — (
optional): アダプタの読み込み方法を修正するための追加の引数。例えば、Hugging Face Hub のトークンなど。
学習済みのアダプターをモデルに読み込みます。
新しいアダプターの名前は一意である必要があります。
新しいアダプターは自動的にアクティブなアダプターとして設定されません。アクティブなアダプターを設定するには、PeftModel.set_adapter()を使用してください。
必要に応じて、モデルを勾配チェックポイント処理に準備します
注: 新しいTransformersのバージョンでは、これは‘activation checkpointing’と呼ばれます。
print_healthcheck
< source >( sink = <built-in function print>min_trainable_params: int = 1max_trainable_params_percent = 50**kwargs )
パラメータ
- sink (
callable、任意、デフォルト=print) — 出力を表示するために呼び出される関数です。デフォルトでは組み込みのprint関数が使用されますが、logger.infoのように他の関数も指定できます。 - min_trainable_params (
int、任意、デフォルト=1) — パラメータの最小期待数です。これより少ないパラメータが見つかった場合、エラーとして報告されます。 - max_trainable_params_percent (
int、任意、デフォルト=50) — 学習可能なパラメータの最大割合です。これを超える数のパラメータが見つかった場合、警告として報告されます。 - kwargs —
追加のキーワード引数は
format_healthcheckに渡されます。
コンパクトで人間が読みやすいヘルスチェックレポートを出力します。
出力はPEFTモデルの状態を要約し、アダプタ状態の不整合、マージされたアダプタ、および妥当でない学習可能パラメータ数に関する調査結果を含みます。トレーニングループ、オプティマイザ、またはデータセットの検証は行われません。モデルに不整合が見つかった場合、例えば同じアダプタ内で一部のレイヤーが有効化され、他のレイヤーが無効化されている場合など、ステータスは"irregular"として報告されます。これはほぼ常に何かが誤って行われたことを意味し、モデルの属性を誤って変更していないか確認する必要があります。
問題が検出された場合、最後のセクションの「findings」の下に表示されます。問題が検出されなかった場合でも、トレーニングの実行が必ず成功することを保証するものではありません。
モデル内の学習可能なパラメータの数を出力します。
Note: print_trainable_parameters() は get_nb_trainable_parameters() を使用しますが、これは huggingface/transformers の num_parameters(only_trainable=True) とは異なります。get_nb_trainable_parameters() は、修正されたバックボーン・トランスフォーマーモデルを含む Peft Model の (学習可能なパラメータ数、全パラメータ数) を返します。LoRA のような手法では、バックボーン・トランスフォーマーモデルは LoRA モジュールによってインプレースで修正されます。一方、プロンプトチューニングでは、バックボーン・トランスフォーマーモデルは修正されません。num_parameters(only_trainable=True) は、バックボーン・トランスフォーマーモデルの学習可能なパラメータ数を返しますが、これは異なる場合があります。
save_pretrained
< source >( save_directory: strsafe_serialization: bool = Trueselected_adapters: Optional[list[str]] = Nonesave_embedding_layers: Union[str, bool] = 'auto'is_main_process: bool = Truepath_initial_model_for_weight_conversion: Optional[str] = None**kwargs: Any )
パラメータ
- save_directory (
str) — アダプターモデルと設定ファイルが保存されるディレクトリ(存在しない場合は作成されます)。 - safe_serialization (
bool, 省略可能) — アダプターファイルをsafetensors形式で保存するかどうか。デフォルトはTrueです。 - selected_adapters (
List[str], 任意) — 保存するアダプターのリストです。Noneの場合、すべてのアダプターがデフォルトで保存されます。 - save_embedding_layers (
Union[bool, str]、省略可能、デフォルトは"auto") —Trueの場合、アダプター重みの他に埋め込み層も保存します。autoの場合、設定のtarget_modulesに一般的な埋め込み層peft.utils.other.EMBEDDING_LAYER_NAMESが含まれているかを(利用可能な場合)確認し、ブール値のフラグを自動的に設定します。これは🤗 transformersモデルでのみ機能します。 - is_main_process (
bool, 省略可) — このメソッドを呼び出しているプロセスがメインプロセスかどうかを示します。デフォルト値はTrueです。メインプロセス以外の場合、チェックポイントの保存は行われません。これはマルチデバイス構成(例: DDP)において重要です。 - path_initial_model_for_weight_conversion (
str, 省略可) — モデルを PiSSA/CorDA/OLoRA で初期化し、トレーニングを実行する前に得られる、初期化されたアダプタへのパスです。path_initial_model_for_weight_conversionが None でない場合、ファインチューニング前後のアダプタの差分が計算されます。この差分は、標準的な LoRA アダプタのパラメータとして表現できます。PiSSA などの手法とは異なり、この変換されたアダプタを使用する場合、ベースモデルの変更は不要です。そのため、LoRA アダプタと複数の PiSSA/CorDA/OLoRA アダプタを併用したり、任意のアダプタを有効化・無効化したりすることが容易になります。なお、rsloraをrank_patternまたはalpha_patternと組み合わせて使用している場合、この変換はサポートされていません。詳細については、peft.tuners.lora.LoraModel.subtract_mutated_init() を参照してください。 - kwargs (追加のキーワード引数、任意) —
push_to_hubメソッドに渡される追加のキーワード引数。
この関数は、アダプターモデルとアダプター設定ファイルをディレクトリに保存します。これにより、PeftModel.from_pretrained()クラスメソッドを使って再読み込みでき、PeftModel.push_to_hub()メソッドでも使用できます。
set_adapter
< source >( adapter_name: strinference_mode: bool = False )
アクティブなアダプターを設定します。
すべてのPEFTメソッドが複数のアクティブなアダプターをサポートしているわけではないため、同時にアクティブにできるアダプターは1つだけです。サポートされているメソッドで複数のアダプターをアクティブにするには、model.base_model.set_adapter(adapter_names)を使用してください。
また、この関数は、inference_modeがTrueでない限り、指定されたアダプターを学習可能(つまり、requires_grad=True)に設定します。
set_requires_grad
< source >( adapter_names: str | Sequence[str]requires_grad: bool = True )
指定されたアダプターで勾配を有効または無効にします。
注: プロンプトチューニングなどのプロンプト学習手法には対応していません。
このモデルのアダプターをLoRAに変換できるかどうか。
通常、PEFT手法が加法的(つまり、W’ = W_base + delta_weight)である場合、これは機能します。
PeftModelForSequenceClassification
シーケンス分類タスク用のPeftModelです。
クラス peft.PeftModelForSequenceClassification
< source >( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )
パラメータ
- model (PreTrainedModel) — ベースとなる Transformer モデル。
- peft_config (PeftConfig) — Peftの設定。
- adapter_name (
str, 省略可) — アダプターの名前。デフォルトは"default"です。 - autocast_adapter_dtype (
bool、省略可能、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。
シーケンス分類タスク用のPeftモデル。
属性:
- config (
PretrainedConfig) — ベースモデルの設定オブジェクトです。 - cls_layer_name (
str) — 分類層の名前。
例:
>>> from transformers import AutoModelForSequenceClassification
>>> from peft import PeftModelForSequenceClassification, get_peft_config
>>> config = {
... "peft_type": "PREFIX_TUNING",
... "task_type": "SEQ_CLS",
... "inference_mode": False,
... "num_virtual_tokens": 20,
... "token_dim": 768,
... "num_transformer_submodules": 1,
... "num_attention_heads": 12,
... "num_layers": 12,
... "encoder_hidden_size": 768,
... "prefix_projection": False,
... }
>>> peft_config = get_peft_config(config)
>>> model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForSequenceClassification(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 370178 || all params: 108680450 || trainable%: 0.3406113979101117PeftModelForTokenClassification
トークン分類タスク用のPeftModel。
クラス peft.PeftModelForTokenClassification
< source >( model: torch.nn.Modulepeft_config: PeftConfig = Noneadapter_name: str = 'default'**kwargs )
パラメータ
- model (PreTrainedModel) — ベースとなる Transformer モデル。
- peft_config (PeftConfig) — Peftの設定。
- adapter_name (
str, 省略可) — アダプターの名前。デフォルトは"default"です。 - autocast_adapter_dtype (
bool、省略可能、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。
トークン分類タスク用のPeftモデル。
属性:
- config (
PretrainedConfig) — ベースモデルの設定オブジェクトです。 - cls_layer_name (
str) — 分類層の名前。
例:
>>> from transformers import AutoModelForTokenClassification
>>> from peft import PeftModelForTokenClassification, get_peft_config
>>> config = {
... "peft_type": "PREFIX_TUNING",
... "task_type": "TOKEN_CLS",
... "inference_mode": False,
... "num_virtual_tokens": 20,
... "token_dim": 768,
... "num_transformer_submodules": 1,
... "num_attention_heads": 12,
... "num_layers": 12,
... "encoder_hidden_size": 768,
... "prefix_projection": False,
... }
>>> peft_config = get_peft_config(config)
>>> model = AutoModelForTokenClassification.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForTokenClassification(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 370178 || all params: 108680450 || trainable%: 0.3406113979101117add_adapter
< source >( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )
パラメータ
- adapter_name (
str) — 追加するアダプターの名前。 - peft_config (PeftConfig) — 追加するアダプターの設定です。
- low_cpu_mem_usage (
bool、optional、デフォルトはFalse) — メタデバイス上に空のアダプター重みを生成します。保存されたアダプターを読み込む際に、処理を高速化するために有用です。学習用の新しい PEFT アダプターを作成する場合は、このオプションを使用しないでください。 - autocast_adapter_dtype (
bool、省略可、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。
渡された設定に基づいて、モデルにアダプターを追加します。
このアダプターは学習されていません。学習済みのアダプターを読み込むには、PeftModel.load_adapter()を参照してください。
新しいアダプターの名前は一意である必要があります。
新しいアダプターは自動的にアクティブなアダプターとして設定されません。アクティブなアダプターを設定するには、PeftModel.set_adapter()を使用してください。
PeftModelForCausalLM
因果言語モデリング用のPeftModel。
クラス peft.PeftModelForCausalLM
< source >( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )
パラメータ
- model (PreTrainedModel) — ベースとなる Transformer モデル。
- peft_config (PeftConfig) — Peftの設定。
- adapter_name (
str, 省略可) — アダプターの名前。デフォルトは"default"です。 - autocast_adapter_dtype (
bool、省略可能、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。
因果言語モデリング用のPeftモデル。
例:
>>> from transformers import AutoModelForCausalLM
>>> from peft import PeftModelForCausalLM, get_peft_config
>>> config = {
... "peft_type": "PREFIX_TUNING",
... "task_type": "CAUSAL_LM",
... "inference_mode": False,
... "num_virtual_tokens": 20,
... "token_dim": 1280,
... "num_transformer_submodules": 1,
... "num_attention_heads": 20,
... "num_layers": 36,
... "encoder_hidden_size": 1280,
... "prefix_projection": False,
... }
>>> peft_config = get_peft_config(config)
>>> model = AutoModelForCausalLM.from_pretrained("gpt2-large")
>>> peft_model = PeftModelForCausalLM(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 1843200 || all params: 775873280 || trainable%: 0.23756456724479544PeftModelForSeq2SeqLM
シーケンスツーシーケンス言語モデリング用のPeftModel。
注: 入力トークルを指定し、デコーダー入力トークルを明示的に指定しない場合、shift_tokens_right() を使用して入力トークルを1ステップ右にシフトすることで、デコーダー入力トークルが自動的に生成されます。
クラス peft.PeftModelForSeq2SeqLM
< source >( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )
パラメータ
- model (PreTrainedModel) — ベースとなる Transformer モデル。
- peft_config (PeftConfig) — Peftの設定。
- adapter_name (
str, 省略可) — アダプターの名前。デフォルトは"default"です。 - autocast_adapter_dtype (
bool、省略可能、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。
シーケンスツーシーケンス言語モデリング用のPeftモデル。
例:
>>> from transformers import AutoModelForSeq2SeqLM
>>> from peft import PeftModelForSeq2SeqLM, get_peft_config
>>> config = {
... "peft_type": "LORA",
... "task_type": "SEQ_2_SEQ_LM",
... "inference_mode": False,
... "r": 8,
... "target_modules": ["q", "v"],
... "lora_alpha": 32,
... "lora_dropout": 0.1,
... "fan_in_fan_out": False,
... "bias": "none",
... }
>>> peft_config = get_peft_config(config)
>>> model = AutoModelForSeq2SeqLM.from_pretrained("t5-base")
>>> peft_model = PeftModelForSeq2SeqLM(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 884736 || all params: 223843584 || trainable%: 0.3952474242013566PeftModelForQuestionAnswering
質問応答用のPeftModel。
クラス peft.PeftModelForQuestionAnswering
< source >( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )
パラメータ
- model (PreTrainedModel) — ベースとなる Transformer モデル。
- peft_config (PeftConfig) — Peftの設定。
- adapter_name (
str, 省略可) — アダプターの名前。デフォルトは"default"です。 - autocast_adapter_dtype (
bool、省略可能、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。
抽出型質問応答用のPeftモデル。
属性:
- config (
PretrainedConfig) — ベースモデルの設定オブジェクトです。 - cls_layer_name (
str) — 分類層の名前。
例:
>>> from transformers import AutoModelForQuestionAnswering
>>> from peft import PeftModelForQuestionAnswering, get_peft_config
>>> config = {
... "peft_type": "LORA",
... "task_type": "QUESTION_ANS",
... "inference_mode": False,
... "r": 16,
... "target_modules": ["query", "value"],
... "lora_alpha": 32,
... "lora_dropout": 0.05,
... "fan_in_fan_out": False,
... "bias": "none",
... }
>>> peft_config = get_peft_config(config)
>>> model = AutoModelForQuestionAnswering.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForQuestionAnswering(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 592900 || all params: 108312580 || trainable%: 0.5473971721475013add_adapter
< source >( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )
パラメータ
- adapter_name (
str) — 追加するアダプターの名前。 - peft_config (PeftConfig) — 追加するアダプターの設定です。
- low_cpu_mem_usage (
bool、optional、デフォルトはFalse) — メタデバイス上に空のアダプター重みを生成します。保存されたアダプターを読み込む際に、処理を高速化するために有用です。学習用の新しい PEFT アダプターを作成する場合は、このオプションを使用しないでください。 - autocast_adapter_dtype (
bool、省略可、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。
渡された設定に基づいて、モデルにアダプターを追加します。
このアダプターは学習されていません。学習済みのアダプターを読み込むには、PeftModel.load_adapter()を参照してください。
新しいアダプターの名前は一意である必要があります。
新しいアダプターは自動的にアクティブなアダプターとして設定されません。アクティブなアダプターを設定するには、PeftModel.set_adapter()を使用してください。
PeftModelForFeatureExtraction
Transformerモデルから特徴量/埋め込みを抽出するためのPeftModelです。
クラス peft.PeftModelForFeatureExtraction
< source >( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )
パラメータ
- model (PreTrainedModel) — ベースとなる Transformer モデル。
- peft_config (PeftConfig) — Peftの設定。
- adapter_name (
str, 省略可) — アダプターの名前。デフォルトは"default"です。 - autocast_adapter_dtype (
bool、省略可能、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。
Transformerモデルから特徴量/埋め込みを抽出するためのPeftモデル
属性:
- config (
PretrainedConfig) — ベースモデルの設定オブジェクトです。
例:
>>> from transformers import AutoModel
>>> from peft import PeftModelForFeatureExtraction, get_peft_config
>>> config = {
... "peft_type": "LORA",
... "task_type": "FEATURE_EXTRACTION",
... "inference_mode": False,
... "r": 16,
... "target_modules": ["query", "value"],
... "lora_alpha": 32,
... "lora_dropout": 0.05,
... "fan_in_fan_out": False,
... "bias": "none",
... }
>>> peft_config = get_peft_config(config)
>>> model = AutoModel.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForFeatureExtraction(model, peft_config)
>>> peft_model.print_trainable_parameters()PeftMixedModel
異なるアダプタタイプ(LoRAとLoHaなど)を混合するためのPeftModelです。
クラス peft.PeftMixedModel
< source >( model: nn.Modulepeft_config: PeftConfigadapter_name: str = 'default' )
推論時に異なるタイプのアダプタを混合して読み込むためのPeftMixedModel。
このクラスは読み込み/保存をサポートしておらず、通常は直接初期化すべきではありません。代わりに、mixed=True引数を指定してget_peft_modelを使用してください。
> Mixed adapter typesガイドを 読み、異なるアダプタータイプを使用する方法について詳しく学びましょう。
例:
>>> base_model = ... # load the base model, e.g. from transformers
>>> peft_model = PeftMixedModel.from_pretrained(base_model, path_to_adapter1, "adapter1").eval()
>>> peft_model.load_adapter(path_to_adapter2, "adapter2")
>>> peft_model.set_adapter(["adapter1", "adapter2"]) # activate both adapters
>>> peft_model(data) # forward pass using both adaptersadd_adapter
< source >( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )
パラメータ
- adapter_name (
str) — 追加するアダプターの名前。 - peft_config (PeftConfig) — 追加するアダプターの設定です。
- low_cpu_mem_usage (
bool,optional, デフォルトはFalse) — メタデバイス上に空のアダプター重みを作成します。保存されたアダプターを読み込む際の処理を高速化するために便利です。> 学習用の新しい PEFT アダプターを作成する際は、
low_cpu_mem_usage=Trueを使用しないでください(PeftMixedModel における学習は未検証であり、一般的に非推奨です)。 - autocast_adapter_dtype (
bool、省略可、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrueです。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、一部の PEFT チューナーにのみ影響を与えます。Falseに設定した場合、dtype は対応するレイヤーのものと同一のままになります。
渡された設定に基づいて、モデルにアダプターを追加します。
このアダプターは学習されていません。学習済みのアダプターを読み込むには、PeftModel.load_adapter()を参照してください。
新しいアダプターの名前は一意である必要があります。
新しいアダプターは自動的にアクティブなアダプターとして設定されません。アクティブなアダプターを設定するには、PeftModel.set_adapter()を使用してください。
アダプターモジュールを無効にします。
モデルのフォワードパス。
from_pretrained
< source >( model: nn.Modulemodel_id: str | os.PathLikeadapter_name: str = 'default'is_trainable: bool = Falseconfig: Optional[PeftConfig] = None**kwargs: Any )
パラメータ
- model (
nn.Module) — 適応させる対象のモデル。 - model_id (
strまたはos.PathLike) — 使用する PEFT 設定の名前。以下のいずれかです:- Hugging Face Hub上のモデルリポジトリにホストされているPEFT設定の
model idを表す文字列。 save_pretrainedメソッドを使用して保存されたPEFT設定ファイルを含むディレクトリへのパス(./my_peft_config_directory/)。
- Hugging Face Hub上のモデルリポジトリにホストされているPEFT設定の
- adapter_name (
str、任意、デフォルトは"default") — 読み込むアダプターの名前です。複数のアダプターを読み込む場合に便利です。 - is_trainable (
bool、省略可、デフォルトはFalse) — アダプターを学習可能にするかどうかを指定します。Falseの場合、アダプターは凍結され、推論に使用されます。 - config (PeftConfig、任意) —
自動読み込みされる設定の代わりに使用する設定オブジェクトです。この設定オブジェクトは
model_idおよびkwargsと排他的です。from_pretrainedを呼び出す前に設定がすでに読み込まれている場合に便利です。 - low_cpu_mem_usage (
bool、optional、デフォルトはFalse) — 保存された重みの読み込み前に、メタデバイス上に空のアダプター重みを作成します。プロセスを高速化するために有用です。 - kwargs — (
optional): 特定の PEFT 設定クラスに渡される追加のキーワード引数。
事前学習済みモデルと読み込まれたPEFTの重みから、PEFT混合モデルをインスタンス化します。
渡されたmodelがインプレースで変更される可能性があることに注意してください。
出力を生成します。
モデルの学習可能なパラメータ数と全パラメータ数を返します。
load_adapter
< source >( model_id: stradapter_name: str*args: Any**kwargs: Any )
パラメータ
- adapter_name (
str) — 追加するアダプターの名前。 - peft_config (PeftConfig) — 追加するアダプターの設定です。
- is_trainable (
bool、省略可、デフォルトはFalse) — アダプターを学習可能にするかどうかを指定します。Falseの場合、アダプターは凍結され、推論にのみ使用できます。 - torch_device (
str、省略可、デフォルトは None) — アダプターを読み込むデバイスです。Noneの場合、デバイスは推論されます。 - autocast_adapter_dtype (
bool、省略可、デフォルトはTrue) — アダプターの dtype を自動キャストするかどうか。デフォルトはTrue。現在、これは float16 および bfloat16 で使用されているアダプター重みを float32 にキャストするのみで、安定した学習のために通常必要とされる処理です。また、特定の PEFT チューナーにのみ影響を与えます。 - ephemeral_gpu_offload (
bool、任意、デフォルトはFalse) — 部分的に読み込まれたモジュールに対してエフェメラルな GPU オフロードを使用するかどうか。デフォルトはFalseです。 - low_cpu_mem_usage (
bool、optional、デフォルトはFalse) — 保存された重みの読み込み前に、メタデバイス上に空のアダプター重みを作成します。プロセスを高速化するために有用です。 - kwargs — (
optional): アダプタの読み込み方法を修正するための追加の引数。例えば、Hugging Face Hub のトークンなど。
学習済みのアダプターをモデルに読み込みます。
新しいアダプターの名前は一意である必要があります。
新しいアダプターは自動的にアクティブなアダプターとして設定されません。アクティブなアダプターを設定するには、PeftModel.set_adapter()を使用してください。
merge_and_unload
< source >( *args: Any**kwargs: Any )
このメソッドは、アダプター層をベースモデルにマージします。ベースモデルを単独のモデルとして使用したい場合に必要です。
モデル内の学習可能なパラメータの数を出力します。
Note: print_trainable_parameters() は get_nb_trainable_parameters() を使用しますが、これは huggingface/transformers の num_parameters(only_trainable=True) とは異なります。get_nb_trainable_parameters() は、修正されたバックボーン・トランスフォーマーモデルを含む Peft Model の (学習可能なパラメータ数、全パラメータ数) を返します。LoRA のような手法では、バックボーン・トランスフォーマーモデルは LoRA モジュールによってインプレースで修正されます。一方、プロンプトチューニングでは、バックボーン・トランスフォーマーモデルは修正されません。num_parameters(only_trainable=True) は、バックボーン・トランスフォーマーモデルの学習可能なパラメータ数を返しますが、これは異なる場合があります。
set_adapter
< source >( adapter_name: Union[str, list[str]]inference_mode: bool = False )
モデルのアクティブなアダプターを設定します。
forward pass においてアダプタが適用される順序は、この関数に渡された順序とは異なる場合があります。代わりに、forward pass 中の順序は、アダプタがモデルに読み込まれた順序によって決定されます。アクティブなアダプタは、forward pass 中にどのアダプタがアクティブかを決定するだけで、適用される順序は決定しません。
また、この関数は、inference_modeがTrueでない限り、指定されたアダプターを学習可能(つまり、requires_grad=True)に設定します。
アダプターモジュールをマージせずにすべて削除して、ベースモデルを取得します。これにより、元のベースモデルが返されます。
ユーティリティ
peft.cast_mixed_precision_params
< source >( model: torch.nn.Moduledtype: torch.dtype )
モデルの学習可能なパラメータ以外のすべてを指定されたdtypeにキャストします。dtypeは、実行している混合精度トレーニングに応じてtorch.float16またはtorch.bfloat16にできます。学習可能なパラメータはフル精度にキャストされます。これは、非学習可能なパラメータに半精度のdtypeを使用することで、PEFT手法を使用する際のGPUメモリ使用量を削減することを目的としています。学習可能なパラメータをフル精度に保つことで、自動混合精度トレーニングを使用してもトレーニングの安定性が維持されます。
torch.bfloat16 を、実行している混合精度トレーニングに従って使用します。
peft.get_peft_model
< source >( model: nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'mixed: bool = Falseautocast_adapter_dtype: bool = Truerevision: Optional[str] = Nonelow_cpu_mem_usage: bool = False )
パラメータ
- model (
torch.nn.Module) — ラップ対象のモデル。通常は Transformers のモデルですが、タスク固有の機能 (peft_config.task_type) を利用する場合は Transformers の規約に従う必要があるという点に注意して、任意のnn.Moduleを使用できます。 - peft_config (PeftConfig) — Peft モデルのパラメータを含む設定オブジェクトです。
- adapter_name (
str,optional, デフォルトは"default") — 注入するアダプターの名前です。指定しない場合、デフォルトのアダプター名(“default”)が使用されます。 - mixed (
bool、optional、デフォルトはFalse) — 互換性のある異なるアダプタータイプを混在させることを許可するかどうか。 - autocast_adapter_dtype (
bool, 省略可) — アダプターのデータ型をオートキャストするかどうか。デフォルトはTrueです。現在、これは安定した学習のために通常必要とされるため、float16またはbfloat16のアダプター重みをfloat32にキャストするのみで、特定のPEFTチューナーにのみ影響を与えます。 - revision (
str、optional、デフォルトはmain) — ベースモデルのリビジョンです。この値が設定されていない場合、保存された peft モデルはベースモデルのmainリビジョンを読み込みます。 - low_cpu_mem_usage (
bool、optional、デフォルトはFalse) — メタデバイス上に空のアダプター重みを生成します。読み込みプロセスを高速化するために有用です。モデルの学習を予定している場合は、学習開始前にアダプター重みが別の重みで置き換えられる場合を除き、この設定をFalseのままにしてください。
モデルと設定からPeftモデルオブジェクトを返します。この際、モデルはインプレースで変更されます。
peft.inject_adapter_in_model
< source >( 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.get_peft_model_state_dict
< source >( 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.prepare_model_for_kbit_training
< source >( modeluse_gradient_checkpointing = Trueactivation_checkpointing_kwargs = Noneauto_clear_cache = Truegradient_checkpointing_kwargs = None )
パラメータ
- model (
transformers.PreTrainedModel) —transformersから読み込まれたモデル - use_gradient_checkpointing (
bool、任意、デフォルトはTrue) — True の場合、バックワードパスが遅くなることを代償に、メモリを節約するために gradient checkpointing を使用します。 - activation_checkpointing_kwargs (
dict、任意、デフォルトはNone) — アクティベーション・チェックポイント機能に渡すキーワード引数です。このメソッドに渡すことができる引数については、torch.utils.checkpoint.checkpointのドキュメントを参照してください。 なお、これはtransformersのバージョン(> 4.34.1)でのみ利用可能です。 - auto_clear_cache (
bool、任意、デフォルトはTrue) — パラメータを fp32 にアップキャストした後に、アクセラレータのキャッシュを空にするかどうか。これにより、キャッシュアロケータが保持しているメモリが解放されます。ホストメモリとアクセラレータメモリを共有するデバイスでは特に役立ちます。このステップをスキップするにはFalseを設定してください。 - gradient_checkpointing_kwargs (
dict、省略可、デフォルトはNone) — アクティベーション・チェックポイント関数に渡すキーワード引数です。この引数は後方互換性のためにのみ存在し、非推奨です。activation_checkpointing_kwargsを使用してください。PEFT v1.2で削除されます。
このメソッドはtransformersモデルでのみ動作することに注意してください。
このメソッドは、学習を実行する前にモデルを準備するためのプロトコル全体をラップします。これには以下が含まれます: 1- layernormをfp32にキャストする 2- 出力埋め込み層が勾配を必要とするようにする 3- lm headのfp32へのアップキャストを追加する 4- 学習中に更新されないようにベースモデルの層をフリーズする
peft.get_layer_status
< source >( model: torch.nn.Module ) → listpeft.peft_model.TunerLayerStatus
モデル内の各アダプタ層のステータスを取得します。
この関数はTunerLayerStatusデータクラスの実例のリストを返します。各実例には、以下の属性が含まれます。
name(str): アダプタ層の名前。例:model.encoder.block.0.layer.0.SelfAttention.qmodule_type(str): アダプタ層のタイプ。例:lora.Linearenabled(bool): アダプタ層が有効かどうか。active_adapters(list[str]): アクティブなアダプターの名前(存在する場合)。例:["default"]merged_adapters(list[str]): マージされたアダプターの名前(存在する場合)。例:["default"]- requires_grad : dict[str, bool | Literal[“irregular”]]
各アダプターモジュールのパラメータのrequires_gradステータス。理想的には、
TrueまたはFalseであるべきです。すべてのパラメータ間でrequires_gradステータスが一致しない場合、値は"irregular"に設定されます。 available_adapters(list[str]): 利用可能なアダプターの名前。例:["default"]devices(dict[str, list[str]]): 指定されたアダプタのパラメータが保存されているデバイス。例:["cuda","xpu"]quantization_backend(strまたはNone): 量子化バックエンドの名前。例:"bnb 4bit"。量子化されていない場合はNone。
peft.get_model_status
< source >( model: torch.nn.Module ) → peft.peft_model.TunerModelStatus
モデルのチューナーのステータスを取得します。
この関数は、TunerModelStatusデータクラスの実例を返します。この実例には、以下の属性が含まれます。
base_model_type(str): ベースモデルのタイプ。例:T5Modeladapter_model_type(str): アダプターモデルの型。例:LoraModelpeft_types(dict[str, str]): アダプター名からアダプタータイプへのマッピングです。例:{"default": "LORA"}。trainable_params(int): モデル内の学習可能なパラメータの数。total_params(int): モデルのパラメータの総数。num_adapter_layers(int): モデル内のアダプタ層の数。enabled(bool,Literal["irregular"]): すべてのアダプタ層が有効かどうかを示します。一部が有効で一部が無効の場合は、"irregular"になります。これは、モデルが不整合な状態にあり、期待通りに動作しない可能性があることを意味します。active_adapters(list[str],Literal["irregular"]): アクティブなアダプターの名前です。アクティブなアダプターがすべてのレイヤー間で一致しない場合、この値は"irregular"となり、モデルが不整合な状態にあり、期待通りに動作しない可能性があることを示します。merged_adapters(list[str],Literal["irregular"]): マージされたアダプターの名前です。マージされたアダプターがすべてのレイヤー間で一致しない場合、"irregular"となり、モデルが不整合な状態にあり、期待通りに動作しない可能性があることを示します。requires_grad(dict[str, bool | Literal["irregular"]]): 指定されたアダプターについて、すべてのアダプター層のrequires_gradがTrueまたはFalseに設定されているかどうかを示します。混在している場合は"irregular"が設定され、モデルが不整合な状態にあり、期待通りに動作しない可能性があることを意味します。available_adapters(list[str]): 利用可能なアダプターの名前。例:["default"]devices(dict[str, list[str]]): 指定されたアダプタのパラメータが保存されているデバイス。例:["cuda","xpu"]quantization_backend(str,None,Literal["irregular"]): 量子化バックエンドの名前です。例:"bnb 4bit"、量子化されていない場合はNoneです。すべてのレイヤーでバックエンドが一致しない場合は、"irregular"になります。