Accelerate documentation
FP8
FP8
Ниже приведены функции и классы, относящиеся к базовой реализации FP8
TERecipeKwargs
класс 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) — Использовать ли 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.
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: выравнивает размеры матриц до кратных 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
< source >( modelto_transformer_engine = True_convert_linear = True_convert_ln = True )
Рекурсивно преобразует линейные и 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-автокаста. Учитывает контекст, то есть по умолчанию отключает FP8-автокаст в режиме eval, что обычно лучше для более точных метрик.
apply_fp8_autowrap
Применяет контекстный менеджер FP8 к методу forward модели