مفتوح المصدرالأبحاث 🇷🇺 08.08.2026 16:02

التغلب على نفاد الذاكرة في PyTorch: تدريب رسوم بيانية ضخمة على وحدة معالجة رسومية عادية

Disk Sparse AdamDisk Sparse Adam
ابتكر مطور أداة Disk Sparse Adam (DSA)، وهي مُحسِّن خارجي للذاكرة في PyTorch ينقل حالات الزخم الخاصة بالمُحسِّن إلى القرص عبر mmap، مما يقلل بشكل كبير من استخدام الذاكرة عند تدريب النماذج الكبيرة والمتناثرة. يسمح ذلك بالتدريب على وحدات معالجة رسومية للمستهلكين وحتى على Google Colab المجاني، حيث تُظهر المعايير صفر حمل إضافي على الذاكرة الافتراضية عند معالجة مليون كيان.
تقدم المقالة مُحسِّنًا جديدًا خارج الذاكرة يُسمى Disk Sparse Adam (DSA) مخصصًا لإطار العمل PyTorch، بهدف تدريب النماذج الضخمة المتناثرة، مثل تضمينات الرسوم البيانية المعرفية التي تحتوي على ملايين العقد، على وحدات معالجة الرسوميات الاستهلاكية. يقوم مُحسِّن torch.optim.SparseAdam القياسي بتخزين حالات العزم الأول والثاني في الذاكرة، وهو ما يستهلك حوالي 10.24 جيجابايت إضافية لنموذج يحتوي على 10 ملايين كيان ومتجهات ذات 128 بُعدًا، مما يؤدي غالبًا إلى أخطاء نفاد الذاكرة في CUDA. بدلاً من ذلك، يخزن DSA هذه المصفوفات الخاصة بالعزم على القرص كملفات ثنائية ويقوم بتعيينها في الذاكرة باستخدام آلية mmap في نظام التشغيل، بحيث يقرأ ويكتب فقط حالات الدفعة النشطة في كل خطوة تحسين. صُمم المُحسِّن ليكون بديلًا مباشرًا لخطوط أنابيب PyTorch القياسية، وهو يدعم كلاً من الفضاءات الإقليدية والزائدية (كرة بوانكاريه). أفاد المؤلف أن استخدام الذاكرة لحالات المُحسِّن ينخفض من الجيجابايتات إلى الميجابايتات، وأظهر معيار أداء على منصة Kaggle مع مليون كيان حملًا إضافيًا على ذاكرة الفيديو يبلغ 0.00 ميجابايت وإنتاجية تبلغ 134,212 عينة في الثانية. يتوفر DSA على GitHub تحت رخصة MIT، مع بعض القيود بما في ذلك الحاجة إلى قرص NVMe SSD للحصول على أفضل أداء والتوافق فقط مع التدرجات المتناثرة، مثل تلك الناتجة عن torch.nn.Embedding أو EmbeddingBag.
المصدر: Habr — хаб ИИ — الأصلي
منشوراتنا السابقة حول هذا الموضوع ↓
أخبار جديدة