Accelerate 文档

全分片数据并行实用工具

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

全分片数据并行实用工具

enable_fsdp_ram_efficient_loading

accelerate.utils.enable_fsdp_ram_efficient_loading

< >

( )

在环境中启用 Hugging Face 模型 для FSDP 的 RAM 高效加载。

disable_fsdp_ram_efficient_loading

accelerate.utils.disable_fsdp_ram_efficient_loading

< >

( )

在环境中禁用 Hugging Face 模型 для FSDP 的 RAM 高效加载。

merge_fsdp_weights

accelerate.utils.merge_fsdp_weights

< >

( checkpoint_dir: str output_path: str safe_serialization: bool = True remove_checkpoint_dir: bool = False )

参数

  • checkpoint_dir (str) — 包含 FSDP 检查点的目录(可以是模型或优化器)。
  • output_path (str) — 保存合并检查点的路径。
  • safe_serialization (bool, optional, defaults to True) — 是否使用 safetensors 保存合并的权重(推荐)。
  • remove_checkpoint_dir (bool, optional, defaults to False) — 是否在合并后删除检查点目录。

将分片 FSDP 模型检查点中的权重合并为单个组合检查点。如果模型使用了 SHARDED_STATE_DICT,则应使用此方法。如果 safe_serialization 为 True,权重将保存到 {output_path}/model.safetensors,否则保存到 pytorch_model.bin

注意:这是一个 CPU 密集型过程。

FullyShardedDataParallelPlugin

class accelerate.FullyShardedDataParallelPlugin

< >

( sharding_strategy: Union = None backward_prefetch: Union = None mixed_precision_policy: Union = None auto_wrap_policy: Union = None cpu_offload: Union = None ignored_modules: Optional = None state_dict_type: Union = None state_dict_config: Union = None optim_state_dict_config: Union = None limit_all_gathers: bool = True use_orig_params: bool = None param_init_fn: Optional = None sync_module_states: bool = None forward_prefetch: bool = None activation_checkpointing: bool = None cpu_ram_efficient_loading: bool = None transformer_cls_names_to_wrap: Optional = None min_num_params: Optional = None )

参数

  • sharding_strategy (Union[str, torch.distributed.fsdp.ShardingStrategy], defaults to 'FULL_SHARD') — 要使用的分片策略。应为 strtorch.distributed.fsdp.fully_sharded_data_parallel.ShardingStrategy 的实例。
  • backward_prefetch (Union[str, torch.distributed.fsdp.BackwardPrefetch], defaults to 'NO_PREFETCH') — 要使用的后向预取策略。应为 strtorch.distributed.fsdp.fully_sharded_data_parallel.BackwardPrefetch 的实例。
  • mixed_precision_policy (Optional[Union[dict, torch.distributed.fsdp.MixedPrecision]], defaults to None) — 启用带有 FullyShardedDataParallel 的混合精度训练的配置。如果传入 dict,则应具有以下键:param_dtypereduce_dtypebuffer_dtype
  • auto_wrap_policy (Optional(Union[Callable, Literal["transformer_based_wrap", "size_based_wrap", "no_wrap"]]), defaults to NO_WRAP) -- 一个可调用对象或字符串,用于指定使用 FSDP 递归包装层的策略。如果是一个字符串,则必须是 transformer_based_wrapsize_based_wrapno_wrap 之一。有关其外观的指导,请参阅 torch.distributed.fsdp.wrap.size_based_wrap_policy`。
  • cpu_offload (Union[bool, torch.distributed.fsdp.CPUOffload], defaults to False) — 是否将参数卸载到 CPU。应为 bool 类型或 torch.distributed.fsdp.fully_sharded_data_parallel.CPUOffload 的实例,默认为 False
  • ignored_modules (Optional[Iterable[torch.nn.Module]], defaults to None) — 使用 FSDP 封装时要忽略的模块列表,默认为 None
  • state_dict_type (Union[str, torch.distributed.fsdp.StateDictType], defaults to 'FULL_STATE_DICT') — 要使用的状态字典类型。如果为字符串,则必须是 full_state_dictlocal_state_dictsharded_state_dict 之一,默认为 'FULL_STATE_DICT'
  • state_dict_config (Optional[Union[torch.distributed.fsdp.FullStateDictConfig, torch.distributed.fsdp.ShardedStateDictConfig], defaults to None) — 要使用的状态字典配置。如果未传入,则根据 state_dict_type 确定,默认为 None
  • optim_state_dict_config (Optional[Union[torch.distributed.fsdp.FullOptimStateDictConfig, torch.distributed.fsdp.ShardedOptimStateDictConfig], defaults to None) — 要使用的优化器状态字典配置。如果未传入,则根据 state_dict_type 确定,默认为 None
  • limit_all_gathers (bool, defaults to True) — 是否让 FSDP 显式同步 CPU 线程,以防止过多的正在进行的 all-gather 操作。此布尔值仅影响调度 all-gather 操作的分片策略。启用此功能可以帮助减少 CUDA malloc 重试的次数,默认为 True
  • use_orig_params (bool, defaults to False) — 是否为优化器使用原始参数,默认为 False
  • param_init_fn (Optional[Callable[[torch.nn.Module], None], defaults to None) — 一个 Callable[torch.nn.Module] -> None,指定当前在 meta 设备上的模块应如何初始化到实际设备上。仅当 sync_module_statesTrue 时适用。默认情况下是一个 lambda 函数,它在模块上调用 to_empty,默认为 None
  • sync_module_states (bool, defaults to False) — 是否让每个单独封装的 FSDP 单元从 rank 0 广播模块参数,以确保它们在初始化后在所有 rank 上都相同。除非 cpu_ram_efficient_loadingTrue,否则默认为 False,如果 cpu_ram_efficient_loadingTrue,则强制启用。
  • forward_prefetch (bool, defaults to False) — 是否让 FSDP 在前向传播中显式预取下一个即将到来的 all-gather 操作。仅与静态图一起使用,默认为 False
  • activation_checkpointing (bool, defaults to False) — 一种通过清除某些层的激活并在反向传播期间重新计算它们来减少内存使用量的技术。实际上,这用额外的计算时间换取了更少的内存使用量,默认为 False
  • cpu_ram_efficient_loading (bool, defaults to None) — 如果为 True,则只有第一个进程加载预训练模型检查点,而所有其他进程都具有空权重。仅适用于 Transformers。使用此选项时,sync_module_states 需要为 True,默认为 None
  • transformer_cls_names_to_wrap (Optional[List[str]], defaults to None) — 要封装的 transformer 层类名称列表。仅当 auto_wrap_policytransformer_based_wrap 时适用,默认为 None
  • min_num_params (Optional[int], defaults to None) — 模块必须具有才能被封装的最小参数数量。仅当 auto_wrap_policysize_based_wrap 时适用,默认为 None

此插件用于启用完全分片数据并行。

set_auto_wrap_policy

< >

( model )

给定 model,基于传入的策略以及是否可以使用 transformer_cls_to_wrap 创建 auto_wrap_policy

set_mixed_precision

< >

( mixed_precision buffer_autocast = False override = False )

为 FSDP 设置混合精度策略。

set_state_dict_type

< >

( state_dict_type = None )

根据 StateDictType 设置状态字典配置。

< > 更新 在 GitHub 上