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

Ci-dessous se trouvent les fonctions et les classes relatives à l'implémentation FP8 sous-jacente

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 )

Paramètres

  • use_autocast_during_eval (bool, facultatif, par défaut False) — Indique s'il faut utiliser l'autocast FP8 en mode d'évaluation. Des métriques généralement meilleures sont obtenues lorsque cette valeur est False.
  • margin (int, facultatif, par défaut 0) — La marge à utiliser pour le mise à l'échelle du gradient.
  • interval (int, facultatif, par défaut 1) — L'intervalle à utiliser pour la fréquence de recalcul du facteur d'échelle.
  • fp8_format (str, facultatif, par défaut “HYBRID”) — Le format à utiliser pour la recette FP8. Doit être l’un des formats HYBRID, E4M3 ou E5M2. (Généralement HYBRID pour l’entraînement, E4M3 ou E5M2 pour l’évaluation)
  • amax_history_len (int, facultatif, par défaut 1024) — La longueur de l’historique à utiliser pour le calcul du facteur d’échelle
  • amax_compute_algo (str, facultatif, par défaut “most_recent”) — L'algorithme à utiliser pour le calcul du facteur d'échelle. Doit être max ou most_recent.
  • override_linear_precision (tuple de trois bool, facultatif, par défaut (False, False, False)) — Indique s'il faut exécuter les GEMM de fprop, dgrad et wgrad en plus haute précision.

Utilisez cet objet dans votre Accelerator pour personnaliser l’initialisation de la recette d’entraînement en précision mixte FP8 avec transformer-engine.

Pour plus d'informations sur les args, veuillez consulter la documentation de l'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 )

Paramètres

  • config (torchao.float8.Float8LinearConfig, facultatif, par défaut None) — La configuration pour l'entraînement FP8. Si None, une configuration par défaut sera créée avec des valeurs raisonnables pour la plupart des cas d'usage :
    • pad_inner_dim=True : Remplit les dimensions de la matrice pour qu’elles soient divisibles par 16, ce qui est requis pour les opérations torch._scaled_mm afin d’éviter les erreurs d’exécution.
    • enable_fsdp_float8_all_gather=True : Active l’opération all-gather en FP8 pour FSDP2. Cela permet d’économiser la bande passante mémoire en convertissant les paramètres avant l’opération all-gather, ce qui réduit la bande passante de 50 % par rapport à BF16.

    Vous pouvez remplacer ces valeurs par défaut en fournissant votre propre instance de Float8LinearConfig.

  • module_filter_func (Callable, facultatif, par défaut None) — Fonction facultative qui doit prendre en entrée un module et un nom de couche, et renvoyer un booléen indiquant si le module doit être converti en FP8. Par défaut, accelerate.utils.ao.filter_linear_layers. Consultez-la pour un exemple.

Utilisez cet objet dans votre Accelerator pour personnaliser l’initialisation de la recette d’entraînement en précision mixte FP8 avec torchao FP8.

convert_model

accelerate.utils.convert_model

< >

( modelto_transformer_engine = True_convert_linear = True_convert_ln = True )

Convertit récursivement les couches linéaires et layernorm d'un modèle en leur équivalent transformers_engine.

has_transformer_engine_layers

accelerate.utils.has_transformer_engine_layers

< >

( model )

Indique si un modèle donné possède une couche transformer_engine ou non.

contextual_fp8_autocast

accelerate.utils.contextual_fp8_autocast

< >

( model_forwardfp8_recipeuse_during_eval = False )

Wrapper pour la méthode forward d’un modèle afin d’appliquer l’autocast FP8. Il est conscient du contexte, ce qui signifie qu’il désactive par défaut l’autocast FP8 en mode eval, ce qui est généralement préférable pour des métriques plus précises.

apply_fp8_autowrap

accelerate.utils.apply_fp8_autowrap

< >

( modelfp8_recipe_handler )

Applique le gestionnaire de contexte FP8 à la méthode forward du modèle

Update on GitHub