6 GB لیپ ٹاپ GPU پر ماڈلز کی کوانٹائزیشن (Quantization)

میں نے ایک RTX 3050 لیپ ٹاپ GPU پر بڑے لینگویج ماڈلز کو فٹ کرنے کی کوشش کی۔ اس کارڈ میں صرف 6 GB VRAM ہے۔ میں یہ دیکھنا چاہتا تھا کہ کون سے ماڈلز 4-bit quantization کے ساتھ کام کرتے ہیں اور کون سے ناکام ہو جاتے ہیں۔

میں نے تین ماڈلز کو کوانٹائز کرنے کے لیے ایک ہی اسکرپٹ استعمال کیا:

  • Phi-3.5-mini (3.8B)
  • Llama-3.2-3B
  • Qwen2.5-3B (VibeThinker)

نتائج: Phi اور Llama نے اچھا کام کیا۔ Phi 34 منٹ میں 7.6 GB سے کم ہو کر 2.2 GB رہ گیا۔ Llama اور VibeThinker نے بھی اسی طرح کا عمل دکھایا۔ یہ ماڈلز آسانی سے فٹ ہو گئے۔

پھر میں نے Qwen2.5-7B کو آزمایا۔ یہ ناکام ہو گیا۔ پروسیس دوسرے لیئر (layer) پر "Out of Memory" ایرر کے ساتھ کریش ہو گیا۔

یہ کیوں ناکام ہوا: GPTQ quantization ہر لیئر کے لیے ایک Hessian matrix بناتا ہے۔ 7B ماڈل کے لیے، اس ریاضی (math) کو 6 GB کارڈ کی فراہم کردہ میموری سے زیادہ میموری کی ضرورت ہوتی ہے۔ میں نے کئی حل آزما کر دیکھے:

  • چھوٹے calibration datasets: کوئی تبدیلی نہیں ہوئی۔
  • Hessians کو CPU پر آف لوڈ کرنا: یہ زیادہ دیر تک چلا لیکن پھر بھی کریش ہو گیا۔
  • GPTQ کے بجائے AWQ کا استعمال: یہ اسی جگہ پر کریش ہو گیا۔
  • صرف CPU کا استعمال: یہ کام کرتا ہے لیکن بہت سست ہے۔ اس میں ہر لیئر کے لیے تقریباً 16 منٹ لگتے ہیں۔

چھوٹے GPUs کے لیے اہم نکات:

  • ماڈل کے سائز میں 3 گنا کمی کی توقع رکھیں۔
  • GPU quantization کے لیے 3 سے 4 بلین پیرامیٹر کی حد کو نشانہ بنائیں۔
  • اپنے KV بجٹ کا خیال رکھیں۔ اگرچہ فائل سائز ایک جیسے ہو سکتے ہیں، لیکن inference کے دوران استعمال ہونے والی میموری مختلف ہوتی ہے۔
  • Quantization، serving کے مقابلے میں زیادہ میموری استعمال کرتی ہے۔ عمل کے دوران اپنی سسٹم RAM کی نگرانی کریں۔

ماڈلز کا موازنہ (W4A16): • Phi-3.5-mini: 2.27 GB | 68.7 tok/s • Llama-3.2-3B: 2.26 GB | 66.0 tok/s • VibeThinker-3B: 2.07 GB | 43.9 tok/s

کوانٹائزیشن کے بعد تینوں ماڈلز نے بنیادی ریاضی اور پرائم نمبر لاجک کو درست طریقے سے حل کیا۔

Source: https://dev.to/syedazeez/quantizing-three-models-to-fit-a-6-gb-laptop-gpu-and-the-one-that-wouldnt-4pjl

اختیاری لرننگ کمیونٹی: https://t.me/GyaanSetuAi