إدارة ذاكرة GPU وتجزئةها
كيف تقوم أطر عمل الذكاء الاصطناعي بتخصيص الذاكرة المحدودة على وحدة معالجة الرسومات وإعادة استخدامها واستعادتها، ولماذا يمكن أن تتسبب الفجوات المتبقية (التجزئة) في حدوث أخطاء خارج الذاكرة حتى في حالة بقاء الكثير من الذاكرة من الناحية الفنية.
نظرة عامة
Understanding it is key to fitting big models and avoiding mysterious crashes.
الغوص العميق
ذاكرة GPU ثابتة وثمينة: قد تحتوي البطاقة على إجمالي 24 أو 80 أو 192 جيجابايت، يتم مشاركتها بواسطة أوزان النموذج وعمليات التنشيط والتدرجات وحالات المُحسّن والمخازن المؤقتة. سيكون استدعاء برنامج التشغيل لتخصيص الذاكرة في كل عملية بطيئًا، لذا تستخدم أطر عمل مثل PyTorch مُخصص التخزين المؤقت الذي يلتقط الكتل الكبيرة في المقدمة ويوزع القطع الفرعية، ثم يحتفظ بالقطع المحررة في مجموعة لإعادة استخدامها. المشكلة هي التجزئة: عندما يتم تخصيص وتحرير الموترات ذات الأحجام المختلفة، تنقسم المساحة الحرة إلى أجزاء متناثرة. يمكن أن يكون لديك 5 غيغابايت مجانًا إجمالاً ولكنك تفشل في تخصيص موتر متجاور يبلغ 2 غيغابايت لأنه لا توجد فجوة واحدة كبيرة بما يكفي. وهذا هو السبب في أن التدريب يمكن أن يتعطل بسبب أخطاء نفاد الذاكرة على الرغم من وجود مساحة رأسية متاحة على ما يبدو.
البصيرة الفنية
يقوم مُخصص التخزين المؤقت CUDA الخاص بـ PyTorch بتقسيم الذاكرة إلى تدفقات من الكتل وإعادة استخدام الكتل المحررة التي تطابق الأحجام المطلوبة، مع تجنب مكالمات cudaMalloc/cudaFree المكلفة. ينشأ التجزئة عندما لا يمكن إعادة تجميع الكتل المنقسمة. تساعد أدوات مثل torch.cuda.empty_cache وخيار PYTORCH_CUDA_ALLOC_CONF القابل للتوسيع ولقطات الذاكرة. تستعير الأساليب الأحدث أفكار الذاكرة الافتراضية، حيث تقوم بتعيين الصفحات المادية غير المتجاورة في نطاق افتراضي متجاور، بحيث تنجح الطلبات الكبيرة على الرغم من التجزئة.
التأثير الاستراتيجي
التكلفة والميزانية
تؤدي قرارات الهندسة المعمارية إلى زيادة الأداء وتكلفة التشغيل لسنوات.
قرارات أوضح
يساعد التعليم الفني الفرق على اختيار المجموعة المناسبة، وليس فقط المجموعة الأحدث.
مراقبة الجودة
تعمل الخيارات الهندسية الأفضل على تقليل حوادث الموثوقية في الإنتاج.
مستقبل إدارة ذاكرة وحدة معالجة الرسومات وتجزئتها
أصبحت إدارة الذاكرة أكثر ذكاءً وأكثر ارتباطًا بالصفحات، مستوحاة من أنظمة التشغيل. تعمل تقنيات مثل أدوات تخصيص نمط الذاكرة الافتراضية والاهتمام المقسم إلى صفحات (المستخدمة لإدارة ذاكرة التخزين المؤقت لـ KV أثناء الاستدلال) على تقليل الهدر والتجزئة بشكل كبير. توقع أن يتم ضبط أطر العمل بشكل افتراضي على المخصصات القابلة للتوسيع وإلغاء التجزئة، ورؤية أفضل من خلال ملفات التعريف المضمنة، واقتران أكثر إحكامًا مع التفريغ وإعادة الحساب، بحيث يقوم النظام بالتنقل بين وحدة معالجة الرسومات ووحدة المعالجة المركزية وذاكرة القرص تلقائيًا للحفاظ على الاستخدام العالي ونادر حدوث الأعطال.
التنفيذ في العالم الحقيقي
تشغيل تدريبي يتعطل بسبب "نفاد الذاكرة في CUDA" على الرغم من إظهار الذاكرة المحجوزة لمساحة خالية، ويتم إصلاح ذلك عن طريق تعيين PYTORCH_CUDA_ALLOC_CONF لتمكين المقاطع القابلة للتوسيع.
استخدام torch.cuda.memory_summary أو لقطة من الذاكرة لتشخيص الموترات والتجزئة التي تستهلك 80 جيجابايت من وحدة معالجة الرسومات.
يقوم PagedAttention الخاص بـ vLLM بإدارة ذاكرة التخزين المؤقت KV للانتباه في الصفحات ذات الحجم الثابت لخدمة العديد من طلبات الدردشة المتزامنة دون إضاعة الذاكرة.
خفض حجم الدفعة أو تمكين نقطة التفتيش المتدرجة لقطع ذاكرة التنشيط وتجنب حالات فشل نفاد الذاكرة الناتجة عن التجزئة.
المخاطر والدرابزين
يمكن أن يؤدي تحسين معيار واحد إلى إخفاء نقاط ضعف النظام الأوسع.
غالبًا ما يتم التقليل من تكاليف البنية التحتية والصيانة.
يمكن أن تنمو الفجوات الأمنية وقابلية المراقبة عندما تصبح الأنظمة أكثر تعقيدًا.
خارطة طريق التنفيذ
تحديد الكمون والجودة وأهداف التكلفة قبل التنفيذ.
المعيار في ظل ظروف التحميل والبيانات الواقعية.
مراقبة الأدوات للأخطاء والانجراف وتأثير المستخدم.
قم بإعداد مسارات التراجع والاستجابة للحوادث قبل القياس.
استمر في الاستكشاف
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the GPU Memory Management and Fragmentation quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
الدليل التالي
جدولة GPU والتنسيق العنقودي
الأسئلة المتداولة
What is GPU Memory Management and Fragmentation?
كيف تقوم أطر عمل الذكاء الاصطناعي بتخصيص الذاكرة المحدودة على وحدة معالجة الرسومات وإعادة استخدامها واستعادتها، ولماذا يمكن أن تتسبب الفجوات المتبقية (التجزئة) في حدوث أخطاء خارج الذاكرة حتى في حالة بقاء الكثير من الذاكرة من الناحية الفنية. إن فهم ذلك أمر أساسي لتركيب النماذج الكبيرة وتجنب الأعطال الغامضة.
ما هو تجزئة الذاكرة GPU؟
التجزئة تعني أن إجمالي الذاكرة الحرة كافية، ولكنها مقسمة إلى أجزاء، لذلك لا توجد فجوة واحدة كبيرة بما يكفي لموتر كبير.
لماذا تستخدم أطر عمل مثل PyTorch مُخصص ذاكرة التخزين المؤقت؟
يعد استدعاء cudaMalloc/cudaFree لكل عملية بطيئًا، لذلك يلتقط مُخصص التخزين المؤقت كتلًا كبيرة ويعيد استخدام الكتل المحررة من المجموعة.
ترى 5 غيغابايت مجانًا ولكن لا يمكنك تخصيص موتر بسعة 2 غيغابايت. ما هو السبب المحتمل؟
يحدث هذا العرض الكلاسيكي للتجزئة عند وجود ذاكرة خالية ولكن ليس كقطعة واحدة متجاورة كبيرة بما يكفي للطلب.
ما هو إعداد PyTorch الذي يساعد على تقليل التجزئة من خلال السماح لقطاعات الذاكرة بالنمو بمرونة؟
يتيح إعداد PYTORCH_CUDA_ALLOC_CONF لتمكين الأقسام القابلة للتوسيع للمخصص زيادة المقاطع وتقليل حالات الفشل المرتبطة بالتجزئة.
ما الذي يستطيع PagedAttention الخاص بـ vLLM تقليل هدر الذاكرة أثناء الاستدلال؟
يقوم PagedAttention بتخزين ذاكرة التخزين المؤقت KV في صفحات ذات حجم ثابت مثل الذاكرة الافتراضية لنظام التشغيل، مما يؤدي إلى قطع التجزئة وخدمة العديد من الطلبات بكفاءة.