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 واجهة موحدة لأطر التدريب الموزع مثل 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() الإعدادات وتُهيّئ التدريب.

FSDP
DeepSpeed
DDP

مرّر ملف تكوين JSON أو قاموس إلى ~TrainingArguments.fsdp_config. راجع FSDP للحصول على دليل كامل ومرجع للتكوين.

from transformers import TrainingArguments

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

الخطوات التالية

  • راجع DDP للتدريب المتوازي على مستوى البيانات عندما يتسع نموذجك على وحدة معالجة رسومية واحدة.
  • راجع FSDP لتقسيم المعاملات والتدرجات وحالات المُحسِّن عبر وحدات معالجة الرسوميات.
  • راجع DeepSpeed لتحسين ZeRO وإزالة التحميل.
Update on GitHub