GPU میموری مینجمنٹ اور فریگمنٹیشن
AI فریم ورک کس طرح GPU پر محدود میموری کو مختص، دوبارہ استعمال، اور دوبارہ دعویٰ کرتے ہیں، اور کیوں بچا ہوا خلا (فریکمنٹیشن) میموری سے باہر کی خرابیوں کا سبب بن سکتا ہے یہاں تک کہ جب تکنیکی طور پر کافی مقدار میں میموری باقی رہتی ہے۔
جائزہ
Understanding it is key to fitting big models and avoiding mysterious crashes.
گہرا غوطہ
GPU میموری فکسڈ اور قیمتی ہے: ایک کارڈ میں کل 24، 80، یا 192 GB ہو سکتا ہے، جو ماڈل کے وزن، ایکٹیویشنز، گریڈیئنٹس، آپٹیمائزر سٹیٹس، اور عارضی بفرز کے ذریعے شیئر کیا جاتا ہے۔ ڈرائیور کو ہر آپریشن پر میموری مختص کرنے کے لیے کال کرنا سست ہوگا، اس لیے PyTorch جیسے فریم ورک ایک کیشنگ ایلوکیٹر کا استعمال کرتے ہیں جو سامنے والے بڑے بلاکس کو پکڑتا ہے اور ذیلی ٹکڑوں کو دے دیتا ہے، پھر آزاد شدہ ٹکڑوں کو دوبارہ استعمال کے لیے پول میں رکھتا ہے۔ کیچ فریگمنٹیشن ہے: چونکہ مختلف سائز کے ٹینسر مختص اور آزاد ہوتے ہیں، خالی جگہ بکھرے ہوئے حصوں میں ٹوٹ جاتی ہے۔ آپ مجموعی طور پر 5 جی بی مفت حاصل کر سکتے ہیں لیکن پھر بھی متصل 2 جی بی ٹینسر مختص کرنے میں ناکام رہتے ہیں کیونکہ کوئی بھی فرق اتنا بڑا نہیں ہے۔ یہی وجہ ہے کہ بظاہر دستیاب ہیڈ روم کے باوجود تربیت یادداشت سے باہر کی غلطیوں کے ساتھ کریش ہو سکتی ہے۔
تکنیکی بصیرت
PyTorch کا CUDA کیشنگ ایلوکیٹر میموری کو بلاکس کے سلسلے میں تقسیم کرتا ہے اور فری کردہ بلاکس کو دوبارہ استعمال کرتا ہے جو کہ درخواست کردہ سائز سے مماثل ہوتے ہیں، مہنگی cudaMalloc/cudaFree کالوں سے گریز کرتے ہیں۔ ٹکڑا تب پیدا ہوتا ہے جب تقسیم شدہ بلاکس کو دوبارہ جوڑا نہیں جاسکتا۔ ٹولز جیسے torch.cuda.empty_cache، PYTORCH_CUDA_ALLOC_CONF قابل توسیع_segments آپشن، اور میموری اسنیپ شاٹس مدد کرتے ہیں۔ جدید ترین نقطہ نظر ورچوئل میموری آئیڈیاز کو مستعار لیتے ہیں، غیر متضاد فزیکل صفحات کو ایک متضاد ورچوئل رینج میں نقشہ بناتے ہیں تاکہ ٹکڑے ٹکڑے ہونے کے باوجود بڑی درخواستیں کامیاب ہو جائیں۔
اسٹریٹجک اثر
لاگت اور بجٹ
فن تعمیر کے فیصلے سالوں تک کارکردگی اور آپریٹنگ لاگت کو آگے بڑھاتے ہیں۔
واضح فیصلے
تکنیکی تعلیم ٹیموں کو صحیح اسٹیک منتخب کرنے میں مدد کرتی ہے، نہ صرف جدید ترین۔
کوالٹی کنٹرول
انجینئرنگ کے بہتر انتخاب پیداوار میں قابل اعتماد واقعات کو کم کرتے ہیں۔
GPU میموری مینجمنٹ اور فریگمنٹیشن کا مستقبل
آپریٹنگ سسٹمز سے متاثر ہو کر میموری کا نظم و نسق زیادہ ہوشیار اور زیادہ صفحات والا ہوتا جا رہا ہے۔ ورچوئل میموری طرز کے مختص کرنے والے اور صفحہ بندی کی توجہ (تخصیص کے دوران KV کیش کو منظم کرنے کے لیے استعمال کیا جاتا ہے) جیسی تکنیکیں فضلہ اور ٹکڑے ہونے کو ڈرامائی طور پر کم کرتی ہیں۔ توقع کریں کہ فریم ورک کو ڈیفالٹ کرنے کے قابل توسیعی، ڈیفراگمنٹنگ مختص کرنے والوں، بلٹ ان پروفائلرز کے ذریعے بہتر مرئیت، اور آف لوڈنگ اور دوبارہ گنتی کے ساتھ سخت جوڑے کی توقع ہے تاکہ سسٹم GPU، CPU، اور ڈسک میموری کو خود بخود جگائے تاکہ استعمال کو زیادہ رکھا جا سکے اور نایاب کریش ہوں۔
حقیقی دنیا کا نفاذ
ایک ٹریننگ رن جو 'CUDA آؤٹ آف میموری' کے ساتھ کریش ہو جاتی ہے اس کے باوجود کہ محفوظ میموری خالی جگہ دکھاتی ہے، PYTORCH_CUDA_ALLOC_CONF کو قابل توسیع حصوں کو فعال کرنے کے لیے سیٹ کر کے طے کیا جاتا ہے۔
torch.cuda.memory_summary یا میموری اسنیپ شاٹ کا استعمال کرتے ہوئے یہ تشخیص کرنا کہ کون سے ٹینسر اور فریگمنٹیشن GPU کے 80 GB کو کھا رہے ہیں۔
vLLM کا PagedAttention فکسڈ سائز کے صفحات میں توجہ 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?
AI فریم ورک کس طرح GPU پر محدود میموری کو مختص، دوبارہ استعمال، اور دوبارہ دعویٰ کرتے ہیں، اور کیوں بچا ہوا خلا (فریکمنٹیشن) میموری سے باہر کی خرابیوں کا سبب بن سکتا ہے یہاں تک کہ جب تکنیکی طور پر کافی مقدار میں میموری باقی رہتی ہے۔ اسے سمجھنا بڑے ماڈلز کو فٹ کرنے اور پراسرار حادثات سے بچنے کی کلید ہے۔
GPU میموری فریگمنٹیشن کیا ہے؟
فریگمنٹیشن کا مطلب ہے کہ کل مفت میموری کافی ہے، لیکن اسے ٹکڑوں میں توڑ دیا گیا ہے، اس لیے کوئی ایک خلا بھی بڑے ٹینسر کے لیے کافی نہیں ہے۔
PyTorch جیسے فریم ورک کیشنگ میموری ایلوکیٹر کیوں استعمال کرتے ہیں؟
ہر آپشن کے لیے cudaMalloc/cudaFree کال کرنا سست ہے، اس لیے کیشنگ ایلوکیٹر بڑے بلاکس کو پکڑتا ہے اور پول سے آزاد کردہ کو دوبارہ استعمال کرتا ہے۔
آپ 5 جی بی مفت دیکھتے ہیں لیکن 2 جی بی ٹینسر مختص نہیں کر سکتے۔ ممکنہ وجہ کیا ہے؟
فریگمنٹیشن کی یہ کلاسک علامت اس وقت ہوتی ہے جب مفت میموری موجود ہوتی ہے لیکن درخواست کے لیے کافی بڑا حصہ نہیں ہوتا۔
کون سی PyTorch ترتیب میموری کے حصوں کو لچکدار طریقے سے بڑھنے کی اجازت دے کر ٹکڑے ٹکڑے کرنے میں مدد کرتی ہے؟
PYTORCH_CUDA_ALLOC_CONF کو قابل توسیع_segments کو فعال کرنے سے مختص کرنے والے کو سیگمنٹس بڑھنے دیتا ہے اور فریگمنٹیشن سے متعلق ناکامیوں کو کم کرتا ہے۔
vLLM کا PagedAttention قیاس کے دوران میموری کے ضیاع کو کم کرنے کا کیا انتظام کرتا ہے؟
PagedAttention KV کیش کو فکسڈ سائز کے صفحات جیسے OS ورچوئل میموری، فریگمنٹیشن کو کاٹنا اور بہت سی درخواستوں کو مؤثر طریقے سے پیش کرتا ہے۔