Transformers documentation

torch.compile للاستدلال

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

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.

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

Update on GitHub