加速文档

Kwargs 处理程序

Hugging Face's logo
加入 Hugging Face 社区

并获得增强文档体验

开始使用

Kwargs 处理程序

以下对象可以传递给主 Accelerator,以自定义如何创建与分布式训练或混合精度相关的某些 PyTorch 对象。

AutocastKwargs

class accelerate.AutocastKwargs

< >

( enabled: bool = True cache_enabled: bool = None )

在您的 Accelerator 中使用此对象来自定义 torch.autocast 的行为。有关每个参数的更多信息,请参阅此 上下文管理器 的文档。

示例

from accelerate import Accelerator
from accelerate.utils import AutocastKwargs

kwargs = AutocastKwargs(cache_enabled=True)
accelerator = Accelerator(kwargs_handlers=[kwargs])

DistributedDataParallelKwargs

class accelerate.DistributedDataParallelKwargs

< >

( dim: int = 0 broadcast_buffers: bool = True bucket_cap_mb: int = 25 find_unused_parameters: bool = False check_reduction: bool = False gradient_as_bucket_view: bool = False static_graph: bool = False comm_hook: DDPCommunicationHookType = <DDPCommunicationHookType.NO: 'no'> comm_wrapper: Literal = <DDPCommunicationHookType.NO: 'no'> comm_state_option: dict = <factory> )

在您的 Accelerator 中使用此对象来自定义您的模型如何包装在 torch.nn.parallel.DistributedDataParallel 中。有关每个参数的更多信息,请参阅此 包装器 的文档。

gradient_as_bucket_view 仅在 PyTorch 1.7.0 及更高版本中可用。

static_graph 仅在 PyTorch 1.11.0 及更高版本中可用。

示例

from accelerate import Accelerator
from accelerate.utils import DistributedDataParallelKwargs

kwargs = DistributedDataParallelKwargs(find_unused_parameters=True)
accelerator = Accelerator(kwargs_handlers=[kwargs])

FP8RecipeKwargs

class accelerate.utils.FP8RecipeKwargs

< >

( backend: Literal = None use_autocast_during_eval: bool = None opt_level: Literal = None margin: int = None interval: int = None fp8_format: Literal = None amax_history_len: int = None amax_compute_algo: Literal = None override_linear_precision: Tuple = None )

参数

  • backend (str, 可选) — 要使用的 FP8 引擎。必须是 "msamp" (MS-AMP) 或 "te" (TransformerEngine) 之一。如果未传递,将使用环境中可用的任何一个,优先考虑 MS-AMP。
  • use_autocast_during_eval (bool, 可选, 默认为 False) — 是否在评估模式下使用 FP8 自动转换。通常,当此值为 False 时,会获得更好的指标。
  • margin (int, 可选, 默认为 0) — 用于梯度缩放的边距。
  • interval (int, 可选, 默认为 1) — 用于重新计算缩放因子的频率。
  • fp8_format (str, 可选, 默认为 “HYBRID”) — 用于 FP8 食谱的格式。 必须是 HYBRIDE4M3 之一。 (通常训练使用 HYBRID,评估使用 E4M3
  • amax_history_len (int, 可选, 默认为 1024) — 用于计算缩放因子的历史记录长度
  • amax_compute_algo (str, 可选, 默认为 “most_recent”) — 用于计算缩放因子的算法。 必须是 maxmost_recent 之一。
  • override_linear_precision (三个 booltuple, 可选, 默认为 (False, False, False)) — 是否以更高精度执行 fpropdgradwgrad GEMM。
  • optimization_level (str), O1O2 之一。 (默认值为 O2) — 使用 MS-AMP 时应使用哪种级别的 8 位集体通信。 通常情况下:
    • O1: 权重梯度和 all_reduce 通信以 fp8 完成,降低了 GPU 内存使用量和通信带宽
    • O2: 一阶优化器状态为 8 位,二阶状态为 FP16。 仅在使用 Adam 或 AdamW 时可用。 这可以保持准确性,并可能节省最多的内存。
    • 03: 特别是对于 DeepSpeed,实现功能,以便模型的权重和主权重存储在 FP8 中。 如果选择了 fp8 并且启用了 deepspeed,则默认情况下将使用它。 (目前不可用)。

在您的 Accelerator 中使用此对象,以使用 transformer-enginems-amp 自定义 FP8 混合精度训练的食谱初始化。

有关 transformer-engine 参数的更多信息,请参阅 API 文档

有关 ms-amp 参数的更多信息,请参阅优化级别 文档

from accelerate import Accelerator
from accelerate.utils import FP8RecipeKwargs

kwargs = FP8RecipeKwargs(backend="te", fp8_format="HYBRID")
accelerator = Accelerator(mixed_precision="fp8", kwargs_handlers=[kwargs])

要使用 MS-AMP 作为引擎,请传递 backend="msamp"optimization_level

kwargs = FP8RecipeKwargs(backend="msamp", optimization_level="02")

ProfileKwargs

class accelerate.ProfileKwargs

< >

( activities: Optional = None schedule_option: Optional = None on_trace_ready: Optional = None record_shapes: bool = False profile_memory: bool = False with_stack: bool = False with_flops: bool = False with_modules: bool = False output_trace_dir: Optional = None )

参数

  • schedule_option (Dict[str, int], 可选, 默认为 None) — 用于分析器的调度选项。 可用键为 waitwarmupactiverepeatskip_first。 分析器将跳过前 skip_first 个步骤,然后等待 wait 个步骤,然后对接下来的 warmup 个步骤进行预热,然后对接下来的 active 个步骤进行主动记录,然后从 wait 个步骤开始重复循环。 可选的循环次数由 repeat 参数指定,值为零表示循环将持续到分析完成。
  • on_trace_ready (Callable, 可选, 默认为 None) — 在分析过程中,每当调度返回 ProfilerAction.RECORD_AND_SAVE 时调用的可调用对象。
  • record_shapes (bool, 可选, 默认为 False) — 保存有关操作符输入形状的信息。
  • profile_memory (bool, 可选, 默认为 False) — 跟踪张量内存分配/释放
  • with_stack (bool, 可选, 默认为 False) — 为操作符记录源信息(文件和行号)。
  • with_flops (bool, 可选, 默认为 False) — 使用公式估计特定操作符的 FLOPS
  • with_modules (bool, 可选, 默认为 False) — 记录对应于操作符调用栈的模块层次结构(包括函数名称)。
  • output_trace_dir (str, 可选, 默认为 None) — 以 Chrome JSON 格式导出收集的跟踪。 Chrome 使用 ‘chrome://tracing’ 查看 json 文件。 默认为 None,表示分析不存储 json 文件。

在你的 Accelerator 中使用此对象来自定义分析器的初始化。 请参阅此 上下文管理器 的文档,以了解有关每个参数的更多信息。

torch.profiler 仅在 PyTorch 1.8.1 及更高版本中可用。

示例

from accelerate import Accelerator
from accelerate.utils import ProfileKwargs

kwargs = ProfileKwargs(activities=["cpu", "cuda"])
accelerator = Accelerator(kwargs_handlers=[kwargs])

build

< >

( ) torch.profiler.profile

返回

torch.profiler.profile

分析器对象。

使用当前配置构建分析器对象。

GradScalerKwargs

Accelerator 中使用此对象来自定义混合精度的行为,特别是如何创建使用的 torch.cuda.amp.GradScaler。有关每个参数的更多信息,请参阅此 缩放器 的文档。

GradScaler 仅在 PyTorch 1.5.0 及更高版本中可用。

示例

from accelerate import Accelerator
from accelerate.utils import GradScalerKwargs

kwargs = GradScalerKwargs(backoff_filter=0.25)
accelerator = Accelerator(kwargs_handlers=[kwargs])

InitProcessGroupKwargs

class accelerate.InitProcessGroupKwargs

< >

( backend: Optional = 'nccl' init_method: Optional = None timeout: Optional = None )

在您的 Accelerator 中使用此对象来自定义分布式进程的初始化。有关每个参数的更多信息,请参阅此 方法 的文档。

注意:如果 timeout 设置为 None,则默认值将基于 backend 的设置方式。

from datetime import timedelta
from accelerate import Accelerator
from accelerate.utils import InitProcessGroupKwargs

kwargs = InitProcessGroupKwargs(timeout=timedelta(seconds=800))
accelerator = Accelerator(kwargs_handlers=[kwargs])

KwargsHandler

class accelerate.utils.KwargsHandler

< >

( )

实现数据类 to_kwargs() 方法的内部混合。

to_kwargs

< >

( )

返回一个字典,其中包含与该类默认值不同的属性和值。

< > 在 GitHub 上更新