加速文档

FP8

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

FP8

如下所示函数和类与基础的 FP8 实现相关

FP8RecipeKwargs

class accelerate.utils.FP8RecipeKwargs

  • backend (str可选) — 要使用的 FP8 引擎。必须为 "msamp" (MS-AMP) 或 "te" (TransformerEngine) 之一。如果不传递,则将使用环境中的任何可用项,并优先考虑 MS-AMP。
  • use_autocast_during_evalbool可选,默认为 False)—在评估模式中是否使用 FP8 自动转换。当 False 时,通常可以获得更好的指标。
  • marginint可选,默认为 0)—用于梯度缩放的间隔。
  • fp8_format (str可选,默认为“HYBRID”)——用于 FP8 配方的格式。必须是HYBRIDE4M3之一。(通常用于训练的HYBRID、用于评估的E4M3
  • amax_history_len (int可选,默认为 1024)——用于比例因子计算的历史记录的长度
  • amax_compute_algo (str, 可选,默认值为“most_recent”)——用于缩放因子计算的算法。值必须为 maxmost_recent 之一。
  • override_linear_precision (bool 的三个 tuple可选,默认值为 (False, False, False)) —是否以更高的精度执行 fpropdgradwgrad GEMM。
  • optimization_level (str), 依次为 O1O2。 (默认为 O2) — 该级别 8 位集体通信应与 MS-AMP 结合使用。 通常情况下:
    • O1:加权梯度和 all_reduce 通信以 fp8 格式执行,从而减少 GPU 内存使用量并提高通信带宽
    • O2:一阶优化器状态为 8 位,而二阶状态为 FP16 格式。仅在使用 Adam 或 AdamW 时可用。 它能维持精度,且有可能节省最多的内存。
    • 03:专门针对 DeepSpeed,实现一些功能,以便以 FP8 格式存储模型的权重和主权重。如果选择了 fp8,并且启用了 deepspeed,那么默认情况下将使用此选项。(目前不可用)。

加速器 中使用此对象可自定义 FP8 混合精度训练的配方初始化,并使用 transformer-enginems-amp

如需了解有关 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")

convert_model

accelerate.utils.convert_model

< >

( 模型 to_transformer_engine = True _convert_linear = True _convert_ln = True )

递归地将模型的线性层和层规范层转换为其对应于transformers_engine

has_transformer_engine_layers

accelerate.utils.has_transformer_engine_layers

< >

( 模型 )

返回指定模型是否具有某个 transformer_engine 层。

contextual_fp8_autocast

accelerate.utils.contextual_fp8_autocast

< >

( model_forward fp8_recipe use_during_eval = False )

模型的 forward 方法的包装,用于应用 FP8 自动转换。具有上下文感知,这意味着它默认禁用评估模式下的 FP8 自动转换,这样做通常更好,可以获得更准确的度量。

apply_fp8_autowrap

accelerate.utils.apply_fp8_autowrap

< >

( 模型 fp8_配制_处理 )

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

< > 更新在 GitHub 上