اجعل نماذج PyTorch سريعة للغاية.
Lightning.ai • الأداء • البدء • التثبيت • أمثلة • Inside Thunder • شارك! • التوثيق
يجعل الرعد نماذج PyTorch سريعة جدًا.
Thunder هو مترجم من المصدر إلى المصدر لـ PyTorch. فهو يجعل برامج PyTorch أسرع من خلال الجمع بين برامج تنفيذ الأجهزة المختلفة واستخدامها في وقت واحد (على سبيل المثال، nvFuser، وtorch.compile، وcuDNN، وTransformerEngine FP8).
وهو يدعم تكوينات وحدة معالجة الرسومات الفردية والمتعددة. يهدف الرعد إلى أن يكون قابلاً للاستخدام ومفهومًا وقابلاً للتوسعة.
ملحوظة
البرق والرعد في مرحلة ألفا. لا تتردد في المشاركة، ولكن توقع بعض المطبات على طول الطريق.
يمكن لـ Thunder تحقيق عمليات تسريع كبيرة مقارنة بكود PyTorch القياسي غير المترجم ("PyTorch حريص")، من خلال التأثيرات المركبة للتحسينات واستخدام أفضل المنفذين في فئتها. يوضح الشكل أدناه إنتاجية التدريب المسبق لـ Llama 2 7B كما تم تنفيذها في LitGPT.
كما هو موضح في الرسم البياني أعلاه، يحقق Thunder زيادة بنسبة 40% في إنتاجية التدريب مقارنة بالكود المتحمس على H100 باستخدام مجموعة من المنفذين بما في ذلك nvFuser، وtorch.compile، وcuDNN، وTransformerEngine FP8.
يدعم Thunder أيضًا الاستراتيجيات الموزعة مثل DDP وFSDP لنماذج التدريب على وحدات معالجة الرسومات المتعددة. يعرض المخطط التالي الإنتاجية الطبيعية المقاسة لـ Llama 2 7B بدون دقة مختلطة FP8؛ دعم FSDP قيد التقدم.
أسهل طريقة لبدء استخدام Thunder، والتي لا تتطلب أي عمليات تثبيت أو إعدادات إضافية، هي استخدام Zero to Thunder Tutorial Studio.
الرعد في مرحلة ألفا وآخر التطورات تحدث في الفرع main
. يمكنك تثبيت أحدث إصدار من Thunder من الفرع main
كما يلي:
pip install git+https://github.com/Lightning-AI/lightning-thunder.git@main
لتحقيق أفضل أداء، يمكنك تثبيت Thunder باستخدام التبعيات الإضافية التالية:
# install nvFuser built for the matching stable PyTorch
pip install --pre nvfuser-cu121-torch25
# install cudnn
pip install nvidia-cudnn-frontend
إذا كنت مهتمًا بتعديل Thunder والمساهمة فيه، فنوصي باستنساخ مستودع Thunder وتثبيته في وضع النقطة القابل للتحرير:
git clone https://github.com/Lightning-AI/lightning-thunder.git
cd lightning-thunder
pip install -e .
بعد استنساخ مستودع Lightning-Thunder وتثبيته كحزمة قابلة للتحرير كما هو موضح أعلاه، يمكنك إعداد بيئتك لتطوير Thunder عن طريق تثبيت متطلبات التطوير:
pip install -r requirements/devel.txt
الآن تقوم بإجراء الاختبارات:
pytest thunder/tests
تم اختبار الرعد بدقة شديدة، لذا توقع أن يستغرق هذا بعض الوقت.
يوجد أدناه مثال بسيط لكيفية قيام Thunder بتجميع كود PyTorch وتشغيله:
import torch
import thunder
def foo ( a , b ):
return a + b
jfoo = thunder . jit ( foo )
a = torch . full (( 2 , 2 ), 1 )
b = torch . full (( 2 , 2 ), 3 )
result = jfoo ( a , b )
print ( result )
# prints
# tensor(
# [[4, 4]
# [4, 4]])
تأخذ الوظيفة المترجمة jfoo
موترات PyTorch وتعيدها، تمامًا مثل الوظيفة الأصلية، لذلك يمكن استخدام الوحدات والوظائف التي تم تجميعها بواسطة Thunder كجزء من برامج PyTorch الأكبر.
الرعد في مراحله الأولى ولا ينبغي استخدامه في عمليات الإنتاج بعد.
ومع ذلك، يمكنه بالفعل تقديم أداء متميز للتدريب المسبق والضبط الدقيق لبرامج LLM التي تدعمها LitGPT، مثل Mistral وLlama 2 وGemma وFalcon وغيرها.
تحقق من تكامل LitGPT للتعرف على كيفية تشغيل LitGPT وThunder معًا.
بالنظر إلى وحدة Python القابلة للاستدعاء أو PyTorch، يمكن لـ Thunder إنشاء برنامج محسّن يقوم بما يلي:
وللقيام بذلك، يأتي Thunder مزودًا بما يلي:
grad
و fusions والموزعة (مثل ddp
و fsdp
) والوظيفية (مثل vmap
و vjp
و jvp
)الرعد مكتوب بالكامل بلغة بايثون. حتى أثرها يتم تمثيله على أنه بايثون صالح في جميع مراحل التحول. وهذا يسمح بمستويات غير مسبوقة من الاستبطان والتوسع.
لا يقوم Thunder بإنشاء تعليمات برمجية مباشرة للمسرعات، مثل وحدات معالجة الرسومات. فهو يكتسب برامج المستخدم ويحولها بحيث يكون من الممكن تحديد أو إنشاء رمز الجهاز على النحو الأمثل باستخدام منفذين سريعين مثل:
الوحدات والوظائف المجمعة مع Thunder تتفاعل بشكل كامل مع Vanilla PyTorch وتدعم Autograd الخاص بـ PyTorch. أيضًا، يعمل Thunder جنبًا إلى جنب مع torch.compile للاستفادة من أحدث التحسينات.
الوثائق عبر الإنترنت متاحة. لبناء الوثائق محليا يمكنك استخدامها
make docs
وقم بتوجيه متصفحك إلى المستندات التي تم إنشاؤها على docs/build/index.html
.
نحن نقدر ملاحظاتك ومساهماتك. إذا كانت لديك طلبات ميزات أو أسئلة أو ترغب في المساهمة بالتعليمات البرمجية أو ملفات التكوين، فيرجى عدم التردد في استخدام أداة تعقب مشكلات GitHub.
نحن نرحب بجميع المساهمين الأفراد، بغض النظر عن مستوى خبرتهم أو أجهزتهم. مساهماتك قيمة، ونحن متحمسون لرؤية ما يمكنك تحقيقه في هذه البيئة التعاونية والداعمة.
تم إصدار Lightning Thunder بموجب ترخيص Apache 2.0. راجع ملف الترخيص للحصول على التفاصيل.