Accelerate documentation
FP8
FP8
다음은 기본 FP8 구현과 관련된 함수 및 클래스입니다
TERecipeKwargs
class accelerate.utils.TERecipeKwargs
< source >( 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 (
tupleof threebool, 선택 사항, 기본값(False, False, False)) —fprop,dgrad,wgradGEMM을 더 높은 정밀도로 실행할지 여부.
transformer-engine를 사용한 FP8 혼합 정밀도 훈련의 레시피 초기화를 사용자 정의하려면 Accelerator에서 이 객체를 사용하세요.
args에 대한 자세한 내용은 API 문서를 참고하세요.
AORecipeKwargs
클래스 accelerate.utils.AORecipeKwargs
< source >( 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
< source >( modelto_transformer_engine = True_convert_linear = True_convert_ln = True )
모델의 linear 및 layernorm 레이어를 transformers_engine의 대응 레이어로 재귀적으로 변환합니다.
has_transformer_engine_layers
주어진 모델에 transformer_engine 레이어가 있는지 여부를 반환합니다.
contextual_fp8_autocast
accelerate.utils.contextual_fp8_autocast
< source >( model_forwardfp8_recipeuse_during_eval = False )
모델의 forward 메서드에 FP8 autocast를 적용하기 위한 래퍼입니다. 컨텍스트를 인식하므로, 기본적으로 eval 모드에서는 FP8 autocast를 비활성화합니다. 이는 일반적으로 더 정확한 계측을 위해 권장되는 방식입니다.
apply_fp8_autowrap
forward 메서드에 FP8 컨텍스트 매니저를 적용합니다