Transformers documentation
Accelerate
Accelerate
Accelerate, FSDP veya DeepSpeed gibi dağıtık eğitim altyapıları için birleşik bir arayüz sunar. Ortamınızı (GPU sayısı, dağıtık altyapı, karma hassasiyet vb.) algılar ve eğitim yapılandırmasını otomatik olarak ayarlar; ister 1 GPU ile DDP, ister 8 GPU ile FSDP kullanıyor olun.
Accelerate, modeli uygun dağıtık sarmalayıcıyla sarar, doğru cihaza taşır ve uyumlu bir optimizör oluşturur. Eğitim sırasında Accelerate, karma hassasiyet için gradyan ölçeklemesini yönetmek üzere kendi backward yöntemini kullanır. Trainer, uygun Accelerate API'lerini çağırır ve tüm dağıtık mekaniklerini Accelerate'e devreder.
Trainer için Accelerate yapılandırmasını bir Accelerate yapılandırma dosyası veya TrainingArguments ile yapılandırın.
Accelerate yapılandırma dosyası
accelerate config komutunu çalıştırın ve donanımınız ile eğitim kurulumunuzla ilgili soruları yanıtlayın. Bu işlem, önbelleğinizde bir default_config.yaml dosyası oluşturur. Aşağıdaki örnek FSDP içindir.
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: 4accelerate launch komutunu Trainer tabanlı bir betikle çalıştırın; Accelerate, eğitimi yapılandırmak için yapılandırma dosyasını okur. fsdp_config ve deepspeed argümanları, Accelerate yapılandırma dosyası aynı ayarları kapsadığı için gereksizdir.
accelerate launch train.pyaccelerator_config, özel üst düzey argümanları olmayan ayarları kabul eder. Örneğin, GPU verimliliğini artırmak için veri aktarımını hesaplama ile çakıştırmak üzere non_blocking=True değerini dataloader_pin_memory() ile birlikte ayarlayın.
from transformers import TrainingArguments
TrainingArguments(
...,
dataloader_pin_memory=True,
accelerator_config={
"non_blocking": True,
},
)TrainingArguments
TrainingArguments sınıfına backend'e özgü bir yapılandırma geçirin. create_accelerator_and_postprocess() metodu ayarları okur ve eğitimi yapılandırır.
~TrainingArguments.fsdp_config parametresine bir JSON yapılandırma dosyası veya sözlük (dict) iletin. Tam bir kılavuz ve yapılandırma referansı için FSDP bölümüne bakın.
from transformers import TrainingArguments
TrainingArguments(
...,
fsdp=True,
fsdp_config="path/to/fsdp.json",
)~TrainingArguments.deepspeed parametresine bir JSON yapılandırma dosyası veya sözlük (dict) iletin. Tam bir kılavuz ve yapılandırma referansı için DeepSpeed bölümüne bakın.
from transformers import TrainingArguments
TrainingArguments(
...,
deepspeed="path/to/ds_config.json",
)DDP, TrainingArguments alanları üzerinden doğrudan yapılandırılır. Ayrıntılar için DDP bölümüne bakın.
from transformers import TrainingArguments
TrainingArguments(
...,
ddp_backend="nccl",
ddp_find_unused_parameters=False,
ddp_bucket_cap_mb=25,
ddp_timeout=1800,
)Sonraki adımlar
- Modeliniz tek bir GPU'ya sığıyorsa veri paralel eğitim için DDP'ye bakın.
- Parametrelerin, gradyanların ve optimizör durumlarının GPU'lar arasında bölünmesi için FSDP'ye bakın.
- ZeRO optimizasyonu ve offload için DeepSpeed'e bakın.