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 menyediakan antarmuka terpadu untuk backend pelatihan terdistribusi seperti FSDP atau DeepSpeed. Ia mendeteksi lingkungan Anda (jumlah GPU, backend terdistribusi, presisi campuran, dll.) dan secara otomatis mengonfigurasi pelatihan, baik Anda menggunakan 1 GPU dengan DDP maupun 8 GPU dengan FSDP.

Accelerate membungkus model dalam wrapper distribusi yang sesuai, memindahkannya ke perangkat yang benar, dan membuat optimizer yang kompatibel. Selama pelatihan, Accelerate menggunakan metode backward miliknya untuk menangani penskalaan gradien untuk presisi campuran. Trainer memanggil API Accelerate yang sesuai dan mendelegasikan semua mekanisme distribusi ke Accelerate.

Konfigurasikan Accelerate untuk Trainer dengan menggunakan file konfigurasi Accelerate atau TrainingArguments.

File konfigurasi Accelerate

Jalankan perintah accelerate config dan jawab pertanyaan tentang perangkat keras serta konfigurasi pelatihan Anda. Hal ini akan membuat file default_config.yaml di cache Anda. Contoh di bawah ini adalah untuk 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

Jalankan accelerate launch dengan skrip berbasis Trainer, dan Accelerate akan membaca file konfigurasi untuk menyiapkan pelatihan. Argumen fsdp_config dan deepspeed tidak diperlukan karena file konfigurasi Accelerate mencakup pengaturan yang sama.

accelerate launch train.py

accelerator_config menerima pengaturan yang tidak memiliki argumen tingkat atas khusus. Misalnya, atur non_blocking=True bersamaan dengan dataloader_pin_memory() untuk menumpuk transfer data dengan komputasi guna meningkatkan throughput GPU.

from transformers import TrainingArguments

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

TrainingArguments

Lewatkan konfigurasi yang spesifik untuk backend ke TrainingArguments. Metode create_accelerator_and_postprocess() membaca pengaturan tersebut dan mengonfigurasi pelatihan.

FSDP
DeepSpeed
DDP

Lewatkan file konfigurasi JSON atau dict ke ~TrainingArguments.fsdp_config. Lihat FSDP untuk panduan lengkap dan referensi konfigurasi.

from transformers import TrainingArguments

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

Langkah selanjutnya

  • Lihat DDP untuk pelatihan paralel data ketika model Anda muat di satu GPU.
  • Lihat FSDP untuk sharding parameter, gradien, dan status optimizer di antara GPU.
  • Lihat DeepSpeed untuk optimasi ZeRO dan offloading.
Update on GitHub