Transformers documentation

Accelerate

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.23.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Accelerate

Accelerate fournit une interface unifiée pour les backends d’entraînement distribué tels que FSDP ou DeepSpeed. Il détecte votre environnement (nombre de GPU, backend distribué, précision mixte, etc.) et configure automatiquement l’entraînement, que vous utilisiez 1 GPU avec DDP ou 8 GPU avec FSDP.

Accelerate enveloppe le modèle dans l'enveloppe distribuée appropriée, le déplace sur le bon appareil et crée un optimiseur compatible. Pendant l'entraînement, Accelerate utilise sa propre méthode backward pour gérer le mise à l'échelle des gradients pour la précision mixte. Trainer appelle les API Accelerate appropriées et délègue toute la mécanique distribuée à Accelerate.

Configurez Accelerate pour Trainer à l'aide d'un fichier de configuration Accelerate ou de TrainingArguments.

Fichier de configuration d'Accelerate

Exécutez la commande accelerate config et répondez aux questions concernant votre matériel et votre configuration d’entraînement. Cela crée un fichier default_config.yaml dans votre cache. L’exemple ci-dessous concerne FSDP.

compute_environment: LOCAL_MACHINE
distributed_type: FSDP
fsdp_config:
  fsdp_version: 2
  fsdp_reshard_after_forward: true
  fsdp_cpu_offload: false
  fsdp_auto_wrap_policy: TRANSFORMER_BASED_WRAP
  fsdp_cpu_ram_efficient_loading: true
  fsdp_activation_checkpointing: false
  fsdp_state_dict_type: SHARDED_STATE_DICT
  fsdp_transformer_layer_cls_to_wrap: LlamaDecoderLayer
mixed_precision: bf16
num_machines: 1
num_processes: 4

Exécutez accelerate launch avec un script basé sur Trainer, et Accelerate lit le fichier de configuration pour configurer l’entraînement. Les arguments fsdp_config et deepspeed sont inutiles car le fichier de configuration d’Accelerate couvre les mêmes paramètres.

accelerate launch train.py

Le accelerator_config accepte des paramètres qui ne disposent pas d’arguments de premier niveau dédiés. Par exemple, définissez non_blocking=True en même temps que dataloader_pin_memory() pour superposer le transfert de données et le calcul afin d’augmenter le débit du GPU.

from transformers import TrainingArguments

TrainingArguments(
    ...,
    dataloader_pin_memory=True,
    accelerator_config={
        "non_blocking": True,
    },
)

TrainingArguments

Passez une configuration spécifique au backend à TrainingArguments. La méthode create_accelerator_and_postprocess() lit les paramètres et configure l’entraînement.

FSDP
DeepSpeed
DDP

Passez un fichier de configuration JSON ou un dictionnaire à ~TrainingArguments.fsdp_config. Consultez FSDP pour un guide complet et une référence de configuration.

from transformers import TrainingArguments

TrainingArguments(
    ...,
    fsdp=True,
    fsdp_config="path/to/fsdp.json",
)

Étapes suivantes

  • Voir DDP pour l’entraînement parallèle sur les données lorsque votre modèle tient sur une seule GPU.
  • Voir FSDP pour le fractionnement des paramètres, des gradients et des états de l’optimiseur sur plusieurs GPU.
  • Voir DeepSpeed pour l'optimisation ZeRO et le déchargement.
Update on GitHub