عن المشروع
محرك المحولات (TE) هو مكتبة من NVIDIA لتسريع نماذج المحولات على وحدات معالجة الرسوميات من NVIDIA. ميزتها الأساسية هي الحساب منخفض الدقة: الفاصلة العائمة ذات 8 بتات (FP8) على وحدات معالجة الرسوميات Hopper وAda وBlackwell، بالإضافة إلى صيغتي MXFP8 وNVFP4 على Blackwell، بهدف تحسين الأداء وتقليل استخدام الذاكرة في كل من التدريب والاستدلال. كما تدعم التحسينات عبر FP16 وBF16 على معماريات Ampere والأحدث.
توفر المكتبة وحدات بناء محسّنة للغاية لمعماريات المحولات الشائعة وواجهة برمجة تطبيقات شبيهة بالدقة المختلطة التلقائية يمكن استخدامها مع كود خاص بإطار عمل معين. تتضمن المكتبة واجهة برمجة تطبيقات C++ مستقلة عن إطار العمل حتى تتمكن مكتبات التعلم العميق الأخرى من إضافة دعم FP8 للمحولات. تحتفظ وحدات TE داخليًا بعوامل القياس والقيم المرتبطة بها اللازمة لتدريب FP8، مما يبسط سير عمل الدقة المختلطة للمستخدمين.
تشمل أبرز النقاط التي يذكرها المشروع وحدات سهلة الاستخدام لبناء طبقات المحولات مع دعم FP8، وتحسينات النواة المدمجة، ودعم FP8 على Hopper وAda وBlackwell، ودعم MXFP8 وNVFP4 على Blackwell، وتحسينات عبر FP16/BF16 على Ampere والأحدث.
تُعرض أمثلة استخدام لـ PyTorch وJAX/Flax. في PyTorch، يستورد المستخدمون transformer_engine.pytorch، وينشئون وصفة مثل DelayedScaling بصيغة FP8 مختارة، ويلفون التمرير الأمامي داخل te.autocast. في JAX/Flax، يُعرض استخدام autocast مماثل مع وحدات te_flax ووصفة. يوجد رابط لدليل البدء للحصول على برنامج تعليمي أكثر اكتمالًا.
تشمل خيارات التثبيت حاويات NGC Docker (موصى بها)، وحزم pip مع إضافات لـ PyTorch و/أو JAX، وحزم conda-forge لتكامل PyTorch، والبناء من المصدر. تذكر متطلبات النظام أجهزة Blackwell وHopper وGrace Hopper/Blackwell وAda وAmpere؛ وLinux كنظام تشغيل رسمي مع دعم محدود لـ WSL2؛ وCUDA 12.1+ (و12.8+ لـ Blackwell)؛ وcuDNN 9.12+؛ وGCC 9+ أو Clang 10+ مع C++17؛ ويوصى بـ Python 3.12. تتطلب ميزات FP8 قدرة حسابية 8.9 أو أعلى. تم توثيق متغيرات البيئة المتعلقة بالبناء مثل CUDA_PATH وCUDNN_PATH وCXX وNVTE_FRAMEWORK وMAX_JOBS وNVTE_CUDA_ARCHS.
يغطي ملف README دعم FlashAttention-2 وFlashAttention-3 في PyTorch، مع إعطاء الأولوية لـ FlashAttention-3 عند وجودهما معًا، ويشير إلى أن تجميع FlashAttention-2 قد يكون مكثفًا للذاكرة. يتناول قسم استكشاف الأخطاء وإصلاحها أخطاء استيراد توافق ABI، والترويسات أو المكتبات المفقودة، ومشكلات موارد البناء، وتسجيل البناء المطول، ومشكلات UV/البيئة الافتراضية بما في ذلك فشل تحميل مكتبة cuDNN الفرعية، وأخطاء تسجيل JAX FFI.
تم توثيق تغيير جذري للإصدار v1.7: تغير تعريف قناع الحشو في PyTorch بحيث أصبح True يعني الآن إخفاء موضع بدلًا من تضمينه، مما يوحد دلالات القناع عبر أطر العمل. تذكر ملاحظات التقارب أن FP8 وMXFP8 لم يظهرا فرقًا كبيرًا عن منحنيات خسارة تدريب BF16 في التكوينات المختبرة، مع التحقق في مهام نماذج اللغة الكبيرة اللاحقة، وتذكر نماذج مثل MPT-1.3B وLlama2-7B وLLM-8B وMPT-13B وMoE-16B وLlama2-70B عبر أطر عمل تشمل Mosaic Composer وAlibaba Pai وMegatron Core.
تشمل التكاملات المدرجة DeepSpeed وHugging Face Accelerate وLightning وMosaicML Composer وNVIDIA JAX Toolbox وNVIDIA Megatron-LM وNVIDIA NeMo Megatron Bridge وAmazon SageMaker Model Parallel Library وLevanter وGPT-NeoX وHugging Face Nanotron. المشروع مرخص بموجب Apache-2.0 ويرحب بالمساهمات عبر دليل CONTRIBUTING الخاص به.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.