عن المشروع

Apex هي مجموعة أدوات تحتفظ بها NVIDIA تهدف إلى توفير ميزات التدريب المختلط الدقة والتدريب الموزع الحديثة لمستخدمي PyTorch بسرعة، مع بعض الأكواد التي يُقصد بها في النهاية أن تصل إلى PyTorch الأساسي. ما توفره: - أدوات مساعدة للتدريب المختلط الدقة (apex.amp) لتشغيل النماذج بدقة أقل. - أدوات التدريب الموزع، بما في ذلك apex.parallel.DistributedDataParallel و SyncBatchNorm. - نوى مدمجة للمحسنات مثل FusedAdam، وطبقات التطبيع مثل FusedLayerNorm و FusedRMSNorm. - مجموعة من الوحدات الاختيارية المساهمة تغطي مجالات مثل التشتت (sparsity)، تطبيع الدفعات الجماعية (group batch norm)، الانتروبيا المتقاطعة (xentropy)، الخسارة البؤرية (focal loss)، خسائر المحول (transducer losses)، ذاكرة الأقران (peer memory)، NCCL P2P، الطبقات الاختناقية (bottleneck layers)، المحسنات الموزعة، والتخزين المباشر لوحدة معالجة الرسومات (GPU direct storage). ملاحظات التثبيت: - حاويات NVIDIA PyTorch على NGC تشحن مع الإضافات المخصصة متاحة بالفعل. - من المصدر، المسار الموصى به يستخدم متغيرات بيئة مثل APEX_CPP_EXT=1 و APEX_CUDA_EXT=1 مع pip install --no-build-isolation؛ لا تزال علامات سطر الأوامر القديمة (--cpp_ext، --cuda_ext) مدعومة. - البناء باستخدام Python فقط ممكن لكنه يحذف النوى المدمجة، لذا فإن FusedAdam و FusedLayerNorm/FusedRMSNorm والمسارات المدمجة لـ SyncBatchNorm و DistributedDataParallel و amp غير متاحة أو أبطأ. - تتطلب الوحدات المساهمة الفردية خيارات التثبيت الخاصة بها؛ بعضها قد يكون متوافقًا فقط مع إصدارات PyTorch الليلية (nightlies) وليس الإصدارات المستقرة. APEX_ALL_CONTRIB_EXT=1 يبني جميع إضافات المساهمة مرة واحدة. - يُوصى باستخدام Ninja لتسريع الترجمة، وخيارات البناء المتوازية موثقة للبيئات ذات وحدة المعالجة المركزية أو الذاكرة المحدودة. - دعم Windows موصوف بأنه تجريبي. هذه مكتبة للمطورين الذين يدربون نماذج التعلم العميق ويريدون لبنات بناء للتدريب المختلط الدقة والتدريب الموزع، وليست تطبيقًا للمستخدم النهائي.