Transformers documentation
Accelerate
Accelerate
يوفر Accelerate واجهة موحدة لأطر التدريب الموزع مثل FSDP أو DeepSpeed. يقوم باكتشاف بيئتك (عدد وحدات معالجة الرسومات، إطار التدريب الموزع، الدقة المختلطة، إلخ) ويضبط التدريب تلقائيًا، سواء كنت تستخدم وحدة معالجة رسومات واحدة مع DDP أو ثماني وحدات معالجة رسومات مع FSDP.
يغلّف Accelerate النموذج في الغلاف الموزّع المناسب، وينقله إلى الجهاز الصحيح، وينشئ مُحسِّنًا متوافقًا. أثناء التدريب، يستخدم Accelerate طريقة backward الخاصة به للتعامل مع تحجيم التدرجات في الدقة المختلطة. يستدعي Trainer واجهات برمجة تطبيقات Accelerate المناسبة ويوكل جميع آليات التوزيع إلى Accelerate.
قم بإعداد Accelerate لـ Trainer إما باستخدام ملف إعدادات Accelerate أو TrainingArguments.
ملف إعدادات Accelerate
شغّل الأمر accelerate config وأجب عن الأسئلة المتعلقة بمكوناتك المادية وإعداد التدريب. سيؤدي هذا إلى إنشاء ملف default_config.yaml في ذاكرتك المؤقتة. المثال أدناه خاص بـ 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شغّل accelerate launch مع سكربت مبني على Trainer، وسيقرأ Accelerate ملف الإعدادات لإعداد التدريب. لا حاجة إلى الحججين fsdp_config وdeepspeed لأن ملف إعدادات Accelerate يغطي نفس الإعدادات.
accelerate launch train.pyيقبل accelerator_config إعدادات لا تملك حُججاً مخصصة على المستوى الأعلى. على سبيل المثال، اضبط non_blocking=True مع dataloader_pin_memory() لتداخل نقل البيانات مع الحساب لزيادة معدل إنتاجية وحدة معالجة الرسوميات.
from transformers import TrainingArguments
TrainingArguments(
...,
dataloader_pin_memory=True,
accelerator_config={
"non_blocking": True,
},
)TrainingArguments
مرّر إعدادًا خاصًا بالخلفية إلى TrainingArguments. تقرأ الطريقة create_accelerator_and_postprocess() الإعدادات وتُهيّئ التدريب.
مرّر ملف تكوين JSON أو قاموس إلى ~TrainingArguments.fsdp_config. راجع FSDP للحصول على دليل كامل ومرجع للتكوين.
from transformers import TrainingArguments
TrainingArguments(
...,
fsdp=True,
fsdp_config="path/to/fsdp.json",
)مرّر ملف تكوين JSON أو قاموسًا إلى ~TrainingArguments.deepspeed. راجع DeepSpeed للحصول على دليل كامل ومرجع للتكوين.
from transformers import TrainingArguments
TrainingArguments(
...,
deepspeed="path/to/ds_config.json",
)يتم تكوين DDP مباشرةً من خلال حقول TrainingArguments. راجع DDP للاطلاع على التفاصيل.
from transformers import TrainingArguments
TrainingArguments(
...,
ddp_backend="nccl",
ddp_find_unused_parameters=False,
ddp_bucket_cap_mb=25,
ddp_timeout=1800,
)الخطوات التالية
- راجع DDP للتدريب المتوازي على مستوى البيانات عندما يتسع نموذجك على وحدة معالجة رسومية واحدة.
- راجع FSDP لتقسيم المعاملات والتدرجات وحالات المُحسِّن عبر وحدات معالجة الرسوميات.
- راجع DeepSpeed لتحسين ZeRO وإزالة التحميل.