Accelerate documentation
命令行
命令行
以下是所有可用的 🤗 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 仓库上提交 issue 时,应始终使用此命令。
用法:
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 训练。
资源选择参数:
以下参数可用于微调可用硬件的使用方式
--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) — 额外的会合配置(<key1>=<value1>,<key2>=<value2>,…)。--max_restarts(int) — 失败前工作进程组的最大重启次数。--monitor_interval(int) — 监控 worker 状态的间隔,单位为秒。
TPU 参数:
以下参数仅在传入 tpu 或通过 accelerate config 配置 TPU 训练时才有用:
--tpu_cluster(bool) — 是否使用 GCP TPU pod 进行训练。--tpu_use_sudo(bool) — 在每个 pod 中运行 TPU 训练脚本时是否使用sudo。--vm(str) — 单个 Compute VM 实例名称的列表。如果未提供,则假定使用实例组。适用于 TPU pods。--env(str) — 要在 Compute VM 实例上设置的环境变量列表。适用于 TPU pods。--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 层类名的逗号分隔列表(区分大小写),例如MixtralSparseMoeBlockQwen2MoeSparseMoeBlock、JetMoEAttention,JetMoEBlock
完全分片数据并行参数:
以下参数仅在传递 use_fsdp 或通过 accelerate config 配置 Fully Sharded Data Parallelism 时才有用:
--fsdp_offload_params(str) — 决定是否(true|false)将参数和梯度卸载到 CPU。--fsdp_min_num_params(int) — FSDP 用于 Default Auto Wrapping 的最小参数量。--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 单元将从 rank 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(“)— 决定当 TP 度 > 1 时是否启用 Sequence Parallelism(true|false)。--megatron_lm_recompute_activations(“)— 决定是否(true|false)启用选择性激活重计算。--megatron_lm_use_distributed_optimizer(“) — 决定是否(true|false)使用分布式优化器,该优化器会将优化器状态和梯度分片到各个数据并行(DP)rank 上。--megatron_lm_gradient_clipping(“)— 基于全局 L2 范数的 Megatron-LM 梯度裁剪值(设为 0 以禁用)。
FP8 参数:
--fp8_backend(str) — 选择用于 FP8 训练的 backend(ao或te)--fp8_use_autocast_during_eval(bool) — 是否在 eval 模式下使用 FP8 autocast(仅在传入--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和wgradGEMM。
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} ...]) — 模型使用的 dtypes,必须是float32、float16、int8和int4中的一个(或多个)--trust_remote_code(bool) — 是否允许使用在 Hub 上通过其自身的 modeling 文件定义的自定义模型。此选项仅应针对您信任且已阅读过代码的仓库使用,因为它会在您的本地机器上执行 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)— 显示帮助信息并退出