Accelerate 文件
命令列
並獲得增強的文件體驗
開始使用
命令列
下面是 🤗 Accelerate 中所有可用命令及其引數的列表
accelerate config
命令:
accelerate config
或 accelerate-config
啟動一系列提示,為您的訓練系統建立並儲存一個 default_config.yml
配置檔案。應始終在您的機器上首先執行此命令。
用法:
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 建立一個預設配置檔案,僅設定幾個標誌。
用法:
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
使用最新的預設值更新現有的配置檔案,同時保留舊配置。
用法:
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 倉庫上提問題時應始終使用此命令。
用法:
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
在分散式系統上使用正確的引數啟動指定的指令碼。
用法:
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 訓練。--ipex
(bool
) — 是否應啟動英特爾 PyTorch 擴充套件(IPEX)訓練。**此引數已棄用,將在 Accelerate v1.10 中移除**
資源選擇引數:
以下引數對於微調如何使用可用硬體非常有用
--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 進行訓練。--use_xpu
(bool
) — 是否使用 IPEX 外掛來加速 XPU 上的訓練。**此引數已棄用並被忽略,將在 Accelerate v1.10 中移除**
分散式 GPU 引數:
以下引數僅在傳遞 `multi_gpu` 或透過 `accelerate config` 配置多 GPU 訓練時有用
--gpu_ids
(str
) — 在此機器上用於訓練的 GPU(按 id),以逗號分隔的列表形式表示--same_network
(bool
) — 用於多節點訓練的所有機器是否都存在於同一個區域網上。--machine_rank
(int
) — 啟動此指令碼的機器的排名。--main_process_ip
(str
) — 排名為 0 的機器的 IP 地址。--main_process_port
(int
) — 用於與排名為 0 的機器通訊的埠。-t
,--tee
(str
) — 將標準流輸出到日誌檔案,並同時輸出到控制檯。--log_dir
(str
) — 當使用 torchrun/torch.distributed.run 作為啟動器時,用於日誌檔案的基礎目錄。與 --tee 一起使用可將標準流資訊重定向到日誌檔案。--role
(str
) — 使用者定義的 worker 角色。--rdzv_backend
(str
) — 使用的 rendezvous 方法,如 ‘static’(預設)或 ‘c10d’--rdzv_conf
(str
) — 附加的 rendezvous 配置(<key1>=<value1>,<key2>=<value2>,…)。--max_restarts
(int
) — 在失敗前,worker 組的最大重啟次數。--monitor_interval
(int
) — 監控 worker 狀態的間隔時間(秒)。
TPU 引數:
以下引數僅在傳遞 `tpu` 或透過 `accelerate config` 配置 TPU 訓練時有用
--tpu_cluster
(bool
) — 是否使用 GCP TPU pod 進行訓練。--tpu_use_sudo
(bool
) — 在每個 pod 中執行 TPU 訓練指令碼時是否使用 `sudo`。--vm
(str
) — 單個計算虛擬機器例項名稱的列表。如果未提供,我們假設使用例項組。適用於 TPU pod。--env
(str
) — 在計算虛擬機器例項上設定的環境變數列表。適用於 TPU pod。--main_training_function
(str
) — 在您的指令碼中要執行的主函式的名稱(僅用於 TPU 訓練)。--downcast_bf16
(bool
) — 在 TPU 上使用 bf16 精度時,是同時將 float 和 double 張量都轉換為 bfloat16,還是讓 double 張量保持為 float32。
DeepSpeed 引數:
以下引數僅在傳遞 `use_deepspeed` 或透過 `accelerate config` 配置 `deepspeed` 時有用
--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
) — 決定是否(true|false)啟用 `deepspeed.zero.Init` 來構建大規模模型。僅適用於 DeepSpeed ZeRO Stage-3。--zero3_save_16bit_model
(str
) — 決定在使用 ZeRO Stage-3 時是否(true|false)儲存 16 位模型權重。僅適用於 DeepSpeed ZeRO Stage-3。--deepspeed_hostfile
(str
) — 用於配置多節點計算資源的 DeepSpeed hostfile。--deepspeed_exclusion_filter
(str
) — 在使用多節點設定時,DeepSpeed 的排除過濾器字串。--deepspeed_inclusion_filter
(str
) — 在使用多節點設定時,DeepSpeed 的包含過濾器字串。--deepspeed_multinode_launcher
(str
) — 要使用的 DeepSpeed 多節點啟動器。--deepspeed_moe_layer_cls_names
(str
) — 逗號分隔的 transformer MoE 層類名列表(區分大小寫),用於包裝,例如 `MixtralSparseMoeBlock` `Qwen2MoeSparseMoeBlock`, `JetMoEAttention,JetMoEBlock`
完全分片資料並行引數:
以下引數僅在傳遞 `use_fsdp` 或透過 `accelerate config` 配置完全分片資料並行時有用
--fsdp_offload_params
(str
) — 決定是否(true|false)將引數和梯度解除安裝到 CPU。--fsdp_min_num_params
(int
) — FSDP 預設自動包裝的最小引數數。--fsdp_sharding_strategy
(int
) — FSDP 的分片策略。--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 的狀態字典型別。--fsdp_forward_prefetch
(str
) — FSDP 前向預取。--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 單元將從排名為 0 的程序廣播模組引數。--fsdp_activation_checkpointing
(bool
) — 決定是否在前向傳播期間釋放中間啟用,並留下一個檢查點作為佔位符
Megatron-LM 引數:
以下引數僅在傳遞 `use_megatron_lm` 或透過 `accelerate config` 配置 Megatron-LM 時有用
--megatron_lm_tp_degree
(“) — Megatron-LM 的張量並行 (TP) 度。--megatron_lm_pp_degree
(“) — Megatron-LM 的流水線並行 (PP) 度。--megatron_lm_num_micro_batches
(“) — 當 PP 度 > 1 時,Megatron-LM 的微批次數。--megatron_lm_sequence_parallelism
(“) — 決定是否(true|false)在 TP 度 > 1 時啟用序列並行。--megatron_lm_recompute_activations
(“) — 決定是否(true|false)啟用選擇性啟用重計算。--megatron_lm_use_distributed_optimizer
(“) — 決定是否(true|false)使用分散式最佳化器,該最佳化器在資料並行 (DP) 排名之間分片最佳化器狀態和梯度。--megatron_lm_gradient_clipping
(“) — Megatron-LM 基於全域性 L2 範數的梯度裁剪值(0 表示停用)。
FP8 引數:
--fp8_backend
(str
) — 選擇一個後端以 FP8 進行訓練(`te` 或 `msamp`)--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。--fp8_opt_level
(str
) — MS-AMP 應使用何種級別的 8 位集體通訊(僅在傳遞 `--fp8_backend=msamp` 時有用)
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`。
在執行推理時,通常在結果上增加 ≤20% 作為總體分配,如此處引用的。我們未來將有更詳盡的估算,並將自動包含在計算中。
用法:
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} ...]
) — 用於模型的資料型別,必須是 `float32`、`float16`、`int8` 和 `int4` 中的一個(或多個)--trust_remote_code
(bool
) — 是否允許 Hub 上自定義模型在其自己的建模檔案中定義。此選項僅應對您信任且已閱讀其程式碼的倉庫傳遞,因為它將在您的本地機器上執行 Hub 上的程式碼。
accelerate tpu-config
accelerate tpu-config
用法:
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 版本。指定 ‘dev’ 以從 GitHub 安裝。--debug
(bool
) — 如果設定,將列印將要執行的命令,而不是實際執行它。
accelerate test
accelerate test
或 accelerate-test
執行 `accelerate/test_utils/test_script.py` 以驗證 🤗 Accelerate 是否在您的系統上正確配置並執行。
用法:
accelerate test [arguments]
可選引數:
--config_file CONFIG_FILE
(str
) — 用於儲存配置檔案的路徑。預設將儲存在快取位置中名為 default_config.yaml 的檔案中,該位置為環境變數 `HF_HOME` 的內容後跟 ‘accelerate’,或者如果您沒有這樣的環境變數,則是您的快取目錄(`~/.cache` 或 `XDG_CACHE_HOME` 的內容)後跟 `huggingface`。-h
,--help
(bool
) — 顯示幫助資訊並退出