Transformers documentation
torch.compile للاستدلال
torch.compile للاستدلال
يقوم torch.compile بتجميع كود PyTorch إلى نوى مُحسّنة تسرّع الاستدلال بشكل كبير. يعتمد هذا الميزة على TorchDynamo لتجميع الكود إلى رسوم بيانية، وعلى TorchInductor لتجميع هذه الرسوم البيانية بشكل إضافي إلى نوى مُحسّنة. وهي أداة تحسين قوية، وفي كثير من الحالات، لا تتطلب سوى إضافة سطر واحد من الكود.
قم بتغليف نموذج باستخدام torch.compile لتجميعه وإرجاع نموذج محسّن.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("google/gemma-2b", device_map="auto")
compiled_model = torch.compile(model)تكون الاستدعاء الأولي لـ torch.compile بطيئاً لأن النموذج يحتاج إلى التجميع. أما الاستدعاءات اللاحقة للنموذج المُجمَّع فتكون أسرع بكثير لأنه لا يحتاج إلى التجميع مرة أخرى.
تتوفر عدة معاملات لتخصيص عملية التجميع. وفيما يلي اثنان من أهمها. للاطلاع على القائمة الكاملة للمعاملات، يُرجى الرجوع إلى التوثيق الخاص بـ torch.compile.
الأنماط
يوفر معامل mode عدة خيارات للأداء عند التجميع. جرّب أوضاعًا مختلفة لمعرفة أيها يعمل بشكل أفضل لحالتك الخاصة.
defaultهو خيار متوازن بين السرعة والذاكرة.- يقلل
reduce-overheadمن العبء الإضافي المرتبط بلغة بايثون مقابل استهلاك ذاكرة أكبر قليلاً، لكنه قد يكون أسرع. max-autotuneيوفر أسرع سرعة، لكن عملية التجميع تستغرق وقتًا أطول.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("google/gemma-2b", device_map="auto")
compiled_model = torch.compile(model, mode="reduce-overhead")Fullgraph
يحاول Fullgraph تجميع النموذج بأكمله في رسم بياني واحد لتعظيم الأداء. يرفع torch.compile خطأً إذا واجه انقطاعًا في الرسم البياني، مما يعني أنه لا يستطيع تجميع النموذج في رسم بياني واحد.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("google/gemma-2b", device_map="auto")
compiled_model = torch.compile(model, mode="reduce-overhead", fullgraph=True)المعايير
راجع الجدول أدناه لمعايير الأداء التي تقارن متوسط زمن الاستدلال بالمللي ثانية مع تفعيل torch.compile وإيقافه عبر وحدات معالجة الرسوميات (GPU) وأحجام الدفعات (batch sizes) المختلفة على نفس الصورة لمهام الرؤية المختلفة.
اختر Subset في الجدول أدناه للتبديل بين وحدات معالجة الرسوميات المختلفة، وكذلك اختبارات الأداء على PyTorch nightly 2.1.0dev وtorch.compile مع تفعيل وضع reduce-overhead.
الخطوات التالية
- اطّلع على دليل torch.compile للتدريب لمعرفة كيفية استخدام torch.compile للتدريب.