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

class 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을 더 높은 정밀도로 실행할지 여부.

transformer-engine를 사용한 FP8 혼합 정밀도 훈련의 레시피 초기화를 사용자 정의하려면 Accelerator에서 이 객체를 사용하세요.

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: torch._scaled_mm 연산에서 런타임 오류를 방지하기 위해 행렬 차원을 16으로 나누어 떨어지도록 패딩합니다.
    • enable_fsdp_float8_all_gather=True: FSDP2의 FP8 all-gather를 활성화합니다. 이는 all-gather 연산 전에 매개변수를 캐스팅하여 메모리 대역폭을 절약하며, BF16 대비 50%의 대역폭 절감 효과를 제공합니다.

    Float8LinearConfig 인스턴스를 직접 제공하여 이러한 기본값을 재정의할 수 있습니다.

  • module_filter_func (Callable, 선택 사항, 기본값 None) — 모듈과 레이어 이름을 인자로 받아 해당 모듈을 FP8로 변환할지 여부를 나타내는 불리언을 반환해야 하는 선택적 함수입니다. 기본값은 accelerate.utils.ao.filter_linear_layers입니다. 사용 예시를 확인해 보세요.

torchao FP8를 사용한 FP8 혼합 정밀도 훈련 레시피의 초기화를 사용자 정의하려면 Accelerator에서 이 객체를 사용하세요.

convert_model

accelerate.utils.convert_model

< >

( modelto_transformer_engine = True_convert_linear = True_convert_ln = True )

모델의 linear 및 layernorm 레이어를 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 autocast를 적용하기 위한 래퍼입니다. 컨텍스트를 인식하므로, 기본적으로 eval 모드에서는 FP8 autocast를 비활성화합니다. 이는 일반적으로 더 정확한 계측을 위해 권장되는 방식입니다.

apply_fp8_autowrap

accelerate.utils.apply_fp8_autowrap

< >

( modelfp8_recipe_handler )

forward 메서드에 FP8 컨텍스트 매니저를 적용합니다

Update on GitHub