0Pricing
Learn AI with Python · درس

التدريب الفعّال باستخدام Hugging Face Accelerate

‏accelerate.Accelerator، والتدريب غير المعتمد على الجهاز، وتراكم التدرجات، والتكامل مع DeepSpeed

التدريب الفعّال باستخدام Hugging Face Accelerate درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

مشكلة التعليمات المتكررة

تؤدي كتابة تعيين الجهاز وإعداد DDP والدقة المختلطة يدويًا إلى شيفرة مطوّلة ومعرضة للأخطاء. تزيل Hugging Face Accelerate هذه التعليمات المتكررة، إذ يعمل البرنامج النصي نفسه على CPU أو وحدة GPU واحدة أو عدة وحدات GPU أو حتى وحدات TPU دون أي تغييرات في الشيفرة.

كائن Accelerator

يتمثل جوهر المكتبة في Accelerator. تنشئون كائنًا واحدًا في أعلى البرنامج النصي؛ فيكتشف البيئة ويتولى إدارة الأجهزة والإعداد الموزع والدقة نيابةً عنكم.

from accelerate import Accelerator

accelerator = Accelerator()
device = accelerator.device

تجهيز الكائنات

يأخذ accelerator.prepare النموذج والمُحسّن ومحمّل البيانات، ويعيد نسخًا مهيأة للإعداد الحالي: منقولة إلى الجهاز الصحيح، ومغلّفة داخل DDP عند الحاجة، مع تقسيم محمّل البيانات بين العمليات.

model, optimizer, dataloader = accelerator.prepare(
    model, optimizer, dataloader
)

ما الذي يفعله prepare

يتولى prepare في الخلفية العمل الذي كنتم ستنفذونه يدويًا لولا ذلك: نقل الجهاز، وتغليف DDP، وأخذ العينات الموزع، وإضافة دعم الدقة المختلطة. ويستبدل استدعاء واحد عشرات الأسطر.

لا حاجة إلى .to(device) يدويًا

بما أن محمّل البيانات المُجهّز يعيد دفعات موجودة مسبقًا على الجهاز الصحيح، يمكنكم حذف استدعاءات x.to(device) اليدوية. وتعمل الحلقة نفسها في كل مكان.

for batch in dataloader:
    inputs, labels = batch   # already on device
    outputs = model(inputs)
    loss = loss_fn(outputs, labels)

accelerator.backward

بدلًا من loss.backward()، استدعوا accelerator.backward(loss). فهذا يمرر العملية عبر المسار الصحيح للتدريب الموزع والتدريب بالدقة المختلطة (بما في ذلك تحجيم التدرجات) تلقائيًا.

optimizer.zero_grad()
accelerator.backward(loss)
optimizer.step()

حلقة تدريب كاملة

تتميز حلقة Accelerate الكاملة بالنظافة الشديدة وعدم اعتمادها على جهاز محدد.

accelerator = Accelerator()
model, optimizer, dataloader = accelerator.prepare(model, optimizer, dataloader)

for epoch in range(epochs):
    for batch in dataloader:
        inputs, labels = batch
        outputs = model(inputs)
        loss = loss_fn(outputs, labels)
        optimizer.zero_grad()
        accelerator.backward(loss)
        optimizer.step()

الدقة المختلطة عبر الإعداد

يمكنكم تفعيل FP16 أو BF16 دون لمس الشيفرة، وذلك عند إنشاء Accelerator أو عبر إعدادات CLI. ثم يتولى Accelerate إدارة autocast وتحجيم التدرجات نيابةً عنكم.

accelerator = Accelerator(mixed_precision="fp16")

unwrap_model للحفظ

بعد prepare، قد يكون النموذج مغلّفًا داخل DDP. وقبل الحفظ، استدعوا accelerator.unwrap_model(model) للحصول على النموذج الأساسي العادي، بحيث تكون نقطة التحقق نظيفة وقابلة للنقل.

unwrapped = accelerator.unwrap_model(model)
accelerator.save(unwrapped.state_dict(), "model.pt")

إطلاق التشغيل عبر أجهزة متعددة

تشغّلون البرنامج النصي نفسه باستخدام الأمر accelerate launch، الذي يقرأ إعداداتكم (عدد العمليات، والأجهزة، والدقة) ويبدأ العمليات، مع التعامل بشفافية مع حالات استخدام وحدة معالجة رسومات واحدة أو عدة وحدات أو عدة عقد.

accelerate config        # one-time interactive setup
accelerate launch train.py

لماذا Accelerate

يوفر لكم Accelerate تعاملًا شفافًا مع الأجهزة المتعددة: اكتبوا حلقة واحدة واضحة، ثم وسّعوها من وحدة المعالجة المركزية في حاسوب محمول إلى مجموعة GPU متعددة العقد من دون إعادة كتابة الكود. وهو مبني على مفاهيم DDP وAMP نفسها التي تعلمتموها، لكن مع إخفاء التفاصيل التشغيلية.

اختبار سريع

اختبروا معرفتكم بـ Accelerate.

مراجعة

لقد تعلمتم التدريب الفعّال باستخدام Hugging Face Accelerate:

  • تكتشف Accelerator() البيئة وتديرها
  • تجهّز acc.prepare(model, optimizer, dataloader) كل شيء للعمل مع الأجهزة الحالية
  • تتعامل acc.backward(loss) مع الانتشار العكسي الموزّع والمختلط الدقة
  • توفر acc.unwrap_model نموذجًا نظيفًا للحفظ
  • يتوسع البرنامج النصي الواحد بشفافية من CPU إلى GPU متعدد العقد

الأسئلة الشائعة

هل درس «التدريب الفعّال باستخدام Hugging Face Accelerate» مجاني؟

نعم — نص درس «التدريب الفعّال باستخدام Hugging Face Accelerate» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «التدريب الفعّال باستخدام Hugging Face Accelerate»؟

‏accelerate.Accelerator، والتدريب غير المعتمد على الجهاز، وتراكم التدرجات، والتكامل مع DeepSpeed تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «التدريب الفعّال باستخدام Hugging Face Accelerate»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. التدريب باستخدام وحدات GPU متعددة مع DataParallel
  2. ‏DistributedDataParallel (DDP)
  3. التدريب بالدقة المختلطة باستخدام AMP
  4. التدريب الفعّال باستخدام Hugging Face Accelerate
← العودة إلى Learn AI with Python