Accelerate documentation
FP8
FP8
Abaixo estão as funções e classes relativas à implementação subjacente de FP8
TERecipeKwargs
classe 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 )
Parâmetros
- use_autocast_during_eval (
bool, opcional, padrãoFalse) — 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 deHYBRID,E4M3ouE5M2. (GeralmenteHYBRIDpara treinamento,E4M3ouE5M2para 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 valoresmaxoumost_recent. - override_linear_precision (
tuplede trêsbool, opcional, padrão(False, False, False)) — Se os GEMMs defprop,dgradewgraddevem 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.
AORecipeKwargs
classe 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 )
Parâmetros
- config (
torchao.float8.Float8LinearConfig, opcional, padrãoNone) — A configuração para o treinamento em FP8. SeNone, 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 detorch._scaled_mma 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ãoNone) — 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
< source >( 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
Indica se um determinado modelo possui alguma camada transformer_engine ou não.
contextual_fp8_autocast
accelerate.utils.contextual_fp8_autocast
< source >( 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
Aplica o gerenciador de contexto FP8 ao método forward do modelo