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.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Accelerate

Accelerate ofrece una interfaz unificada para backends de entrenamiento distribuido como FSDP o DeepSpeed. Detecta tu entorno (número de GPUs, backend distribuido, precisión mixta, etc.) y configura automáticamente el entrenamiento, ya sea que estés usando 1 GPU con DDP o 8 GPUs con FSDP.

Accelerate envuelve el modelo en el envoltorio distribuido adecuado, lo mueve al dispositivo correcto y crea un optimizador compatible. Durante el entrenamiento, Accelerate utiliza su propio método backward para manejar la escalado de gradientes en precisión mixta. Trainer llama a las API de Accelerate correspondientes y delega toda la mecánica distribuida en Accelerate.

Configure Accelerate para Trainer con un archivo de configuración de Accelerate o TrainingArguments.

Archivo de configuración de Accelerate

Ejecuta el comando accelerate config y responde a las preguntas sobre tu hardware y configuración de entrenamiento. Esto crea un archivo default_config.yaml en tu caché. El ejemplo de abajo es para 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

Ejecute accelerate launch con un script basado en Trainer y Accelerate leerá el archivo de configuración para configurar el entrenamiento. Los argumentos fsdp_config y deepspeed son innecesarios porque el archivo de configuración de Accelerate cubre las mismas configuraciones.

accelerate launch train.py

El accelerator_config acepta configuraciones que no tienen argumentos de nivel superior dedicados. Por ejemplo, establezca non_blocking=True junto con dataloader_pin_memory() para superponer la transferencia de datos con el cálculo y obtener un mayor rendimiento de la GPU.

from transformers import TrainingArguments

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

TrainingArguments

Pase una configuración específica del backend a TrainingArguments. El método create_accelerator_and_postprocess() lee la configuración y ajusta el entrenamiento.

FSDP
DeepSpeed
DDP

Pase un archivo de configuración JSON o un diccionario a ~TrainingArguments.fsdp_config. Consulte FSDP para obtener una guía completa y una referencia de configuración.

from transformers import TrainingArguments

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

Próximos pasos

  • Consulte DDP para el entrenamiento paralelo de datos cuando su modelo quepa en una sola GPU.
  • Consulte FSDP para fragmentar parámetros, gradientes y estados del optimizador entre varias GPU.
  • Consulte DeepSpeed para la optimización ZeRO y el offloading.
Update on GitHub