Accelerate documentation

FP8

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.15.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

FP8

以下是与底层 FP8 实现相关的函数和类

TERecipeKwargs

类 accelerate.utils.TERecipeKwargs

< >

( use_autocast_during_eval: bool | None = Nonemargin: int | None = Noneinterval: int | None = Nonefp8_format: typing.Literal['HYBRID', 'E4M3', 'E5M2'] = Noneamax_history_len: int | None = Noneamax_compute_algo: typing.Literal['max', 'most_recent'] = Noneoverride_linear_precision: tuple = Noneuse_mxfp8_block_scaling: bool | None = None )

参数

  • use_autocast_during_eval (bool,可选,默认为 False) — 是否在 eval 模式下使用 FP8 autocast。通常将此参数设为 False 时,指标表现更好。
  • margin (int,可选,默认为 0) — 用于梯度缩放的边距。
  • interval (int,可选,默认为 1) — 用于指定重新计算缩放因子的频率间隔。
  • fp8_format (str, 可选, 默认为 “HYBRID”) — 用于 FP8 配方的格式。必须是 HYBRID、E4M3 或 E5M2 之一。(通常训练使用 HYBRID,评估使用 E4M3 或 E5M2)
  • amax_history_len (int,可选,默认为 1024) — 用于计算缩放因子的历史长度
  • amax_compute_algo (str,可选,默认为 “most_recent”) — 用于计算缩放因子的算法。必须是 max 或 most_recent 之一。
  • override_linear_precision (tuple of three bool, 可选, 默认为 (False, False, False)) — 是否以更高精度执行 fprop、dgrad 和 wgrad GEMM。

在您的 Accelerator 中使用此对象,以自定义使用 transformer-engine 进行 FP8 混合精度训练的配方初始化。

有关 args 的更多信息,请参阅 API 文档。

from accelerate import Accelerator
from accelerate.utils import TERecipeKwargs

kwargs = TERecipeKwargs(fp8_format="HYBRID")
accelerator = Accelerator(mixed_precision="fp8", kwargs_handlers=[kwargs])

AORecipeKwargs

类 accelerate.utils.AORecipeKwargs

< >

( config: ForwardRef('Float8LinearConfig') | None = Nonemodule_filter_func: typing.Callable | None = Nonepad_inner_dim: bool | None = Noneenable_fsdp_float8_all_gather: bool | None = None )

参数

  • config (torchao.float8.Float8LinearConfig, 可选, 默认为 None) — FP8 训练的配置。如果 None, 为大多数用例提供了合理的默认值:
    • pad_inner_dim=True:将矩阵维度填充为 16 的倍数,这是 torch._scaled_mm 操作所必需的,可防止运行时错误。
    • enable_fsdp_float8_all_gather=True:为 FSDP2 启用 FP8 all-gather。通过在 all-gather 操作前将参数转换为 FP8,可节省内存带宽,与 BF16 相比节省 50% 的带宽。

    您可以通过提供自己的 Float8LinearConfig 实例来覆盖这些默认值。

  • module_filter_func (Callable,可选,默认为 None) — 可选函数,必须接收一个模块和层名称作为输入,并返回一个布尔值,指示是否应将该模块转换为 FP8。默认为 accelerate.utils.ao.filter_linear_layers。请参阅该函数以获取示例。

在您的 Accelerator 中使用此对象,以自定义使用 torchao FP8 进行 FP8 混合精度训练的配方初始化。

convert_model

accelerate.utils.convert_model

< >

( modelto_transformer_engine = True_convert_linear = True_convert_ln = True )

递归地将模型中的线性层和层归一化层转换为它们的 transformers_engine 对应层。

has_transformer_engine_layers

accelerate.utils.has_transformer_engine_layers

< >

( model )

返回给定的模型是否包含某些 transformer_engine 层。

contextual_fp8_autocast

accelerate.utils.contextual_fp8_autocast

< >

( model_forwardfp8_recipeuse_during_eval = False )

用于模型 forward 方法的包装器,以应用 FP8 自动转换。它具有上下文感知能力,即默认情况下会在 eval 模式下禁用 FP8 自动转换,这通常能带来更准确的指标。

apply_fp8_autowrap

accelerate.utils.apply_fp8_autowrap

< >

( modelfp8_recipe_handler )

将 FP8 上下文管理器应用于模型的前向方法

Update on GitHub