Transformers documentation
torch.compile للتدريب
torch.compile للتدريب
يقوم torch.compile بتجميع كود PyTorch إلى نوى مدمجة (fused kernels) لجعله يعمل بشكل أسرع. ففي التدريب، يتتبع كلًا من المسار الأمامي والمسار العكسي معًا ويجمعهما في نوى مُحسَّنة، مما يقلل من العبء الناتج عن إطلاق العمليات الفردية ودمج العمليات لتقليل استخدام عرض نطاق الذاكرة.
اضبط torch_compile=True في TrainingArguments لتفعيله. يقوم التدريب بتجميع كل من المسار الأمامي والمسار العكسي، على عكس الاستدلال الذي يجمع المسار الأمامي فقط. يحدث التجميع في خطوة التدريب الأولى، لذا توقع أن تكون أبطأ بشكل ملحوظ من الخطوات اللاحقة.
from transformers import TrainingArguments
args = TrainingArguments(
...,
torch_compile=True,
torch_compile_backend="inductor",
torch_compile_mode="reduce-overhead",
)الواجهة الخلفية
عند عدم تحديد أي واجهة خلفية، يختار TrainingArguments واحدة بناءً على عتادك. على معظم وحدات المعالجة المركزية ووحدات معالجة الرسوميات، تكون القيمة الافتراضية هي inductor، والتي تُترجم إلى نوى Triton باستخدام AOTAutograd ومناسبة لمعظم أعباء العمل التدريبية. على Intel Gaudi (HPU)، تكون القيمة الافتراضية هي hpu_backend. على AWS Trainium و Inferentia (Neuron)، تكون القيمة الافتراضية هي neuron.
استخدم cudagraphs للمدخلات ذات الشكل الثابت.
وضع التجميع
استخدم الجدول أدناه للمساعدة في اختيار وضع torch.compile.
| الوضع | الوصف |
|---|---|
| افتراضي | توازن وقت التجميع مقابل وقت التشغيل |
| reduce-overhead | يقلل من الأعباء الإضافية على بايثون/المعالج المركزي باستخدام رسوميات CUDA على حساب بعض الذاكرة الإضافية |
| max-autotune | يقوم benchmarks بتقييم عدة تنفيقات للأنوية (kernels) وقت الترجمة (compile) واختيار الأسرع (مع وقت ترجمة أطول) |
| max-autotune-no-cudagraphs | نفس max-autotune ولكن بدون CUDA graphs |
الخطوات التالية
- راجع دليل torch.compile للاستدلال للحصول على تفاصيل حول التجميع الكامل للرسم البياني (fullgraph) ومعايير أداء الاستدلال.