# DeepSpeed

[DeepSpeed](https://github.com/deepspeedai/DeepSpeed)は、Zero Redundancy Optimizer (ZeRO) を活用した、非常に大規模なモデルを GPU に載せて学習・フィッティングするための最適化ライブラリです。複数の ZeRO ステージが用意されており、各ステージでオプティマイザ状態、勾配、パラメータを分割し、CPU や NVMe へのオフロードを有効化することで、段階的に GPU メモリをより多く節約します。DeepSpeed は [Trainer](/docs/transformers/v5.23.0/ja/main_classes/trainer#transformers.Trainer) クラスと統合されており、セットアップの大部分は自動的に処理されます。

ただし、[Trainer](/docs/transformers/v5.23.0/ja/main_classes/trainer#transformers.Trainer) を使わずに DeepSpeed を使用したい場合は、Transformers が `HfDeepSpeedConfig` クラスを提供しています。

[Trainer](/docs/transformers/v5.23.0/ja/main_classes/trainer#transformers.Trainer) を DeepSpeed と併用する方法については、[DeepSpeed](../deepspeed) ガイドを参照してください。

## HfDeepSpeedConfig[[transformers.integrations.HfDeepSpeedConfig]]

#### transformers.integrations.HfDeepSpeedConfig[[transformers.integrations.HfDeepSpeedConfig]]

```python
transformers.integrations.HfDeepSpeedConfig(config_file_or_dict)
```

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

**パラメータ:**

config_file_or_dict (`Union[str, Dict]`) : DeepSpeed 設定ファイルへのパスまたは dict。

このオブジェクトには DeepSpeed の設定辞書が含まれており、zero stage などの情報を簡単に照会できます。

このオブジェクトの`weakref`は、モジュールのグローバル変数に保存されます。これにより、Trainer オブジェクトなどが利用できない領域（`from_pretrained` や `_get_resized_embeddings` など）から設定にアクセスできるようになります。したがって、プログラムが実行されている間、このオブジェクトが生存し続けることが重要です。

[Trainer](/docs/transformers/v5.23.0/ja/main_classes/trainer#transformers.Trainer)は代わりに`HfTrainerDeepSpeedConfig`サブクラスを使用します。このサブクラスには、`"auto"`という特別なプレースホルダー値を置き換えることで、[TrainingArguments](/docs/transformers/v5.23.0/ja/main_classes/trainer#transformers.TrainingArguments)の値と設定を同期するロジックが含まれています。この特別なロジックがない場合、DeepSpeedの設定は変更されません。

