একটি ৬ জিবি ল্যাপটপ জিপিইউতে মডেল কোয়ান্টাইজেশন
আমি একটি RTX 3050 ল্যাপটপ জিপিইউতে (GPU) লার্জ ল্যাঙ্গুয়েজ মডেলগুলো চালানোর চেষ্টা করেছি। এই কার্ডটিতে মাত্র ৬ জিবি VRAM রয়েছে। আমি দেখতে চেয়েছিলাম কোন মডেলগুলো ৪-বিট কোয়ান্টাইজেশনে (4-bit quantization) কাজ করে এবং কোনগুলো ব্যর্থ হয়।
আমি তিনটি মডেল কোয়ান্টাইজ করার জন্য একটি মাত্র স্ক্রিপ্ট ব্যবহার করেছি:
- Phi-3.5-mini (3.8B)
- Llama-3.2-3B
- Qwen2.5-3B (VibeThinker)
ফলাফলসমূহ: Phi এবং Llama ভালোভাবে কাজ করেছে। Phi মডেলটি ৩৪ মিনিটে ৭.৬ জিবি থেকে ২.২ জিবি-তে নেমে এসেছে। Llama এবং VibeThinker-ও একই রকম ফলাফল দেখিয়েছে। এই মডেলগুলো সহজেই ফিট হয়েছে।
এরপর আমি Qwen2.5-7B চেষ্টা করেছি। এটি ব্যর্থ হয়েছে। 'Out of Memory' এরর (error) আসার কারণে প্রসেসটি দ্বিতীয় লেয়ারেই ক্র্যাশ করেছে।
কেন এটি ব্যর্থ হলো: GPTQ কোয়ান্টাইজেশন প্রতিটি লেয়ারের জন্য একটি Hessian matrix তৈরি করে। একটি 7B মডেলের জন্য, এই গাণিতিক প্রক্রিয়ায় ৬ জিবি কার্ডের ক্ষমতার চেয়ে বেশি মেমরি প্রয়োজন হয়। আমি বেশ কিছু সমাধান চেষ্টা করেছি:
- ছোট ক্যালিব্রেশন ডেটাসেট (Smaller calibration datasets): কোনো পরিবর্তন হয়নি।
- CPU-তে Hessian অফলোডিং (Offloading Hessians to CPU): এটি কিছুটা বেশি সময় ধরে চললেও শেষ পর্যন্ত ক্র্যাশ করেছে।
- GPTQ-এর পরিবর্তে AWQ ব্যবহার: এটি একই স্থানে ক্র্যাশ করেছে।
- শুধুমাত্র CPU ব্যবহার: এটি কাজ করে কিন্তু অত্যন্ত ধীরগতির। প্রতিটি লেয়ারের জন্য প্রায় ১৬ মিনিট সময় লাগে।
ছোট জিপিইউ-এর জন্য মূল বিষয়গুলো:
- মডেলের আকারের ৩ গুণ হ্রাস আশা করতে পারেন।
- জিপিইউ কোয়ান্টাইজেশনের জন্য ৩ থেকে ৪ বিলিয়ন প্যারামিটার সীমার লক্ষ্য রাখুন।
- আপনার KV বাজেট খেয়াল রাখুন। ফাইলের আকার একই হলেও, ইনফারেন্সের (inference) সময় ব্যবহৃত মেমরি ভিন্ন হতে পারে।
- সার্ভিং-এর চেয়ে কোয়ান্টাইজেশনে বেশি মেমরি ব্যবহৃত হয়। প্রক্রিয়া চলাকালীন আপনার সিস্টেম র্যাম (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
কোয়ান্টাইজেশনের পর তিনটি মডেলই মৌলিক গণিত এবং মৌলিক সংখ্যার (prime number) লজিক সঠিকভাবে সমাধান করতে পেরেছে।
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi