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

and get access to the augmented documentation experience

to get started

Accelerate

Accelerate fornece uma interface unificada para backends de treinamento distribuído, como FSDP ou DeepSpeed. Ele detecta seu ambiente (número de GPUs, backend distribuído, precisão mista, etc.) e configura automaticamente o treinamento, seja em 1 GPU com DDP ou em 8 GPUs com FSDP.

O Accelerate envolve o modelo no wrapper distribuído apropriado, move-o para o dispositivo correto e cria um otimizador compatível. Durante o treinamento, o Accelerate usa seu próprio método backward para lidar com o escalonamento de gradientes para precisão mista. O Trainer chama as APIs apropriadas do Accelerate e delega toda a mecânica distribuída ao Accelerate.

Configure o Accelerate para o Trainer com um arquivo de configuração do Accelerate ou TrainingArguments.

Arquivo de configuração do Accelerate

Execute o comando accelerate config e responda às perguntas sobre seu hardware e configuração de treinamento. Isso cria um arquivo default_config.yaml no seu cache. O exemplo abaixo é 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

Execute accelerate launch com um script baseado em Trainer, e o Accelerate lê o arquivo de configuração para configurar o treinamento. Os argumentos fsdp_config e deepspeed são desnecessários, pois o arquivo de configuração do Accelerate cobre as mesmas configurações.

accelerate launch train.py

O accelerator_config aceita configurações que não possuem argumentos de nível superior dedicados. Por exemplo, defina non_blocking=True junto com dataloader_pin_memory() para sobrepor a transferência de dados com o cálculo, obtendo maior throughput na GPU.

from transformers import TrainingArguments

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

TrainingArguments

Passe uma configuração específica do backend para TrainingArguments. O método create_accelerator_and_postprocess() lê as configurações e configura o treinamento.

FSDP
DeepSpeed
DDP

Passe um arquivo de configuração JSON ou um dicionário para ~TrainingArguments.fsdp_config. Consulte FSDP para obter um guia completo e a referência de configuração.

from transformers import TrainingArguments

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

Próximas etapas

  • Consulte DDP para treinamento paralelo de dados quando o seu modelo couber em uma única GPU.
  • Consulte FSDP para particionar parâmetros, gradientes e estados do otimizador entre GPUs.
  • Consulte DeepSpeed para otimização ZeRO e offloading.
Update on GitHub