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

Abaixo estão as funções e classes relativas à implementação subjacente de FP8

TERecipeKwargs

classe 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 )

Parâmetros

  • use_autocast_during_eval (bool, opcional, padrão False) — Se deve usar FP8 autocast durante o modo de avaliação. Geralmente, métricas melhores são obtidas quando este valor é False.
  • margin (int, opcional, padrão 0) — A margem a ser usada para o escalonamento do gradiente.
  • interval (int, opcional, padrão 1) — O intervalo a ser usado para a frequência de recálculo do fator de escala.
  • fp8_format (str, opcional, padrão “HYBRID”) — O formato a ser usado para a receita FP8. Deve ser um de HYBRID, E4M3 ou E5M2. (Geralmente HYBRID para treinamento, E4M3 ou E5M2 para avaliação)
  • amax_history_len (int, opcional, padrão 1024) — O comprimento do histórico a ser usado para o cálculo do fator de escala
  • amax_compute_algo (str, opcional, padrão “most_recent”) — O algoritmo a ser usado para o cálculo do fator de escala. Deve ser um dos valores max ou most_recent.
  • override_linear_precision (tuple de três bool, opcional, padrão (False, False, False)) — Se os GEMMs de fprop, dgrad e wgrad devem ser executados em precisão mais alta.

Use este objeto em seu Accelerator para personalizar a inicialização da receita para treinamento com precisão mista FP8 usando transformer-engine.

Para mais informações sobre os args, consulte a documentação da API.

from accelerate import Accelerator
from accelerate.utils import TERecipeKwargs

kwargs = TERecipeKwargs(fp8_format="HYBRID")
accelerator = Accelerator(mixed_precision="fp8", kwargs_handlers=[kwargs])

AORecipeKwargs

classe 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 )

Parâmetros

  • config (torchao.float8.Float8LinearConfig, opcional, padrão None) — A configuração para o treinamento em FP8. Se None, uma configuração padrão será criada com valores sensatos para a maioria dos casos de uso:
    • pad_inner_dim=True: Preenche as dimensões da matriz para que sejam divisíveis por 16, o que é necessário para as operações de torch._scaled_mm a fim de evitar erros em tempo de execução.
    • enable_fsdp_float8_all_gather=True: Habilita o all-gather FP8 para o FSDP2. Isso proporciona economia de largura de banda de memória ao converter os parâmetros antes da operação de all-gather, economizando 50% da largura de banda em comparação com o BF16.

    Você pode substituir esses padrões fornecendo sua própria instância de Float8LinearConfig.

  • module_filter_func (Callable, opcional, padrão None) — Função opcional que deve receber um módulo e o nome da camada e retorna um booleano indicando se o módulo deve ser convertido para FP8. O padrão é accelerate.utils.ao.filter_linear_layers. Consulte-a para um exemplo.

Use este objeto em seu Accelerator para personalizar a inicialização da receita para treinamento com precisão mista FP8 usando FP8 do torchao.

convert_model

accelerate.utils.convert_model

< >

( modelto_transformer_engine = True_convert_linear = True_convert_ln = True )

Converte recursivamente as camadas lineares e de layernorm de um modelo para o equivalente em transformers_engine.

has_transformer_engine_layers

accelerate.utils.has_transformer_engine_layers

< >

( model )

Indica se um determinado modelo possui alguma camada transformer_engine ou não.

contextual_fp8_autocast

accelerate.utils.contextual_fp8_autocast

< >

( model_forwardfp8_recipeuse_during_eval = False )

Wrapper para o método forward de um modelo para aplicar FP8 autocast. É consciente do contexto, o que significa que, por padrão, desativará o FP8 autocast durante o modo de avaliação, o que geralmente é melhor para métricas mais precisas.

apply_fp8_autowrap

accelerate.utils.apply_fp8_autowrap

< >

( modelfp8_recipe_handler )

Aplica o gerenciador de contexto FP8 ao método forward do modelo

Update on GitHub