# コマンドライン 

以下は、🤗 Accelerateで利用可能なすべてのコマンドとそのパラメータのリストです

## accelerate config

**コマンド**:

`accelerate config`または`accelerate-config`

学習システム用の`default_config.yml`設定ファイルを作成して保存するための一連のプロンプトを実行します。常に最初にマシンで実行する必要があります。

**使用方法**:

```bash
accelerate config [arguments]
```

**任意の引数**:
* `--config_file CONFIG_FILE` (`str`) -- 設定ファイルを保存するために使用するパスです。デフォルトでは、キャッシュの保存場所にある default_config.yaml という名前のファイルになります。これは、環境変数 `HF_HOME` の内容に 'accelerate' を接尾辞として付加したディレクトリです。この環境変数が設定されていない場合は、キャッシュディレクトリ (`~/.cache` または `XDG_CACHE_HOME` の内容) に `huggingface` を接尾辞として付加したディレクトリになります。
* `-h`、`--help`（`bool`）-- ヘルプメッセージを表示して終了します

## accelerate config default

**コマンド**:

`accelerate config default` または `accelerate-config default`

数少ないフラグのみを設定して、Accelerate用のデフォルト設定ファイルを作成します。

**使用方法**:

```bash
accelerate config default [arguments]
```

**任意の引数**:
* `--config_file CONFIG_FILE` (`str`) -- 設定ファイルを保存するために使用するパスです。デフォルトでは、キャッシュの保存場所にある default_config.yaml という名前のファイルになります。これは、環境変数 `HF_HOME` の内容に 'accelerate' を接尾辞として付加したディレクトリです。この環境変数が設定されていない場合は、キャッシュディレクトリ (`~/.cache` または `XDG_CACHE_HOME` の内容) に `huggingface` を接尾辞として付加したディレクトリになります。

* `-h`、`--help`（`bool`）-- ヘルプメッセージを表示して終了します
* `--mixed_precision {no,fp16,bf16}` (`str`) -- 混合精度学習を使用するかどうかを指定します。FP16 と BF16 (bfloat16) の学習から選択してください。BF16 学習は、Nvidia Ampere GPU および PyTorch 1.10 以降でのみサポートされています。

## accelerate config update

**コマンド**:

`accelerate config update` または `accelerate-config update`

既存の設定ファイルを最新のデフォルト値で更新し、従来の設定を維持します。

**使用方法**:

```bash
accelerate config update [arguments]
```

**任意の引数**:
* `--config_file CONFIG_FILE` (`str`) -- 更新する設定ファイルへのパスです。デフォルトでは、キャッシュの場所にある default_config.yaml という名前のファイルが使用されます。これは、環境変数 `HF_HOME` の内容に 'accelerate' を接尾辞として付加したパス、またはそのような環境変数が存在しない場合は、キャッシュディレクトリ (`~/.cache` または `XDG_CACHE_HOME` の内容) に `huggingface` を接尾辞として付加したパスです。

* `-h`、`--help`（`bool`）-- ヘルプメッセージを表示して終了します

## accelerate env

**コマンド**:

`accelerate env` または `accelerate-env` または `python -m accelerate.commands.env`

渡された🤗 Accelerate設定ファイルの内容をリスト表示します。[GitHubリポジトリ](https://github.com/huggingface/accelerate)で問題を報告する際は、常に使用してください。

**使用方法**:

```bash
accelerate env [arguments]
```

**任意の引数**:
* `--config_file CONFIG_FILE` (`str`) -- 設定ファイルを保存するために使用するパスです。デフォルトでは、キャッシュの保存場所にある default_config.yaml という名前のファイルになります。これは、環境変数 `HF_HOME` の内容に 'accelerate' を接尾辞として付加したディレクトリです。この環境変数が設定されていない場合は、キャッシュディレクトリ (`~/.cache` または `XDG_CACHE_HOME` の内容) に `huggingface` を接尾辞として付加したディレクトリになります。
* `-h`、`--help`（`bool`）-- ヘルプメッセージを表示して終了します

## accelerate launch

**コマンド**:

`accelerate launch` または `accelerate-launch` または `python -m accelerate.commands.launch`

指定されたスクリプトを、適切なパラメータとともに分散システム上で起動します。

**使用方法**:

```bash
accelerate launch [arguments] {training_script} --{training_script-argument-1} --{training_script-argument-2} ...
```

**位置引数**:

- `{training_script}` - 並列で起動するスクリプトの完全なパス
- `--{training_script-argument-1}` -- 学習スクリプトの引数

**任意の引数**:

* `-h`、`--help`（`bool`）-- ヘルプメッセージを表示して終了します
* `--config_file CONFIG_FILE` (`str`)-- 起動スクリプトのデフォルト値に使用する設定ファイル。
* `-m`、`--module`（`bool`）-- 各プロセスが起動スクリプトをPythonモジュールとして解釈するように変更し、'python -m' と同じ動作で実行します。
* `--no_python` (`bool`) -- 学習スクリプトの先頭に 'python' を付加せずに、スクリプトを直接実行します。スクリプトが Python スクリプトでない場合に便利です。
* `--debug` (`bool`) -- 何か失敗した際に torch.distributed のスタックトレースを出力するかどうか。
* `-q`、`--quiet`（`bool`）-- 起動スタックトレースからのサブプロセスのエラーを抑制し、関連するトレースバックのみを表示します。（DeepSpeedおよび単一プロセスの構成でのみ適用可能）

これらの残りの引数は`accelerate config`で設定され、指定された`--config_file`(またはデフォルトの設定)から値が読み込まれます。手動で渡すこともできます。

**ハードウェア選択の引数**:

* `--cpu` (`bool`) -- CPUでのトレーニングを強制するかどうか。
* `--multi_gpu` (`bool`) -- 分散 GPU トレーニングを起動するかどうか。
* `--tpu` (`bool`) -- TPUでの学習を開始するかどうか。

**リソース選択引数**:

以下の引数は、利用可能なハードウェアの使用方法を微調整するのに役立ちます

* `--mixed_precision {no,fp16,bf16,fp8}` (`str`) -- 混合精度学習を使用するかどうかを指定します。FP16 と BF16 (bfloat16) の学習から選択してください。BF16 学習は、Nvidia Ampere GPU および PyTorch 1.10 以降でのみサポートされています。
* `--num_processes NUM_PROCESSES` (`int`) -- 並列で起動するプロセスの総数。
* `--num_machines NUM_MACHINES` (`int`) -- この学習で使用するマシンの総数。
* `--num_cpu_threads_per_process NUM_CPU_THREADS_PER_PROCESS` (`int`) -- プロセスあたりの CPU スレッド数です。最適なパフォーマンスのために調整できます。
* `--enable_cpu_affinity` (`bool`) -- CPU アフィニティとバランス調整を有効にするかどうか。現在、NVIDIA ハードウェアでのみサポートされています。

**トレーニングパラダイム引数**:

以下の引数は、使用するトレーニングパラダイムを選択するのに役立ちます。

* `--use_deepspeed` (`bool`) -- 学習に DeepSpeed を使用するかどうか。
* `--use_fsdp` (`bool`) -- 学習にFullyShardedDataParallelを使用するかどうか。
* `--use_megatron_lm` (`bool`) -- 学習に Megatron-LM を使用するかどうか。

**分散 GPU 引数**:

`multi_gpu` が渡されるか、`accelerate config` 経由でマルチGPUトレーニングが設定されている場合のみ、以下の引数が有用です:

* `--gpu_ids` (`str`) -- このマシンでの学習に使用する GPU を、カンマ区切りの ID リストとして指定します
* `--same_network` (`bool`) -- マルチノード学習に使用されるすべてのマシンが同じローカルネットワーク上に存在するかどうか。
* `--machine_rank` (`int`) -- このスクリプトが起動されるマシンのランクです。
* `--main_process_ip` (`str`) -- rank 0 のマシンの IP アドレス。
* `--main_process_port` (`int`) -- rank 0 のマシンと通信するために使用するポート。
* `-t`、`--tee`（`str`）-- 標準ストリームをログファイルに書き出すと同時にコンソールにも出力します。
* `--log_dir` (`str`) -- torchrun/torch.distributed.run をランチャーとして使用する際に、ログファイルに使用するベースディレクトリ。--tee と組み合わせて使用すると、標準ストリームをログファイルにリダイレクトできます。
* `--role` (`str`) -- ワーカーに割り当てるユーザー定義のロール。
* `--rdzv_backend` (`str`) -- 使用するレンドゥーバスの方法。'static'（デフォルト）や 'c10d' など
* `--rdzv_conf` (`str`) -- 追加のrendezvous設定 (=,=,...)。
* `--max_restarts` (`int`) -- 失敗する前にワーカーグループを再起動できる最大回数。
* `--monitor_interval` (`int`) -- ワーカーの状態を監視する間隔（秒）。

**TPU引数**:

`tpu` が渡されるか、`accelerate config` 経由で TPU 学習が設定されている場合のみ、以下の引数が有用です:

* `--tpu_cluster` (`bool`) -- 学習に GCP TPU pod を使用するかどうか。
* `--tpu_use_sudo` (`bool`) -- 各ポッドで TPU 学習スクリプトを実行する際に `sudo` を使用するかどうか。
* `--vm` (`str`) -- 単一の Compute VM インスタンス名のリストです。指定されない場合、インスタンスグループの使用を前提とします。TPU ポッド用です。
* `--env` (`str`) -- Compute VM インスタンスに設定する環境変数のリスト。TPU ポッド用。
* `--main_training_function` (`str`) -- スクリプト内で実行されるメイン関数の名前（TPU 学習のみ）。
* `--downcast_bf16` (`bool`) -- TPUでbf16精度を使用する場合、floatおよびdoubleのテンソルをbfloat16にキャストするか、doubleテンソルをfloat32のままにするかを指定します。

**DeepSpeed引数**:

`use_deepspeed` が渡されるか、`deepspeed` が `accelerate config` 経由で設定されている場合のみ、以下の引数が有効です:

* `--deepspeed_config_file` (`str`) -- DeepSpeedの設定ファイル。
* `--zero_stage` (`int`) -- DeepSpeed の ZeRO 最適化ステージ。
* `--offload_optimizer_device` (`str`) -- オプティマイザの状態をオフロードする場所（none|cpu|nvme）を決定します。
* `--offload_param_device` (`str`) -- パラメータをオフロードする先（none|cpu|nvme）を決定します。
* `--offload_optimizer_nvme_path` (`str`) -- オプティマイザの状態をオフロードするための Nvme パスを決定します。
* `--gradient_accumulation_steps` (`int`) -- 学習スクリプトで使用される gradient_accumulation_steps の数。
* `--gradient_clipping` (`float`) -- 学習スクリプトで使用する勾配クリッピングの値。
* `--zero3_init_flag` (`str`) -- 大規模モデルの構築に `deepspeed.zero.Init` を有効にするかどうか (true|false) を決定します。DeepSpeed ZeRO Stage-3 のみで適用可能です。
* `--zero3_save_16bit_model` (`str`) -- ZeRO Stage-3 を使用している場合、16 ビットのモデル重みを保存するかどうか（true|false）を決定します。DeepSpeed ZeRO Stage-3 のみで適用可能です。
* `--deepspeed_hostfile` (`str`) -- マルチノードの計算リソースを設定するための DeepSpeed hostfile。
* `--deepspeed_exclusion_filter` (`str`) -- マルチノード構成を使用する場合の DeepSpeed 除外フィルター文字列。
* `--deepspeed_inclusion_filter` (`str`) -- マルチノード構成を使用する場合の DeepSpeed inclusion filter 文字列。
* `--deepspeed_multinode_launcher` (`str`) -- 使用する DeepSpeed マルチノードランチャー。
* `--deepspeed_moe_layer_cls_names` (`str`) -- ラッパーを適用する Transformer MoE レイヤーのクラス名のカンマ区切りリスト（大文字と小文字を区別する）。例: `MixtralSparseMoeBlock` `Qwen2MoeSparseMoeBlock`, `JetMoEAttention,JetMoEBlock`

**Fully Sharded Data Parallelism の引数**:

`use_fsdp` が渡されるか、`accelerate config` によって Fully Sharded Data Parallelism が設定されている場合のみ、以下の引数が有効です:

* `--fsdp_offload_params` (`str`) -- パラメータと勾配を CPU にオフロードするかどうか (true|false) を決定します。
* `--fsdp_min_num_params` (`int`) -- FSDPのDefault Auto Wrappingにおける最小パラメータ数。
* `--fsdp_sharding_strategy` (`int`) -- FSDP の Sharding Strategy。
* `--fsdp_auto_wrap_policy` (`str`) -- FSDPのオートラップポリシー。
* `--fsdp_transformer_layer_cls_to_wrap` (`str`) -- ラップする Transformer レイヤーのクラス名 (大文字小文字を区別する)。例: `BertLayer`、`GPTJBlock`、`T5Block` など
* `--fsdp_backward_prefetch_policy` (`str`) -- FSDPのバックワードプリフェッチポリシー。
* `--fsdp_state_dict_type` (`str`) -- FSDP の state dict の型。
* `--fsdp_forward_prefetch` (`str`) -- FSDP の forward prefetch。
* `--fsdp_use_orig_params` (`str`) -- True の場合、FSDP ユニット内で非一様な `requires_grad` が混在することを許可します。
* `--fsdp_cpu_ram_efficient_loading` (`str`) -- true の場合、最初のプロセスのみが事前学習済みモデルのチェックポイントをロードし、他のすべてのプロセスは重みが空になります。このオプションを使用する場合は、`--fsdp_sync_module_states` を True にする必要があります。
* `--fsdp_sync_module_states` (`str`) -- true の場合、個別にラップされた各 FSDP ユニットが、rank 0 からモジュールのパラメータをブロードキャストします。
* `--fsdp_activation_checkpointing` (`bool`) -- 前向きパスの間で中間アクティベーションを解放し、プレースホルダーとしてチェックポイントを保持するかどうかを決定します

**Megatron-LM の引数**:

`use_megatron_lm` が渡されるか、`accelerate config` 経由で Megatron-LM が設定されている場合のみ、以下の引数が有用です:

* `--megatron_lm_tp_degree` (``) -- Megatron-LM の Tensor Parallelism (TP) 度。
* `--megatron_lm_pp_degree` (``) -- Megatron-LMのパイプライン並列化 (PP) の度合い。
* `--megatron_lm_num_micro_batches` (``) -- PP 度が 1 より大きい場合の Megatron-LM のマイクロバッチ数。
* `--megatron_lm_sequence_parallelism` (``) - TP の度合いが 1 より大きい場合、Sequence Parallelism を有効にするかどうか（true|false）を決定します。
* `--megatron_lm_recompute_activations` (``) - Selective Activation Recomputation を有効にするかどうか (true|false) を決定します。
* `--megatron_lm_use_distributed_optimizer` (``) -- Data Parallel (DP) rank 間でオプティマイザの状態と勾配をシャードする分散オプティマイザを使用するかどうか（true|false）を決定します。
* `--megatron_lm_gradient_clipping` (``) - Megatron-LMの、グローバルL2ノルムに基づく勾配クリッピングの値（無効にする場合は0）。

**FP8 引数**:

* `--fp8_backend` (`str`) -- FP8での学習に使用するバックエンドを選択します（`ao`または`te`）
* `--fp8_use_autocast_during_eval` (`bool`) -- 評価モード中に FP8 オートキャストを使用するかどうか（`--fp8_backend=te` が渡された場合のみ有効）。一般的に、このオプションを渡さない方が、より良い指標が得られます。
* `--fp8_margin` (`int`) -- グラデーションのスケーリングに使用するマージン(`--fp8_backend=te` を渡した場合にのみ有効)。
* `--fp8_interval` (`int`) -- スケーリング係数を再計算する間隔を指定します(`--fp8_backend=te` を渡した場合にのみ有効)。
* `--fp8_format` (`str`) -- FP8 レシピで使用するフォーマット（`--fp8_backend=te` が渡された場合のみ有効）。
* `--fp8_amax_history_len` (`int`) -- スケーリング係数の計算に使用する履歴の長さ(`--fp8_backend=te` を渡した場合にのみ有効)。
* `--fp8_amax_compute_algo` (`str`) -- スケーリング係数の計算に使用するアルゴリズム。`--fp8_backend=te` を渡した場合にのみ有効です。
* `--fp8_override_linear_precision` (`Tuple[bool, bool, bool]`) -- `fprop`、`dgrad`、`wgrad` の GEMM を高精度で実行するかどうかを指定します。

**AWS SageMaker 引数**:

以下の引数は、SageMakerでのトレーニング時のみ有用です

* `--aws_access_key_id AWS_ACCESS_KEY_ID` (`str`) -- Amazon SageMaker の学習ジョブを起動するために使用される AWS_ACCESS_KEY_ID
* `--aws_secret_access_key AWS_SECRET_ACCESS_KEY` (`str`) -- Amazon SageMaker の学習ジョブを起動するために使用される AWS_SECRET_ACCESS_KEY

## accelerate estimate-memory

**コマンド**:

`accelerate estimate-memory` または `accelerate-estimate-memory` または `python -m accelerate.commands.estimate`

Hub上でホストされている特定のモデルを、学習用の推定値を含めて読み込むために必要なvRAMの総量を推定します。`huggingface_hub`のインストールが必要です。

    推論を実行する際は、[こちらで参照されている通り](https://blog.eleuther.ai/transformer-math/)、結果に20%以下を足して全体の割り当てを計算するのが一般的です。将来的には、より詳細な推定値が利用可能になり、自動的に計算に組み込まれる予定です。

**使用方法**:

```bash
accelerate estimate-memory {MODEL_NAME} --library_name {LIBRARY_NAME} --dtypes {dtype_1} {dtype_2} ...
```

**必須引数**:

* `MODEL_NAME` (`str`)-- Hugging Face Hub 上のモデル名

**任意の引数**:

* `--library_name {timm,transformers}` (`str`) -- モデルが統合されているライブラリ（`transformers` など）。この情報が Hub に保存されていない場合のみ必要です
* `--dtypes {float32,float16,int8,int4}` (`[{float32,float16,int8,int4} ...]`) -- モデルに使用する dtype です。`float32`、`float16`、`int8`、`int4` のいずれか (または複数) を指定する必要があります。
* `--trust_remote_code` (`bool`) -- Hub上のリポジトリで独自のモデリングファイルとして定義されたカスタムモデルを許可するかどうか。このオプションは、ローカルマシン上でHubに存在するコードが実行されるため、信頼できるリポジトリかつコードを確認済みの場合にのみ渡すべきです。

## accelerate tpu-config

`accelerate tpu-config`

**使用方法**:

```bash
accelerate tpu-config [arguments]
```

**任意の引数**:
* `-h`、`--help`（`bool`）-- ヘルプメッセージを表示して終了します

**設定引数**:

`accelerate config`で設定できる引数。

* `--config_file` (`str`) -- accelerate で使用する設定ファイルへのパス。
* `--tpu_name` (`str`) -- 使用する TPU の名前。指定しない場合、設定ファイルで指定された TPU が使用されます。
* `--tpu_zone` (`str`) -- 使用する TPU のゾーンです。指定しない場合、設定ファイルで指定されたゾーンが使用されます。

**TPU引数**:

TPU内で実行されたオプションの引数。

* `--command_file` (`str`) -- Pod の起動時に実行するコマンドを含むファイルへのパス。
* `--command` (`str`) -- Podで実行するコマンド。複数回指定できます。
* `--install_accelerate` (`bool`) -- Pod に accelerate をインストールするかどうか。デフォルトは False です。
* `--accelerate_version` (`str`) -- Pod にインストールする accelerate のバージョンです。指定しない場合、最新の pypi バージョンが使用されます。GitHub からインストールするには 'dev' を指定してください。
* `--debug` (`bool`) -- 設定すると、コマンドを実行する代わりに、実行されるはずのコマンドを出力します。

## accelerate test

`accelerate test`または`accelerate-test`

`accelerate/test_utils/test_script.py` を実行して、🤗 Accelerate がシステムに正しく設定され、動作することを確認します。

**使用方法**:

```bash
accelerate test [arguments]
```

**任意の引数**:
* `--config_file CONFIG_FILE` (`str`) -- 設定ファイルを保存するために使用するパスです。デフォルトでは、キャッシュの保存場所にある default_config.yaml という名前のファイルになります。これは、環境変数 `HF_HOME` の内容に 'accelerate' を接尾辞として付加したディレクトリです。この環境変数が設定されていない場合は、キャッシュディレクトリ (`~/.cache` または `XDG_CACHE_HOME` の内容) に `huggingface` を接尾辞として付加したディレクトリになります。
* `-h`、`--help`（`bool`）-- ヘルプメッセージを表示して終了します

