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) — Использовать ли FP8 autocast в режиме eval. Как правило, лучшие метрики достигаются, когда это значение равно 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 из трёх bool, необязательный, по умолчанию (False, False, False)) — Определяет, следует ли выполнять GEMM-операции fprop, dgrad и wgrad с повышенной точностью.

Используйте этот объект в вашем Accelerator, чтобы настроить инициализацию рецепта для обучения с смешанной точностью FP8 с помощью transformer-engine.

Для получения дополнительной информации об аргументах см. документацию 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: Включает FP8 all-gather для FSDP2. Это обеспечивает экономию пропускной способности памяти за счёт приведения параметров к типу FP8 перед операцией all-gather, что позволяет сэкономить 50% пропускной способности по сравнению с BF16.

    Вы можете переопределить эти значения по умолчанию, передав собственный экземпляр Float8LinearConfig.

  • module_filter_func (Callable, необязательный, по умолчанию None) — Необязательная функция, которая принимает модуль и имя слоя и возвращает булево значение, указывающее, следует ли конвертировать модуль в FP8. По умолчанию используется accelerate.utils.ao.filter_linear_layers. См. её как пример.

Используйте этот объект в вашем Accelerator, чтобы настроить инициализацию рецепта для обучения с смешанной точностью FP8 с использованием FP8 torchao.

convert_model

accelerate.utils.convert_model

< >

( modelto_transformer_engine = True_convert_linear = True_convert_ln = True )

Рекурсивно преобразует линейные и 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-автокаста. Учитывает контекст, то есть по умолчанию отключает FP8-автокаст в режиме eval, что обычно лучше для более точных метрик.

apply_fp8_autowrap

accelerate.utils.apply_fp8_autowrap

< >

( modelfp8_recipe_handler )

Применяет контекстный менеджер FP8 к методу forward модели

Update on GitHub