# モデル

ベースクラス [PreTrainedModel](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.PreTrainedModel) は、ローカルファイルまたはディレクトリから、あるいはライブラリが提供する事前学習モデルの設定（HuggingFace の Hub からダウンロード）からモデルを読み込み/保存するための共通メソッドを実装しています。

[PreTrainedModel](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.PreTrainedModel) は、すべてのモデルで共通の以下のいくつかのメソッドを実装しています。

- 語彙に新しいトークンが追加された場合、入力トークン埋め込みをリサイズします

各モデルに共通するその他のメソッドは、[ModuleUtilsMixin](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.modeling_utils.ModuleUtilsMixin)と[GenerationMixin](/docs/transformers/v5.23.0/ja/main_classes/text_generation#transformers.GenerationMixin)で定義されています。

## PreTrainedModel[[transformers.PreTrainedModel]]

#### transformers.PreTrainedModel[[transformers.PreTrainedModel]]

```python
transformers.PreTrainedModel(config: PreTrainedConfig, *inputs, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L1068)

すべてのモデルの基底クラス。

[PreTrainedModel](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.PreTrainedModel) は、モデルの構成を保存し、モデルの読み込み、ダウンロード、保存を行うメソッドを処理するほか、すべてのモデルに共通するいくつかのメソッドを提供します。

- 入力埋め込みをリサイズする

クラス属性（派生クラスによって上書きされます）:

- **config_class** ([PreTrainedConfig](/docs/transformers/v5.23.0/ja/main_classes/configuration#transformers.PreTrainedConfig)) -- このモデルアーキテクチャの構成クラスとして使用する [PreTrainedConfig](/docs/transformers/v5.23.0/ja/main_classes/configuration#transformers.PreTrainedConfig) のサブクラス。
- **base_model_prefix** (`str`) -- 同一アーキテクチャの派生クラスにおいて、ベースモデルの上にモジュールを追加する場合、ベースモデルに関連付けられた属性を示す文字列。
- **main_input_name** (`str`) -- モデルの主な入力の名前（NLPモデルでは通常`input_ids`、ビジョンモデルでは`pixel_values`、音声モデルでは`input_values`）。
- **can_record_outputs** (dict):

#### push_to_hub[[transformers.PreTrainedModel.push_to_hub]]

```python
push_to_hub(repo_id: str, commit_message: str | None = None, commit_description: str | None = None, private: bool | None = None, token: bool | str | None = None, revision: str | None = None, create_pr: bool = False, max_shard_size: int | str | None = '50GB', tags: list[str] | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/utils/hub.py#L822)

**パラメータ:**

repo_id (`str`) : モデルをプッシュするリポジトリの名前です。特定の組織にプッシュする場合は、組織名を含む必要があります。

commit_message (`str`, *任意*) : push 時にコミットするメッセージ。デフォルトは `"Upload model"` です。

commit_description (`str`, *任意*) : 作成されるコミットの説明

private (`bool`, *optional*) : リポジトリを非公開にするかどうか。`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にアップロードします。

例:

```python
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_disable[[transformers.PreTrainedModel.activation_checkpointing_disable]]

```python
activation_checkpointing_disable()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L3249)

現在のモデルのアクティベーションチェックポイントを無効にします。

#### activation_checkpointing_enable[[transformers.PreTrainedModel.activation_checkpointing_enable]]

```python
activation_checkpointing_enable(activation_checkpointing_kwargs = None, every_n_layers: int = 1, offload: bool = False)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L3110)

**パラメータ:**

every_n_layers (`int`、*optional*、デフォルトは 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[[transformers.PreTrainedModel.add_model_tags]]

```python
add_model_tags(tags: list[str] | str)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L1360)

**パラメータ:**

tags (`Union[list[str], str]`) : モデルに注入する対象のタグ

Hugging Face Hub にプッシュされるモデルにカスタムタグを追加します。モデルに既存のタグがある場合は、それらを上書きしません。

例:

```python
from transformers import AutoModel

model = AutoModel.from_pretrained("google-bert/bert-base-cased")

model.add_model_tags(["custom", "custom-bert"])

# Push the model to your namespace with the name "my-custom-bert".
model.push_to_hub("my-custom-bert")
```

#### can_generate[[transformers.PreTrainedModel.can_generate]]

```python
can_generate()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L1474)

**戻り値:** `bool`

このモデルが`.generate()`でシーケンスを生成できるかどうか。

`.generate()`、またはそれに類似したインターフェースを持つ `GenerationMixin` を介してシーケンスを生成できるかどうかを返します。

内部では、この関数が True を返すクラスでは、生成に固有の変更がトリガーされます。例えば、モデルインスタンスには `generation_config` 属性が設定されます。

#### cuda[[transformers.PreTrainedModel.cuda]]

```python
cuda(*args, **kwargs)
```

ドット区切りパス（例: `torch.float32`）に対するモック値: 属性アクセスのチェーン、呼び出しはパススルーデコレータとして動作し、`repr` はドット区切りパスを返し、ベースクラスとして使用するとプレーンな `type` ベースに置き換えられます（PEP 560 の `__mro_entries__`）。これにより、実際のサブクラスは通常のメタクラスを保持し、`inspect.signature` はモックのものではなく実際の `__init__` を読み取ります。

#### dequantize[[transformers.PreTrainedModel.dequantize]]

```python
dequantize(dtype = None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L1342)

量子化がサポートされている量子化手法によってモデルが量子化されている場合、デクォンタイズする可能性があります。

#### disable_input_require_grads[[transformers.PreTrainedModel.disable_input_require_grads]]

```python
disable_input_require_grads()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L2181)

`_require_grads_hook`を削除します。

#### enable_input_require_grads[[transformers.PreTrainedModel.enable_input_require_grads]]

```python
enable_input_require_grads()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L2137)

入力埋め込みの勾配を有効にします。モデルの重みを固定したまま、アダプター重みのファインチューニングを行う場合に有用です。

#### from_pretrained[[transformers.PreTrainedModel.from_pretrained]]

```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike | None, *model_args, config: transformers.configuration_utils.PreTrainedConfig | str | os.PathLike | None = None, cache_dir: str | os.PathLike | None = None, ignore_mismatched_sizes: bool = False, force_download: bool = False, local_files_only: bool = False, token: str | bool | None = None, revision: str = 'main', use_safetensors: bool | None = None, weights_only: bool = True, fusion_config: dict[str, bool | dict[str, typing.Any]] | None = None, disable_mmap: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L3893)

**パラメータ:**

pretrained_model_name_or_path (`str` または `os.PathLike`、*省略可能*) : 以下のいずれかです。 - huggingface.co のモデルリポジトリにホストされている事前学習済みモデルの *model id* を示す文字列。 - [save_pretrained()](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.PreTrainedModel.save_pretrained) を使用してモデルの重みを保存した *ディレクトリ* へのパス。例: `./my_model_directory/`。`save_pretrained(..., distributed_checkpoint=True)` で保存されたディレクトリは検出され、分散チェックポイント (DCP) によって読み込まれます。これにより、モデルの現在のメッシュと配置が保持されます。この機能には `torch>=2.7` が必要であり、厳密な読み込みが行われます。つまり、すべてのモデルキーがチェックポイントに存在する必要があります。 - 設定と状態辞書をそれぞれキーワード引数 `config` と `state_dict` で提供する場合、`None`。

model_args (位置引数のシーケンス、*任意*) : 残りのすべての位置引数は、基盤となるモデルの `__init__` メソッドに渡されます。

config (`Union[PreTrainedConfig, str, os.PathLike]`、*任意*) : 以下のいずれかです:  - [PreTrainedConfig](/docs/transformers/v5.23.0/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承したクラスのインスタンス、 - [from_pretrained()](/docs/transformers/v5.23.0/ja/main_classes/configuration#transformers.PreTrainedConfig.from_pretrained) の入力として有効な文字列またはパス。  自動的に読み込まれる設定の代わりに使用するモデルの設定です。 設定は、以下の条件を満たす場合に自動的に読み込まれます:  - モデルがライブラリによって提供されるモデルであり、事前学習済みモデルの *model id* 文字列で読み込まれる場合。 - モデルが [save_pretrained()](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.PreTrainedModel.save_pretrained) を使用して保存され、保存ディレクトリを指定して再読み込みされる場合。 - `pretrained_model_name_or_path` としてローカルディレクトリを指定してモデルを読み込み、そのディレクトリ内に *config.json* という名前の設定 JSON ファイルが見つかる場合。

state_dict (`dict[str, torch.Tensor]`、*省略可*) : 保存された重みファイルから読み込まれる状態辞書の代わりに使用する状態辞書です。このオプションは、事前学習済み設定からモデルを作成しつつ、独自の重みをロードしたい場合に使用できます。ただし、この場合は、[save_pretrained()](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.PreTrainedModel.save_pretrained) と [from_pretrained()](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.PreTrainedModel.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 ベースのシステムを使用しているため、`revision` には git で許可される任意の識別子（ブランチ名、タグ名、コミット ID など）を指定できます。    Hub で作成したプルリクエストをテストするには、`revision="refs/pr/<pr_number>"` を渡すことができます。

attn_implementation (`str`, *任意*) : モデルで使用するアテンションの実装（関連する場合）。以下のいずれかになります - `"eager"`（アテンションの手動実装） - `"sdpa"`（[`F.scaled_dot_product_attention`](https://pytorch.org/docs/master/generated/torch.nn.functional.scaled_dot_product_attention.html)を使用） - `"flash_attention_2"`（[Dao-AILab/flash-attention](https://github.com/Dao-AILab/flash-attention)を使用） - `"flash_attention_3"`（[Dao-AILab/flash-attention/hopper](https://github.com/Dao-AILab/flash-attention/tree/main/hopper)を使用） - `"flash_attention_4"`（[Dao-AILab/flash-attention/flash_attn/cute](https://github.com/Dao-AILab/flash-attention/tree/main/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`](https://pytorch.org/docs/stable/generated/torch.bmm.html)を使用）。 - `"grouped_mm"`（[`torch.nn.functional.grouped_mm`](https://docs.pytorch.org/docs/main/generated/torch.nn.functional.grouped_mm.html)を使用）。 デフォルトでは、モデルがサポートしている場合、`"grouped_mm"`が使用されます。サポートしていない場合のデフォルトは、手動の`"eager"`実装です。

**大規模モデルの推論用パラメータ:**

dtype (`str` または `torch.dtype`、*任意*、デフォルトは `"auto"`) : デフォルトの `torch_dtype` を上書きし、特定の `dtype` でモデルを読み込みます。利用可能なオプションは以下の通りです。  1. `torch.float16` または `torch.bfloat16` または `torch.float`: 指定された `dtype` で読み込み、存在する場合でもモデルの `config.dtype` を無視します。指定されない場合、モデルは `torch.float` (fp32) で読み込まれます。  2. `"auto"` - モデルの `config.json` ファイル内の `dtype` または `torch_dtype` エントリが使用されるよう試行されます。このエントリが見つからない場合、次に、チェックポイント内の浮動小数点型である最初の重みの `dtype` を確認し、それを `dtype` として使用します。これにより、モデルはトレーニング終了時に保存された `dtype` で読み込まれます。これは、モデルがどのようにトレーニングされたかを示す指標としては使用できません。半精度の dtype でトレーニングされたものの、fp32 で保存されている可能性があるためです。  3. 有効な `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`、*省略可*) : 各サブモジュールをどのデバイスに配置するかを指定するマップです。各パラメータやバッファの名前まで細かく指定する必要はなく、特定のモジュール名が指定されると、そのモジュールのすべてのサブモジュールが同じデバイスに送信されます。モデルが割り当てられるデバイス（*例*、`"cpu"`、`"cuda:1"`、`"mps"`、または `1` のような GPU の ordinal rank）のみを渡す場合、device map はモデル全体をそのデバイスにマッピングします。`device_map = 0` を渡すと、モデル全体を GPU 0 に配置します。Accelerate が最も最適化された `device_map` を自動的に計算するには、`device_map="auto"` を設定してください。各オプションの詳細については、[device map の設計](https://hf.co/docs/accelerate/main/en/usage_guides/big_modeling#designing-a-device-map) を参照してください。

max_memory (`Dict`, *任意*) : `device_map` を使用する場合、デバイス識別子から最大メモリ量への辞書です。未設定の場合、各 GPU の利用可能な最大メモリと、利用可能な CPU RAM がデフォルトとして使用されます。

distributed_config ([DistributedConfig](/docs/transformers/v5.23.0/ja/expert_parallelism#transformers.DistributedConfig)、*任意*) : テンソル並列または FSDP2 を用いたネイティブ分散ロードの設定です。モデルの事前定義されたテンソル並列プランを使用するには `DistributedConfig(tp_size=N)` を、テンソル並列プランを指定するには `DistributedConfig(tp_plan=...)` を、FSDP2 を使用するには `DistributedConfig(fsdp_size=N)` を渡します。`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]`, *optional*) : 量子化（例：bitsandbytes、gptq）用の設定パラメータの辞書、または QuantizationConfigMixin オブジェクト。

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-mount` FUSE ファイルシステム（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`）。`config` が提供されるか、自動的に読み込まれるかによって動作が異なります。
- `config` で設定が提供されている場合、`**kwargs` は直接、基盤となるモデルの `__init__` メソッドに渡されます（設定への関連するすべての更新がすでに完了していると仮定します）。
- 設定が提供されていない場合、`kwargs` はまず設定クラスの初期化関数（[from_pretrained()](/docs/transformers/v5.23.0/ja/main_classes/configuration#transformers.PreTrainedConfig.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 によって使用されていないことを示しており、そのためこれらの重みは破棄されます。

ファイアウォールが設定された環境でこのメソッドを使用するには、特別な[「オフラインモード」](https://huggingface.co/transformers/installation.html#offline-mode)を有効にしてください。

例:

```python
>>> 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 == True
```

#### get_compiled_call[[transformers.PreTrainedModel.get_compiled_call]]

```python
get_compiled_call(compile_config: transformers.generation.configuration_utils.CompileConfig | None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L4811)

`torch.compile` された `self.__call__` のバージョンを返します。これは、推論中にコンパイルなし/コンパイル済みの `forward` を動的に切り替える際に有用です。特に、プリフィル（新しい形状でグラフを再計算することを避けるため、コンパイル済みバージョンを使いたくない場合）と反復デコーディング（静的形状でコンパイル済みバージョンの高速化を利用したい場合）の切り替えに役立ちます。

#### get_decoder[[transformers.PreTrainedModel.get_decoder]]

```python
get_decoder()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L2254)

*decoder*モジュールのベストエフォートによる検索。

試行の順序（現在の利用の約85%をカバー）：

1. `self.decoder/self.language_model/self.text_model`
2. `self.base_model`                  （多くのラッパーはデコーダーをここに格納します）
3. `self.base_model.get_decoder()`    （ネストされたラッパー）
4. fallback: 個別のルールが必要な少数の特殊なモデルに対して例外を送出する

#### get_encoder[[transformers.PreTrainedModel.get_encoder]]

```python
get_encoder(modality: str | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L2196)

*encoder*モジュールのベストエフォートによる検索。`modality`引数が指定された場合、マルチモーダルモデルにおいてモダリティ固有のエンコーダー（例："image_encoder"）を検索します。デフォルトでは、モデルにテキストエンコーダーが存在する場合はそれを返し、存在しない場合は`self`を返します。

`modality`の値として指定できるのは、"image"、"video"、"audio"です。

#### get_expanded_tied_weights_keys[[transformers.PreTrainedModel.get_expanded_tied_weights_keys]]

```python
get_expanded_tied_weights_keys(all_submodels: bool = False)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L2416)

現在のモデルのみに限って、または`all_submodels=True`の場合にはすべてのサブモデルに対して再帰的に、展開されたtied weightのキーを返します（モジュールや正規表現パターンを含む場合に対応）。つまり、すべてのサブモデルの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',
    ...
}
```

つまり、`_tied_weights_keys`内の正規表現およびモジュールパターンに一致するすべてのパラメータです。

#### get_experts_implementation[[transformers.PreTrainedModel.get_experts_implementation]]

```python
get_experts_implementation()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L2064)

このモデルおよびそのサブモデルのexperts実装を、`set_experts_implementation`が受け付ける形式の`dict`として返します（このモデルには`""`、各サブconfigには1エントリずつ）。これは`set_experts_implementation`の逆操作であり、例えば現在の実装のスナップショットを撮って後で復元する場合に使用します。

#### get_memory_footprint[[transformers.PreTrainedModel.get_memory_footprint]]

```python
get_memory_footprint(return_buffers = True)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L3677)

**パラメータ:**

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

#### get_parameter_or_buffer[[transformers.PreTrainedModel.get_parameter_or_buffer]]

```python
get_parameter_or_buffer(target: str)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L4978)

`target` で指定されたパラメータまたはバッファが存在する場合はそれを返し、存在しない場合はエラーをスローします。これは `get_parameter()` と `get_buffer()` を1つの便利な関数にまとめたものです。ターゲットが `_extra_state` 属性である場合、モジュールによって提供される追加の状態を返します。なお、`target` がモデルのリーフである場合のみ動作することに注意してください。

#### gradient_checkpointing_disable[[transformers.PreTrainedModel.gradient_checkpointing_disable]]

```python
gradient_checkpointing_disable()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L3276)

[activation_checkpointing_disable()](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.PreTrainedModel.activation_checkpointing_disable)の非推奨エイリアスです。v6で削除されます。

#### gradient_checkpointing_enable[[transformers.PreTrainedModel.gradient_checkpointing_enable]]

```python
gradient_checkpointing_enable(gradient_checkpointing_kwargs = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L3191)

[activation_checkpointing_enable()](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.PreTrainedModel.activation_checkpointing_enable)の非推奨エイリアスです。v6で削除されます。

#### init_weights[[transformers.PreTrainedModel.init_weights]]

```python
init_weights()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L3098)

必要に応じて、重みを初期化および結合します。カスタムの`PreTrainedModel`を使用する場合は、`_init_weights`内で初期化ロジックを実装する必要があります。

#### initialize_weights[[transformers.PreTrainedModel.initialize_weights]]

```python
initialize_weights()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L2386)

これは`self.apply(self._initialize_weights)`を呼び出すことと同等ですが、複合モデルを正しく処理します。この関数は、モジュールグラフに沿って再帰を進める際に、各モジュールに対して正しい`init_weights`関数を動的にディスパッチします。任意数のサブモデルを処理できます。これがない場合、すべての複合モデルは、最外層の`_init_weights`内で明示的にすべてのサブモデルに対して2回目の再帰を行う必要があり、非常にエラーが起きやすく非効率になります。

#### is_custom_code[[transformers.PreTrainedModel.is_custom_code]]

```python
is_custom_code()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L5032)

現在のモデルがカスタムコードであるかどうかを返します。つまり、ハブから読み込まれたコード、またはユーザー固有のモジュール/セッションで定義されたコードのいずれかです。

#### is_remote_code[[transformers.PreTrainedModel.is_remote_code]]

```python
is_remote_code()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L5026)

現在のモデルがカスタムコード、つまりハブから読み込まれたコード、または`register_for_auto_class`を介して登録したばかりのクラスであるかどうかを返します。

#### mark_tied_weights_as_initialized[[transformers.PreTrainedModel.mark_tied_weights_as_initialized]]

```python
mark_tied_weights_as_initialized(loading_info)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L4950)

後で結合されるパラメータに`_is_hf_initialized`フラグを追加します。これにより、いずれ結合（上書き）されるため、後でそれらを初期化するのを回避できます。ほとんどの埋め込みは結合されており、それらは巨大なパラメータ（語彙サイズはよく256k）であるため、それらに対して初期化を実行するのは非常にコストがかかるため、これは非常に重要です。

#### named_non_persistent_buffers[[transformers.PreTrainedModel.named_non_persistent_buffers]]

```python
named_non_persistent_buffers(recurse: bool = True, remove_duplicate: bool = True)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L5002)

`named_buffers`と同様に、非永続的なバッファのみを生成します。永続的かどうかを判断するのが必ずしも直感的ではないため、このメソッドは便利です。

#### post_init[[transformers.PreTrainedModel.post_init]]

```python
post_init()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L1289)

各 Transformer モデルの初期化の最後に実行されるメソッドです。モデルのモジュールが正しく初期化された後に実行する必要があるコード（重みの初期化など）を実行するために使用されます。また、複合モデル（つまり、トップレベルのモデルが子モデルからこれらのプロパティを把握すべき場合）において、並列化計画、tied_weights_keys、_keep_in_fp32_modules などのすべての静的プロパティを正しく取得するためにも使用されます。

#### register_for_auto_class[[transformers.PreTrainedModel.register_for_auto_class]]

```python
register_for_auto_class(auto_class = 'AutoModel')
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L4657)

**パラメータ:**

auto_class (`str` または `type`、*省略可能*、デフォルトは `"AutoModel"`) : この新しいモデルを登録するための auto クラス。

このクラスを指定された auto クラスに登録します。これは、ライブラリ内のモデルはすでに auto クラスにマッピングされているため、カスタムモデルでのみ使用すべきです。

#### resize_token_embeddings[[transformers.PreTrainedModel.resize_token_embeddings]]

```python
resize_token_embeddings(new_num_tokens: int | None = None, pad_to_multiple_of: int | None = None, mean_resizing: bool = True)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L2633)

**パラメータ:**

new_num_tokens (`int`, *optional*) : 埋め込み行列の新しいトークン数です。サイズを大きくすると、末尾に新しく初期化されたベクトルが追加されます。サイズを小さくすると、末尾からベクトルが削除されます。指定されなかった場合、または`None`の場合、何もしずにモデルの入力トークン`torch.nn.Embedding`モジュールへのポインタをそのまま返します。

pad_to_multiple_of (`int`, *optional*) : 設定すると、埋め込み行列を指定された値の倍数にパディングします。`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[[transformers.PreTrainedModel.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike, is_main_process: bool = True, state_dict: dict | None = None, push_to_hub: bool = False, max_shard_size: int | str = '50GB', variant: str | None = None, token: str | bool | None = None, save_peft_format: bool = True, save_original_format: bool = True, distributed_checkpoint: bool = False, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L3310)

**パラメータ:**

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()](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub) メソッドに渡される追加のキーワード引数。

モデルとその設定ファイルをディレクトリに保存し、[from_pretrained()](/docs/transformers/v5.23.0/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained)クラスメソッドを使って再読み込みできるようにします。

#### set_attn_implementation[[transformers.PreTrainedModel.set_attn_implementation]]

```python
set_attn_implementation(attn_implementation: str | dict, allow_all_kernels: bool = False)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L1960)

**パラメータ:**

attn_implementation (`str` または `dict`) : このモデルに設定するアテンション実装です。`str` の場合、関連するすべてのサブモデルにディスパッチされます。`dict` の場合、キーはサブ設定の名前であり、各サブモデルは対応する値（自身およびその中にネストされたすべてのサブモデル）をディスパッチします。値自体が同じ形式の `dict` であることも可能で、その場合はそのサブモデルのサブ設定を対象とします（ネストされた `attn_implementation` dict を用いて設定を初期化する場合と同様）。

allow_all_kernels (`bool`, 省略可能) : `attn_implementation`が`kernels-community`ハブリポジトリ外のカスタムカーネルである場合、未検証のハブリポジトリからカーネルを読み込むかどうかを指定します。

このモデルの`attn_implementation`に要求された値を設定します。

#### set_decoder[[transformers.PreTrainedModel.set_decoder]]

```python
set_decoder(decoder)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L2277)

対称的なセッター。`get_decoder`で使用される参照ロジックを反映しています。

#### set_encoder[[transformers.PreTrainedModel.set_encoder]]

```python
set_encoder(encoder, modality: str | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L2228)

対称的なセッター。`get_encoder`で使用される参照ロジックを反映しています。

#### set_experts_implementation[[transformers.PreTrainedModel.set_experts_implementation]]

```python
set_experts_implementation(experts_implementation: str | dict)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L2077)

**パラメータ:**

experts_implementation (`str` または `dict`) : このモデルに設定するエキスパートの実装です。`str` の場合、関連するすべてのサブモデルにディスパッチされます。`dict` の場合、キーはサブ設定の名前であり、各サブモデルは対応する値をディスパッチします。

このモデルに、要求された`experts_implementation`を設定します。

#### set_use_kernels[[transformers.PreTrainedModel.set_use_kernels]]

```python
set_use_kernels(use_kernels, kernel_config: transformers.utils.kernel_config.KernelConfig | None = None, mode: Mode | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L3851)

**パラメータ:**

use_kernels (`bool`) : モデルの一部のレイヤーをカーネル化するために`kernels`ライブラリを使用するかどうか。

kernel_config (`KernelConfig`, *任意*) : モデルをカーネル化するために使用するカーネル設定。`None` の場合、デフォルトのカーネルマッピングが使用されます。

mode (`Mode`、*任意*) : `kernelize` 実行時に適用するモードです。任意で、内部の `training` フラグに基づいて、トレーニングモードまたは推論モードのいずれかがデフォルトとして設定されます。

モデルの一部のレイヤーをカーネル化するために`kernels`ライブラリを使用するかどうかを設定します。

#### tie_weights[[transformers.PreTrainedModel.tie_weights]]

```python
tie_weights(missing_keys: set[str] | None = None, recompute_mapping: bool = True)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L2530)

モデルの重みを結合します。`recompute_mapping=False`（内部から呼び出される場合のデフォルト）の場合、`model.all_tied_weights_keys` 属性に依存し、これは結合対象のパラメータの `{target: source}` マッピングを含みます。`recompute_mapping=True` の場合、すべての内部サブモデルとその設定を再チェックして、結合が必要なパラメータを特定します。`model.tie_weights()` が `__init__` や `from_pretrained` の外で単独で呼び出される場合のデフォルトであり、設定値がどこかで変更された可能性がある場合に備えています。

`from_pretrained` 実行中、タイイングは*対称的*である点にご注意ください。マッピングが「tie target -> source」と指定している場合でも、`source` がチェックポイントに存在せず`target` が存在する場合は、実際に存在するパラメータにすべてをタイイングできるように、source と target を*入れ替えます*。

#### へ[[transformers.PreTrainedModel.to]]

```python
to(*args, **kwargs)
```

ドット区切りパス（例: `torch.float32`）に対するモック値: 属性アクセスのチェーン、呼び出しはパススルーデコレータとして動作し、`repr` はドット区切りパスを返し、ベースクラスとして使用するとプレーンな `type` ベースに置き換えられます（PEP 560 の `__mro_entries__`）。これにより、実際のサブクラスは通常のメタクラスを保持し、`inspect.signature` はモックのものではなく実際の `__init__` を読み取ります。

#### warn_if_padding_and_no_attention_mask[[transformers.PreTrainedModel.warn_if_padding_and_no_attention_mask]]

```python
warn_if_padding_and_no_attention_mask(input_ids, attention_mask)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L4679)

入力に input_ids が含まれており、パディングが含まれているように見えるが、アテンションマスクが指定されていない場合、一度だけ警告を表示します。

カスタムモデルには、特定のモデルに superfast init が適用可能かどうかを判定する `_supports_assign_param_buffer` も含める必要があります。このプロパティが必要であることの兆候は、`test_save_and_load_from_pretrained` が失敗することです。その場合は、これを `False` に設定してください。

## ModuleUtilsMixin[[transformers.modeling_utils.ModuleUtilsMixin]]

#### transformers.modeling_utils.ModuleUtilsMixin[[transformers.modeling_utils.ModuleUtilsMixin]]

```python
transformers.modeling_utils.ModuleUtilsMixin()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L894)

`torch.nn.Modules`でミックスインとして使用するいくつかのユーティリティ。

#### num_parameters[[transformers.modeling_utils.ModuleUtilsMixin.num_parameters]]

```python
num_parameters(only_trainable: bool = False, exclude_embeddings: bool = False)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/modeling_utils.py#L914)

**パラメータ:**

only_trainable (`bool`, *任意*, デフォルトは `False`) : 学習可能なパラメータの数のみを返すかどうか

exclude_embeddings (`bool`, *任意*, デフォルトは `False`) : 埋め込みパラメータ以外の数のみを返すかどうか

**戻り値:** `int`

パラメータの数。

モジュール内のパラメータ数（オプションで、学習可能または非埋め込み）を取得します。

## Hub へのプッシュ[[transformers.utils.PushToHubMixin]]

#### transformers.utils.PushToHubMixin[[transformers.utils.PushToHubMixin]]

```python
transformers.utils.PushToHubMixin()
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/utils/hub.py#L728)

モデルやトークナイザーをハブにプッシュする機能を含む Mixin です。

#### push_to_hub[[transformers.utils.PushToHubMixin.push_to_hub]]

```python
push_to_hub(repo_id: str, commit_message: str | None = None, commit_description: str | None = None, private: bool | None = None, token: bool | str | None = None, revision: str | None = None, create_pr: bool = False, max_shard_size: int | str | None = '50GB', tags: list[str] | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/utils/hub.py#L822)

**パラメータ:**

repo_id (`str`) : {object} をプッシュするリポジトリの名前です。特定の組織にプッシュする場合は、組織名を含む必要があります。

commit_message (`str`, *任意*) : push 時にコミットするメッセージ。デフォルトは `"Upload {object}"` です。

commit_description (`str`, *任意*) : 作成されるコミットの説明

private (`bool`, *optional*) : リポジトリを非公開にするかどうか。`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 にアップロードします。

例:

```python
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")
```

