Accelerate 文档

命令行

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

命令行

下面是 🤗 Accelerate 中所有可用命令及其参数的列表

accelerate config

命令:

accelerate configaccelerate-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 defaultaccelerate-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 updateaccelerate-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 envaccelerate-envpython -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 launchaccelerate-launchpython -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-memoryaccelerate-estimate-memorypython -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 testaccelerate-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) — 显示帮助信息并退出
< > 在 GitHub 上更新