Transformers documentation
Accelerate
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: 4Jalankan 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.pyaccelerator_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.
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",
)Lewatkan file konfigurasi JSON atau dict ke ~TrainingArguments.deepspeed. Lihat DeepSpeed untuk panduan lengkap dan referensi konfigurasi.
from transformers import TrainingArguments
TrainingArguments(
...,
deepspeed="path/to/ds_config.json",
)DDP dikonfigurasi langsung melalui field TrainingArguments. Lihat DDP untuk detailnya.
from transformers import TrainingArguments
TrainingArguments(
...,
ddp_backend="nccl",
ddp_find_unused_parameters=False,
ddp_bucket_cap_mb=25,
ddp_timeout=1800,
)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.