Transformers documentation
モデル
モデル
ベースクラス PreTrainedModel は、ローカルファイルまたはディレクトリから、あるいはライブラリが提供する事前学習モデルの設定(HuggingFace の Hub からダウンロード)からモデルを読み込み/保存するための共通メソッドを実装しています。
PreTrainedModel は、すべてのモデルで共通の以下のいくつかのメソッドを実装しています。
- 語彙に新しいトークンが追加された場合、入力トークン埋め込みをリサイズします
各モデルに共通するその他のメソッドは、ModuleUtilsMixinとGenerationMixinで定義されています。
PreTrainedModel
すべてのモデルの基底クラス。
PreTrainedModel は、モデルの構成の保存を管理し、モデルの読み込み、ダウンロード、保存の処理を行うほか、すべてのモデルに共通するいくつかのメソッドを提供します。
- 入力埋め込みをリサイズする
クラス属性(派生クラスによって上書きされます):
- config_class (PreTrainedConfig) — このモデルアーキテクチャの構成クラスとして使用する PreTrainedConfig のサブクラス
- base_model_prefix (
str) — 同一アーキテクチャの派生クラスにおいて、ベースモデルの上にモジュールを追加する場合、ベースモデルに関連付けられた属性を示す文字列。 - main_input_name (
str) — モデルの主な入力の名前(NLPモデルでは通常input_ids、ビジョンモデルではpixel_values、音声モデルではinput_values)。 - can_record_outputs (dict):
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
パラメータ
- repo_id (
str) — モデルをプッシュするリポジトリの名前です。特定の組織にプッシュする場合は、組織名を含む必要があります。 - commit_message (
str, 省略可) — プッシュ時にコミットするメッセージ。デフォルトは"Upload model"です。 - commit_description (
str, 省略可) — 作成されるコミットの説明 - private (
bool、省略可) — リポジトリを非公開にするかどうか。None(デフォルト)の場合、組織のデフォルトが非公開でない限り、リポジトリは公開になります。リポジトリが既に存在する場合、この値は無視されます。 - token (
boolまたはstr、省略可) — リモートファイルの HTTP ベアラ認証に使用するトークン。True(デフォルト)の場合、hf auth loginを実行した際に生成されたトークン(~/.huggingfaceに保存)が使用されます。 - revision (
str、省略可) — アップロードしたファイルをプッシュするブランチ。 - create_pr (
bool、省略可、デフォルトはFalse) — アップロードしたファイルを含む PR を作成するか、直接コミットするかどうかを指定します。 - max_shard_size (
intまたはstr、省略可能、デフォルトは"50GB") — モデルにのみ適用されます。シャード化される前のチェックポイントの最大サイズです。シャード化されたチェックポイントは、それぞれがこのサイズ未満になります。文字列で指定する場合は、数字の後に単位("5MB"など)を続ける必要があります。 - tags (
list[str]、省略可) — Hub にプッシュするタグのリストです。
モデルファイルを🤗 Model Hubにアップロードします。
例:
from transformers import AutoModel
model = AutoModel.from_pretrained("google-bert/bert-base-cased")
# Push the model to your namespace with the name "my-finetuned-bert".
model.push_to_hub("my-finetuned-bert")
# Push the model to an organization with the name "my-finetuned-bert".
model.push_to_hub("huggingface/my-finetuned-bert")現在のモデルのアクティベーションチェックポイントを無効にします。
activation_checkpointing_enable
< source >( activation_checkpointing_kwargs = Noneevery_n_layers: int = 1offload: bool = False )
パラメータ
- every_n_layers (
int、省略可、デフォルト値は 1)—every_n_layers層ごとにデコーダー層のチェックポイントのみを保存し、その他の層はアクティベーションを保持したままにします。1を指定するとすべての層でチェックポイントが行われ、これは通常の一括処理(オールオアナッシング)の動作です。より大きな値を指定すると、メモリを速度と引き換えに節約できます。フルチェックポイントによって解放されるメモリが未使用のままになる場合は、このトレードオフが有効です。 - offload (
bool、任意、デフォルトはFalse) — 再計算用に保存されるアクティベーションを、アクセラレーター上ではなく、ピン留めされたホストメモリに保持します。これにより、layers x sequence x hiddenバイトのデバイスメモリが解放されます。長いシーケンス長ではこれが支配的な要因となりますが、フォワードパスでデバイスからホストへのコピー、バックワードパスでホストからデバイスへのコピーが発生します。これらのコピーはどちらもコンピュートストリーム上で実行されるため、ステップの速度が低下します。 - activation_checkpointing_kwargs (dict, 任意) —
torch.utils.checkpoint.checkpoint関数に渡す追加のキーワード引数。
現在のモデルに対してアクティベーション・チェックポイントを有効にします。
モジュールの __call__ メソッドを forward の代わりに渡すのは、__call__ がモジュールのすべてのフックをアタッチするからです。https://discuss.pytorch.org/t/any-different-between-model-input-and-model-forward-input/3690/2
add_model_tags
< source >( tags: list[str] | str )
Hugging Face Hub にプッシュされるモデルにカスタムタグを追加します。モデルに既存のタグがある場合は、それらを上書きしません。
.generate()、またはそれに類似したインターフェースを持つ GenerationMixin を介してシーケンスを生成できるかどうかを返します。
内部では、この関数が True を返すクラスでは、生成に固有の変更がトリガーされます。
例えば、モデルインスタンスには設定済みの generation_config 属性が設定されます。
ドット区切りパス(例: torch.float32)のモック値: 属性アクセスのチェーン、呼び出しはパススルーデコレータとして動作し、repr はドット区切りパスを返し、ベースクラスとして使用するとプレーンな type ベースに置き換えられます(PEP 560 の __mro_entries__)。これにより、実際のサブクラスは通常のメタクラスを保持し、inspect.signature はモックの __init__ ではなく、実際の __init__ を読み取ります。
量子化手法によって量子化されている場合、デクォンタイズをサポートしている場合は、モデルをデクォンタイズする可能性があります。
_require_grads_hookを削除します。
入力埋め込みの勾配を有効にします。モデルの重みを固定したまま、アダプター重みのファインチューニングを行う場合に便利です。
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike | None*model_argsconfig: transformers.configuration_utils.PreTrainedConfig | str | os.PathLike | None = Nonecache_dir: str | os.PathLike | None = Noneignore_mismatched_sizes: bool = Falseforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'use_safetensors: bool | None = Noneweights_only: bool = Truefusion_config: dict[str, bool | dict[str, typing.Any]] | None = Nonedisable_mmap: bool | None = None**kwargs )
パラメータ
- pretrained_model_name_or_path (
strまたはos.PathLike, 省略可) — 以下のいずれかです:- huggingface.co のモデルリポジトリにホストされている事前学習済みモデルの model id を示す文字列。
- ディレクトリへのパス。このディレクトリには、save_pretrained()を使用して保存されたモデルの重みが含まれます。例:
./my_model_directory/。save_pretrained(..., distributed_checkpoint=True)で保存されたディレクトリは検出され、分散チェックポイント(DCP)によって読み込まれます。これにより、モデルの現在のメッシュと配置が保持されます。この機能にはtorch>=2.7が必要であり、厳密な読み込みが行われます。つまり、すべてのモデルキーがチェックポイントに存在する必要があります。 Noneは、設定と状態辞書の両方を提供する場合(それぞれキーワード引数configとstate_dictを使用する場合)です。
- model_args (位置引数のシーケンス、任意) —
残りのすべての位置引数は、基盤となるモデルの
__init__メソッドに渡されます。 - config (
Union[PreTrainedConfig, str, os.PathLike], 省略可) — 以下のいずれかです:- PreTrainedConfig から派生したクラスのインスタンス
- from_pretrained()の引数として有効な文字列またはパス
自動読み込みされる設定の代わりに使用するモデルの設定。設定は、次の場合に自動読み込みされます:
- モデルは、ライブラリによって提供されるモデルです(事前学習済みモデルのmodel id文字列で読み込まれます)。
- モデルはsave_pretrained()を使用して保存されており、保存ディレクトリを指定することで再読み込みされます。
- モデルは、ローカルディレクトリを
pretrained_model_name_or_pathとして指定して読み込まれ、そのディレクトリ内にconfig.jsonという名前の設定JSONファイルが見つかった場合です。
- state_dict (
dict[str, torch.Tensor], 省略可) — 保存された重みファイルから読み込まれる state dictionary の代わりに使用する state dictionary。事前学習済みの設定からモデルを作成しつつ、独自の重みをロードしたい場合にこのオプションを使用できます。ただし、この場合は save_pretrained() と from_pretrained() を使用した方がよりシンプルな方法ではないかを確認することをお勧めします。このオプションは、事前学習済みの設定からモデルを作成しつつ、独自の重みをロードしたい場合に使用できます。ただし、この場合は、save_pretrained()とfrom_pretrained()を使用する方がよりシンプルな方法ではないかを確認することをお勧めします。
- cache_dir (
Union[str, os.PathLike], 任意) — 標準のキャッシュを使用しない場合、ダウンロードした事前学習済みモデルの構成をキャッシュするディレクトリのパス。 - ignore_mismatched_sizes (
bool、任意、デフォルトはFalse) — チェックポイントの重みの一部がモデルの重みとサイズが異なる場合(例えば、3ラベルのチェックポイントから10ラベルのモデルをインスタンス化する場合など)に、エラーを発生させるかどうかを指定します。 - force_download (
bool、任意、デフォルトはFalse) — モデルの重みと設定ファイルを(再)ダウンロードを強制するかどうか。キャッシュされたバージョンが存在する場合でも、それを上書きします。 - proxies (
dict[str, str]、省略可) — プロトコルまたはエンドポイントごとに使用するプロキシサーバーの辞書です。例:{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。各リクエストでこれらのプロキシが使用されます。 - output_loading_info(
bool, optional, デフォルトはFalse) — 欠落キー、予期しないキー、エラーメッセージを含む辞書を返すかどうかを指定します。 - local_files_only(
bool, 任意、デフォルトはFalse) — ローカルファイルのみを対象とするかどうか(モデルのダウンロードを試みないかどうか)。 - token (
strまたはbool、省略可) — リモートファイルの HTTP ベアラ認証に使用するトークンです。Trueの場合、または指定されていない場合は、hf auth loginを実行した際に生成されたトークン(~/.huggingfaceに保存)が使用されます。 - revision (
str, 省略可, デフォルトは"main") — 使用する特定のモデルのバージョンです。huggingface.co ではモデルやその他の成果物を保存するために git ベースのシステムを使用しているため、ブランチ名、タグ名、またはコミット ID を指定できます。したがって、revisionには git で許可される任意の識別子を指定できます。Hub で作成した pull request をテストするには、
revision="refs/pr/<pr_number>"を渡すことができます。 - attn_implementation (
str, 省略可) — モデルで使用されるアテンションの実装(関連する場合)。"eager"(アテンションの手動実装)"sdpa"(F.scaled_dot_product_attentionを使用)"flash_attention_2"(Dao-AILab/flash-attentionを使用)"flash_attention_3"(Dao-AILab/flash-attention/hopperを使用)"flash_attention_4"(Dao-AILab/flash-attention/flash_attn/cuteを使用)。 デフォルトでは、利用可能な場合は SDPA が使用されます。利用できない場合のデフォルトは、手動の"eager"実装です。
以下の形式の HF カーネル参照を受け入れます:
/ [@ ][: ] と は、"/"および":"以外の任意の文字列です。 - “@
”は任意です(ブランチ、タグ、またはコミット)。例: “@main”、“@v1.2.0”、“@abc123”。 - ”:
” は省略可能で、カーネルリポジトリ内の関数を選択します。 - 両方のオプションは、@revisionが先、:kernel_nameが後という順序で同時に出現する場合があります。
- 先頭にある「
|」プレフィックス(例: “flash|…”)を意図的に許可しています。これは、コードが読み込み前にこれを除去するためです。ここでは、文字クラス内で「|」は除外されていません。
一致する例: “org/model” “org/model@main” “org/model:custom_kernel” “org/model@v1.2.3:custom_kernel”
- experts_implementation (
str, 省略可) — モデルで使用するエキスパートの実装(関連する場合)。以下のいずれかを指定できます:"eager"(エキスパート行列積の逐次実装)。"batched_mm"(torch.bmmを使用)。"grouped_mm"(torch.nn.functional.grouped_mmを使用)。
デフォルトでは、モデルがサポートしている場合、
"grouped_mm"が使用されます。サポートされていない場合のデフォルトは、手動の"eager"実装です。
大規模モデル推論のパラメータ
- dtype (
strまたはtorch.dtype, 省略可能, デフォルトは"auto") — デフォルトのtorch_dtypeをオーバーライドし、特定のdtype. のオプションは以下の通りです。-
torch.float16またはtorch.bfloat16またはtorch.float: 指定されたdtypeで読み込みます。モデルにconfig.dtypeが存在する場合でも無視します。指定されない場合- モデルは
torch.float(fp32)で読み込まれます。
- モデルは
-
"auto"- モデルのconfig.jsonファイル内のdtypeまたはtorch_dtypeエントリが使用されるよう試行されます。このエントリが見つからない場合は、チェックポイント内の最初の浮動小数点型の重みのdtypeを確認し、それをdtypeとして使用します。これにより、モデルはトレーニング終了時に保存されたdtypeで読み込まれます。ただし、これはモデルがどのようにトレーニングされたかを示す指標としては使用できません。半精度の dtype でトレーニングされたものの、fp32 で保存されている場合があるためです。 -
torch.dtypeとして有効な文字列。例えば、“float32” はモデルをtorch.float32で読み込み、“float16” はtorch.float16で読み込む、などです。
一部のモデルでは、学習時に使用された
dtypeが不明な場合があります。その場合は、モデルの論文を確認するか、著者に連絡して、モデルカードにこの情報を追加し、ハブ上のconfig.jsonにdtypeまたはtorch_dtypeエントリを挿入してもらうことを検討してください。 -
- device_map (
strまたはdict[str, Union[int, str, torch.device]]またはintまたはtorch.device, 省略可) — 各サブモジュールをどのデバイスに配置するかを指定するマップです。パラメータやバッファの名前ごとに細かく指定する必要はなく、特定のモジュール名が指定された場合、そのモジュールのすべてのサブモジュールが同じデバイスに送信されます。デバイスのみを渡す場合(e.g.,"cpu","cuda:1","mps", または、モデルが割り当てられる GPU の ordinal rank、例えば1) )、デバイスマップはモデル全体をそのデバイスにマッピングします。device_map = 0を渡すと、モデル全体を GPU 0 に配置することを意味します。Accelerate が最も最適化された device_map を自動的に計算するには、device_map="auto" を設定してください。各オプションの詳細については、デバイスマップの設計を参照してください。Accelerate が最も最適化された
device_mapを自動的に計算するようにするには、device_map="auto"を設定します。各オプションの詳細については、デバイスマップの設計を参照してください。 - max_memory (
Dict, 任意) —device_mapを使用する場合、デバイス識別子から最大メモリ量への辞書です。未設定の場合、各 GPU の利用可能な最大メモリと、利用可能な CPU RAM がデフォルトとして使用されます。 - distributed_config (DistributedConfig、任意) —
テンソル並列または FSDP2 を用いたネイティブな分散ロードの設定です。
DistributedConfig(tp_size=N)を渡すことでモデルに定義済みのテンソル並列プランを使用し、DistributedConfig(tp_plan=...)を渡すことでテンソル並列プランを指定し、DistributedConfig(fsdp_size=N)を渡すことで FSDP2 を使用します。tp_size > 1またはfsdp_size > 1の場合、torchrunと初期化済みのプロセスグループが必要です。device_mapとは排他的です。 - device_mesh (
torch.distributed.DeviceMesh、任意) — torch のデバイスメッシュです。指定しない場合、デフォルトでワールドサイズが使用されます。現時点ではテンソル並列にのみ使用されます。 指定する場合、次元が 1 以上の場合には、"tp"という名前の次元を含む必要があります。この次元がテンソル並列に使用されます。 - offload_folder (
strまたはos.PathLike、省略可) —device_mapに"disk"という値が含まれている場合、重みをオフロードするフォルダを指定します。 - offload_buffers (
bool、任意) — モデルパラメータのバッファをオフロードするかどうかを指定します。 - quantization_config (
Union[QuantizationConfigMixin,Dict], 任意) — 量子化の設定パラメータの辞書、または量子化用の QuantizationConfigMixin オブジェクト(例: bitsandbytes、gptq)。 - subfolder (
str、任意、デフォルトは"") — huggingface.co 上のモデルリポジトリのサブフォルダ内に該当するファイルが配置されている場合、ここにフォルダ名を指定できます。 - variant (
str, 任意) — 指定した場合、variantファイル名から重みをロードします。例 pytorch_model..bin. - use_safetensors (
bool、任意、デフォルトはNone) —safetensorsチェックポイントを使用するかどうか。デフォルトはNoneです。指定されず、かつsafetensorsがインストールされていない場合、Falseに設定されます。 - weights_only (
bool、省略可能、デフォルトはTrue) — unpickler がテンソル、プリミティブ型、辞書、および torch.serialization.add_safe_globals() 経由で追加された型のみを読み込むように制限されるかどうかを示します。 False に設定すると、ラッパーのテンソルサブクラスの重みを読み込むことができます。 - disable_mmap (
bool, 省略可) — safetensors チェックポイントを読み込む際にメモリマッピングを無効にするかどうか。None(デフォルト)の場合、チェックポイントがhf-mountFUSE ファイルシステム(HF Spaces/Endpoints で使用)上に存在すると、mmap と並列ページフォールトがデッドロックを引き起こし得るため、自動的にTrueに設定されます。Trueの場合、ファイルを完全にメモリへ読み込み、safetensors.torch.loadで解析します。Falseの場合、常にデフォルトのメモリマップドローダーが使用されます。 - fusion_config (
dict[str, bool | dict[str, Any]], 省略可) — モデルのインスタンス化の前に適用される任意のフュージョン設定です。各キーはフュージョンファミリーを有効化し、その値はデフォルトのオプションでそのフュージョンを有効にするTrueまたは、ファミリー固有のオプションの辞書のいずれかです。例えば、{"patch_embeddings": True}はパッチ埋め込みのフュージョンを有効にします。これは出力がわずかに変化し得るため、推論の最適化としてのみ使用すべきです。省略した場合、from_pretrained()は利用可能な場合にconfig.fusion_configにフォールバックします。詳細については、docs/source/en/fusion_mapping.mdのフュージョンマッピングガイドを参照してください。 - key_mapping (`dict[str, str], optional) — Hub 上で Transformers アーキテクチャと互換性のあるモデルを使用する場合、重み名称の潜在的なマッピングです。ただし、適切に変換されていない場合に限ります。
- kwargs (残りのキーワード引数の辞書、 省略可) —
設定オブジェクト(読み込み後)を更新し、モデルを初期化するために使用できます(例:
output_attentions=True). が提供されるかどうかによって動作が異なります:configconfig で設定が提供されている場合、**kwargs は基盤となるモデルの __init__ メソッドに直接渡されます(設定への関連する更新はすべて完了しているものと仮定します)。設定が提供されていない場合、kwargs はまず設定クラスの初期化関数(from_pretrained())に渡されます。kwargs の各キーが設定属性に対応している場合、その属性は指定された kwargs の値で上書きされます。設定属性に対応しない残りのキーは、基盤となるモデルの __init__ 関数に渡されます。configで設定が提供されている場合、**kwargsは、基盤となるモデルの__init__メソッドに直接渡されます(設定への関連するすべての更新がすでに完了しているものと仮定しています)。- 設定が提供されない場合、
kwargsはまず設定クラスの初期化関数 (from_pretrained()) に渡されます。kwargsの各キーのうち、設定属性に対応するものは、指定されたkwargsの値でその属性を上書きするために使用されます。設定属性に対応しない残りのキーは、基盤となるモデルの__init__関数に渡されます。
事前学習済みのモデル設定から、事前学習済みの PyTorch モデルをインスタンス化します。
モデルはデフォルトでmodel.eval()によって評価モードに設定されています(Dropoutモジュールは無効化されます)。モデルを学習するには、まずmodel.train()でトレーニングモードに戻す必要があります。
The warning Weights from XXX not initialized from pretrained model means that the weights of XXX do not come pretrained with the rest of the model. It is up to you to train those weights with a downstream fine-tuning task.
警告 Weights from XXX not used in YYY は、レイヤー XXX が YYY によって使用されていないことを示しており、そのためこれらの重みは破棄されます。
ファイアウォールが設定された環境でこのメソッドを使用するには、特別な“offline-mode”を有効にしてください。
例:
>>> from transformers import BertConfig, BertModel
>>> # Download model and configuration from huggingface.co and cache.
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased")
>>> # Model was saved using *save_pretrained('./test/saved_model/')* (for example purposes, not runnable).
>>> model = BertModel.from_pretrained("./test/saved_model/")
>>> # Update configuration during loading.
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased", output_attentions=True)
>>> assert model.config.output_attentions == Trueget_compiled_call
< source >( compile_config: transformers.generation.configuration_utils.CompileConfig | None )
torch.compile された self.__call__ のバージョンを返します。これは、推論時にコンパイル済み/未コンパイルの forward を動的に切り替える場合に有用です。特に、prefill(新しい形状でグラフを再計算することを避けるため、コンパイル済みバージョンを使用したくない)と反復デコーディング(静的形状でコンパイル済みバージョンの高速化効果を享受したい)の切り替えに役立ちます。
decoderモジュールのベストエフォートによる検索。
試行の順序(現在の利用の約85%をカバー):
self.decoder/self.language_model/self.text_modelself.base_model(多くのラッパーはデコーダーをここに格納します)self.base_model.get_decoder()(ネストされたラッパー)- fallback: 個別のルールが必要な少数の特殊なモデルに対して例外を送出する
encoderモジュールのベストエフォートによる検索。modality引数が指定された場合、マルチモーダルモデルにおいてモダリティ固有のエンコーダー(例:“image_encoder”)を検索します。デフォルトでは、モデルにテキストエンコーダーが存在する場合はそれを返し、存在しない場合はselfを返します。
modalityの値として指定できるのは、“image”、“video”、“audio”です。
現在のモデルの拡張されたtied weightキー(モジュールや正規表現パターンを含む場合)を返します。all_submodels=Trueの場合、すべてのサブモデルに対して再帰的に処理されます(つまり、すべてのサブモデルのconfig値を再チェックします)。
ほとんどのモデルでは、埋め込みの結合のみを必要とするため、モデルには _tied_weights_keys = {"lm_head.weight": "model.embed_tokens.weight"} という内部プロパティがあります。この場合、マッピングはすでに「展開済み」、つまり完全なパラメータをすでに含んでおり、この関数は単にそのプロパティのコピーを返します。より複雑なパターン、例えば DFineForObjectDetection の場合、以下の属性があります。
_tied_weights_keys = {
r"bbox_embed.(?![0])\d+": "bbox_embed.0",
r"class_embed.(?![0])\d+": "class_embed.0",
"model.decoder.class_embed": "class_embed",
"model.decoder.bbox_embed": "bbox_embed",
}以下を返します:
{
'bbox_embed.1.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'bbox_embed.1.layers.0.weight': 'bbox_embed.0.layers.0.weight',
'bbox_embed.1.layers.1.bias': 'bbox_embed.0.layers.1.bias',
'bbox_embed.1.layers.1.weight': 'bbox_embed.0.layers.1.weight',
'bbox_embed.1.layers.2.bias': 'bbox_embed.0.layers.2.bias',
'bbox_embed.1.layers.2.weight': 'bbox_embed.0.layers.2.weight',
'bbox_embed.2.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'bbox_embed.2.layers.0.weight': 'bbox_embed.0.layers.0.weight',
...
'class_embed.1.bias': 'class_embed.0.bias',
'class_embed.1.weight': 'class_embed.0.weight',
'class_embed.2.bias': 'class_embed.0.bias',
'class_embed.2.weight': 'class_embed.0.weight',
...
'model.decoder.class_embed.0.bias': 'class_embed.0.bias',
'model.decoder.class_embed.0.weight': 'class_embed.0.weight',
'model.decoder.class_embed.1.bias': 'class_embed.0.bias',
'model.decoder.class_embed.1.weight': 'class_embed.0.weight',
...
'model.decoder.bbox_embed.0.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'model.decoder.bbox_embed.0.layers.0.weight': 'bbox_embed.0.layers.0.weight',
'model.decoder.bbox_embed.0.layers.1.bias': 'bbox_embed.0.layers.1.bias',
'model.decoder.bbox_embed.0.layers.1.weight': 'bbox_embed.0.layers.1.weight',
...
}このモデルおよびそのサブモデルのexperts実装を、set_experts_implementationが受け付ける形式のdictとして返します(このモデルには""、各サブconfigには1エントリずつ)。これはset_experts_implementationの逆操作であり、例えば現在の実装のスナップショットを撮って後で復元する場合に使用します。
get_memory_footprint
< source >( return_buffers = True )
パラメータ
- return_buffers (
bool、省略可能、デフォルトはTrue) — メモリフットプリントの計算において、バッファテンソルのサイズを返すかどうかを指定します。バッファとは、勾配を必要とせず、パラメータとして登録されていないテンソルです。例えば、バッチノルム層の平均値や標準偏差などが該当します。詳細は https://discuss.pytorch.org/t/what-pytorch-means-by-buffers/120266/2 を参照してください。
モデルのメモリフットプリントを取得します。現在のモデルのメモリフットプリントをバイト単位で返します。 現在のモデルのメモリフットプリントをベンチマークし、テストを設計するのに便利です。PyTorch のディスカッションから着想を得た解決策です: https://discuss.pytorch.org/t/gpu-memory-that-model-uses/56822/2
target で指定されたパラメータまたはバッファが存在する場合はそれを返し、存在しない場合はエラーをスローします。これは get_parameter() と get_buffer() を1つの便利な関数にまとめたものです。ターゲットが _extra_state 属性である場合、モジュールによって提供される追加の状態を返します。なお、target がモデルのリーフである場合のみ動作することに注意してください。
activation_checkpointing_disable()の非推奨エイリアスです。v6で削除されます。
activation_checkpointing_enable()の非推奨エイリアスです。v6で削除されます。
必要に応じて、重みを初期化して結合します。カスタムのPreTrainedModelを使用する場合は、_init_weights内で初期化ロジックを実装する必要があります。
これはself.apply(self._initialize_weights)を呼び出すことと同等ですが、複合モデルを正しく処理します。
この関数は、モジュールグラフに沿って再帰を進めるにつれて、各モジュールに対して正しいinit_weights関数を動的にディスパッチします。任意の数のサブモデルを処理できます。これがない場合、すべての複合モデルは、最外層の_init_weights内で明示的にすべてのサブモデルに対して2回目の再帰を行う必要があり、非常にエラーが発生しやすく非効率になります。
現在のモデルがカスタムコードかどうかを返します。つまり、ハブから読み込まれたコード、またはユーザー固有のモジュール/セッションで定義されたコードのいずれかです。
現在のモデルがカスタムコード(つまり、ハブから読み込まれたコード)であるか、register_for_auto_class によって登録されたクラスであるかを返します。
後で結合(上書き)されるため、そのパラメータを初期化することを避けるために、結合対象のパラメータに_is_hf_initializedフラグを追加します。
ほとんどのembeddingが結合されており、それらは巨大なパラメータ(語彙数はしばしば256k)であるため、これらは非常に重要です。
それらに対して初期化を実行するのは非常にコストが高いためです。
named_buffersと同様に、非永続的なバッファのみを生成します。永続的かどうかを判断するのが必ずしも直感的ではないため、便利です。
各 Transformer モデルの初期化の最後に実行されるメソッドです。モデルのモジュールが正しく初期化された後に実行する必要があるコード(重みの初期化など)を実行するために使用されます。また、複合モデル(つまり、トップレベルのモデルが子モデルからこれらのプロパティを知る必要がある場合)において、並列化計画、tied_weights_keys、_keep_in_fp32_modules などのすべての静的プロパティを正しく取得するためにも使用されます。
register_for_auto_class
< source >( auto_class = 'AutoModel' )
このクラスを指定された auto クラスに登録します。これは、ライブラリ内のモデルはすでに auto クラスにマッピングされているため、カスタムモデルでのみ使用すべきです。
resize_token_embeddings
< source >( new_num_tokens: int | None = Nonepad_to_multiple_of: int | None = Nonemean_resizing: bool = True ) → torch.nn.Embedding
パラメータ
- new_num_tokens (
int, 省略可) — 埋め込み行列の新しいトークン数です。サイズを大きくすると、末尾に新しく初期化されたベクトルが追加されます。サイズを小さくすると、末尾からベクトルが削除されます。指定されなかった場合、またはNoneの場合、何もしずにモデルのtorch.nn.Embeddingモジュールへのポインタをそのまま返します。 - pad_to_multiple_of (
int, 省略可能) — 設定した場合、埋め込み行列を指定された値の倍数にパディングします。new_num_tokensがNoneに設定されている場合、埋め込みをpad_to_multiple_of.これは、計算能力が
>= 7.5(Volta)のNVIDIAハードウェアでTensor Coresの使用を有効にするために、また、シーケンス長が128の倍数であることで恩恵を受けるTPUにおいて特に有用です。この詳細や、リサイズに適切な値の選択に関するヘルプについては、このガイドを参照してください: https://docs.nvidia.com/deeplearning/performance/dl-performance-matrix-multiplication/index.html#requirements-tc - mean_resizing (
bool) — 旧埋め込みの平均と共分散を持つ多変量正規分布から追加された埋め込みを初期化するか、平均がゼロで標準偏差がconfig.initializer_range.mean_resizingをTrueに設定することは、因果言語モデルの埋め込みサイズを拡大する際に有用です。この設定により、新しい埋め込みを元の埋め込みの平均値で初期化することで、新しい埋め込みを追加する前後の次のトークン確率間のKLダイバージェンスが低減されるため、生成されるトークンの確率に影響を与えません。詳細については、この記事を参照してください: https://nlp.stanford.edu/~johnhew/vocab-expansion.html
戻り値
torch.nn.Embedding
モデルの入力トークン Embeddings Module へのポインタ。
new_num_tokens != config.vocab_size の場合、モデルの入力トークン埋め込み行列をリサイズします。
モデルクラスにtie_weights()メソッドがある場合、その後で重みの埋め込みを結合します。
save_pretrained
< source >( save_directory: str | os.PathLikeis_main_process: bool = Truestate_dict: dict | None = Nonepush_to_hub: bool = Falsemax_shard_size: int | str = '50GB'variant: str | None = Nonetoken: str | bool | None = Nonesave_peft_format: bool = Truesave_original_format: bool = Truedistributed_checkpoint: bool = False**kwargs )
パラメータ
- save_directory (
strまたはos.PathLike) — 保存先ディレクトリ。存在しない場合は作成されます。 - is_main_process (
bool、省略可、デフォルトはTrue) — この関数を呼び出しているプロセスがメインプロセスかどうかを示します。TPU などの分散学習環境では、すべてのプロセスでこの関数を呼び出す必要があるため、この引数が役立ちます。この場合、競合状態を避けるために、メインプロセスでのみis_main_process=Trueを設定してください。 - state_dict (
torch.Tensorのネストされた辞書) — 保存するモデルの状態辞書です。デフォルトではself.state_dict()が使用されますが、モデルの一部のみを保存する場合や、モデルの状態辞書を復元する際に特別な注意が必要になる場合(モデル並列化を使用している場合など)に使用できます。 - push_to_hub (
bool、省略可、デフォルトはFalse) — モデルを保存した後、Hugging Face モデルハブにプッシュするかどうかを指定します。プッシュ先のリポジトリはrepo_idで指定できます(指定しない場合、save_directoryの名前があなたのネームスペース内でデフォルトとして使用されます)。 - max_shard_size (
intまたはstr, 省略可, デフォルトは"50GB") — シャード化されるチェックポイントの最大サイズです。シャード化されたチェックポイントのサイズは、このサイズ未満になります。文字列で指定する場合は、数字の後に単位(例:"5MB").モデルの単一の重みが
max_shard_sizeより大きい場合、その重みはmax_shard_sizeを超える独自のチェックポイントシャードに格納されます。 - variant (
str, 省略可) — 指定した場合、重みは model..safetensors の形式で保存されます。 - token (
strまたはbool、省略可) — リモートファイルの HTTP ベアラ認証に使用するトークンです。Trueの場合、または指定されていない場合は、hf auth loginを実行した際に生成されたトークン(~/.huggingfaceに保存)が使用されます。 - save_peft_format (
bool、省略可、デフォルトはTrue) — PEFT ライブラリとの後方互換性のため、モデルにアダプター重みがアタッチされている場合、アダプターの state dict のすべてのキーにbase_model.modelをプレフィックスとして付与する必要があります。上級ユーザーは、save_peft_formatをFalseに設定することで、この動作を無効にできます。 - save_original_format (
bool、省略可、デフォルトはTrue) —transformersの以前のバージョンとの後方互換性のために、逆マッピング付きでチェックポイントを保存できます。モデルが None のレガシーチェックポイントから読み込まれた場合でも、逆マッピングは存在する必要があります。 - distributed_checkpoint (
bool、任意、デフォルトはFalse) — FSDP または TP によるシャード化されたモデルを保存する際に、重みを CPU に集約する代わりに、分散チェックポイント (DCP) として safetensors を書き出します。すべてのランクがこのメソッドを呼び出す必要があります。Falseの場合、書き出し前にgather_full_state_dictを介してランク 0 で重みを CPU に集約します。 トレーニングの保存と再開を目的としており、save_pretrainedの全機能を利用したい場合はFalseに設定してください。push_to_hub=Trueの場合、ランク 0 がチェックポイントをconsolidated/サブディレクトリに集約し、そのディレクトリをアップロードします。torch>=2.7が必要です。 - kwargs (
dict[str, Any]、省略可) — push_to_hub() メソッドに渡される追加のキーワード引数。
モデルとその設定ファイルをディレクトリに保存し、from_pretrained()クラスメソッドを使って再読み込みできるようにします。
set_attn_implementation
< source >( attn_implementation: str | dictallow_all_kernels: bool = False )
パラメータ
- attn_implementation (
strまたはdict) — このモデルに設定するアテンション実装です。strの場合は、関連するすべてのサブモデルにディスパッチされます。dictの場合は、キーが sub_configs の名前となり、各サブモデルが対応する値をディスパッチします(自身およびその中にネストされたすべてのサブモデルに対して)。値自体も同じ形式のdictであり、そのサブモデルの sub_configs をターゲットにできます(ネストされたattn_implementationdict を用いて config を初期化する場合と同様です)。 - allow_all_kernels (
bool, 任意) —attn_implementationがkernels-communityハブリポジトリ外のカスタムカーネルである場合、検証されていないハブリポジトリからカーネルを読み込むかどうかを指定します。
このモデルのattn_implementationに要求された値を設定します。
対称的なセッター。get_decoderで使用される参照ロジックを反映しています。
対称的なセッター。get_encoderで使用される参照ロジックを反映しています。
set_experts_implementation
< source >( experts_implementation: str | dict )
このモデルに、要求されたexperts_implementationを設定します。
set_use_kernels
< source >( use_kernelskernel_config: transformers.utils.kernel_config.KernelConfig | None = Nonemode: Mode | None = None )
モデルの一部のレイヤーをカーネル化するためにkernelsライブラリを使用するかどうかを設定します。
モデルの重みを結合します。recompute_mapping=False(内部から呼び出される場合のデフォルト)の場合、結合対象のパラメータの {target: source} 対応関係を含む model.all_tied_weights_keys 属性に依存します。
recompute_mapping=True の場合、結合が必要なパラメータを決定するために、すべての内部サブモデルとその設定を再確認します。これは、__init__ や from_pretrained の外で model.tie_weights() が単独で呼び出される場合のデフォルトであり、設定の値がどこかで変更された場合に備えています。
from_pretrained の実行中、タイイングは対称的である点にご注意ください。マッピングが「tie target -> source」と指定されている場合でも、source がチェックポイントに存在せずtarget が存在する場合は、実際に存在するパラメータにすべてをタイイングできるように、source と target を入れ替えます。
ドット区切りパス(例: torch.float32)のモック値: 属性アクセスのチェーン、呼び出しはパススルーデコレータとして動作し、repr はドット区切りパスを返し、ベースクラスとして使用するとプレーンな type ベースに置き換えられます(PEP 560 の __mro_entries__)。これにより、実際のサブクラスは通常のメタクラスを保持し、inspect.signature はモックの __init__ ではなく、実際の __init__ を読み取ります。
入力に input_ids が含まれており、パディングが含まれているように見えるが、アテンションマスクが指定されていない場合、一度だけ警告を表示します。
カスタムモデルには、superfast init が特定のモデルに適用可能かどうかを決定する _supports_assign_param_buffer も含める必要があります。このプロパティが必要かどうかの判断材料として、test_save_and_load_from_pretrained が失敗する場合があります。その場合は、これを False に設定してください。
ModuleUtilsMixin
torch.nn.Modulesでミックスインとして使用するいくつかのユーティリティ。
num_parameters
< source >( only_trainable: bool = Falseexclude_embeddings: bool = False ) → int
モジュール内のパラメータ数(オプションで、学習可能または非埋め込み)を取得します。
Hub へのプッシュ
モデルやトークナイザーをハブにプッシュする機能を含む Mixin です。
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
パラメータ
- repo_id (
str) — {object}をプッシュするリポジトリの名前です。特定の組織にプッシュする場合は、組織名を含む必要があります。 - commit_message (
str, 省略可) — プッシュ時にコミットするメッセージ。デフォルトは"Upload {object}"です。 - commit_description (
str, 省略可) — 作成されるコミットの説明 - private (
bool、省略可) — リポジトリを非公開にするかどうか。None(デフォルト)の場合、組織のデフォルトが非公開でない限り、リポジトリは公開になります。リポジトリが既に存在する場合、この値は無視されます。 - token (
boolまたはstr、省略可) — リモートファイルの HTTP ベアラ認証に使用するトークン。True(デフォルト)の場合、hf auth loginを実行した際に生成されたトークン(~/.huggingfaceに保存)が使用されます。 - revision (
str、省略可) — アップロードしたファイルをプッシュするブランチ。 - create_pr (
bool、省略可、デフォルトはFalse) — アップロードしたファイルを含む PR を作成するか、直接コミットするかどうかを指定します。 - max_shard_size (
intまたはstr、省略可能、デフォルトは"50GB") — モデルにのみ適用されます。シャード化される前のチェックポイントの最大サイズです。シャード化されたチェックポイントは、それぞれがこのサイズ未満になります。文字列で指定する場合は、数字の後に単位("5MB"など)を続ける必要があります。 - tags (
list[str]、省略可) — Hub にプッシュするタグのリストです。
{object_files} を 🤗 Model Hub にアップロードします。
例:
from transformers import {object_class}
{object} = {object_class}.from_pretrained("google-bert/bert-base-cased")
# Push the {object} to your namespace with the name "my-finetuned-bert".
{object}.push_to_hub("my-finetuned-bert")
# Push the {object} to an organization with the name "my-finetuned-bert".
{object}.push_to_hub("huggingface/my-finetuned-bert")