एक GPU पर दो मॉडल चलाना: लोकल LLMs के पीछे का गणित
मैं एक वर्कस्टेशन पर एजेंट स्टैक (agent stack) चलाता हूँ। मॉडल LAN के माध्यम से एक DGX Spark पर स्थित हैं। मेमोरी को बेहतर ढंग से मैनेज करने के लिए मैं Ollama के बजाय vLLM का उपयोग करता हूँ।
लक्ष्य एक साथ दो मॉडल चलाना है:
- भारी रीजनिंग (heavy reasoning) के लिए Qwen3-Next-80B।
- तेज़ टर्न्स (fast turns) के लिए Qwen3-4B।
दोनों मॉडल एक LiteLLM प्रॉक्सी के माध्यम से एक ही URL पर पहुँचते हैं। सही गणित (math) खोजने से पहले यह सेटअप कई बार विफल रहा।
संघर्ष से मिले सबक यहाँ दिए गए हैं।
मेमोरी का जाल (The Memory Trap)
gpu_memory_utilization की सेटिंग फ्री मेमोरी का लक्ष्य नहीं है। यह कुल GPU मेमोरी का एक हिस्सा (fraction) है।
यदि आपके पास 120 GB का कार्ड है और आप यूटिलाइज़ेशन (utilization) को 0.80 पर सेट करते हैं, तो vLLM कुल क्षमता में से 96 GB पर दावा करने की कोशिश करता है। यह इस बात पर ध्यान नहीं देता कि वर्तमान में कितनी मेमोरी फ्री है। यदि आप दो प्रोसेस चलाने की कोशिश करते हैं, तो उनके प्रतिशत का योग 0.95 से कम होना चाहिए। आपको CUDA फ्रेमवर्क ओवरहेड के लिए जगह छोड़नी होगी।
मॉडल्स के साथ क्या हुआ
मैंने 80B मॉडल के Thinking वर्शन का उपयोग करने की कोशिश की। यह विफल रहा। मॉडल <think> टैग के अंदर रीजनिंग तो करता था लेकिन वास्तव में कभी भी टूल कॉल (tool call) ट्रिगर नहीं करता था। वह बस रुक जाता था।
मुझे 80B बैकबोन को Instruct वर्शन से बदलना पड़ा। इससे एजेंट को टूल का सही ढंग से उपयोग करने की अनुमति मिली।
वास्तविक गणित (The Actual Math) टेस्टिंग के बाद, मैंने पाया कि मेरे सेटअप के लिए ये नंबर काम करते हैं:
• Qwen3-Next-80B (0.80 लक्ष्य पर): ~87.8 GiB वास्तविक मेमोरी का उपयोग करता है। • Qwen3-4B (0.10 लक्ष्य पर): ~13.8 GiB वास्तविक मेमोरी का उपयोग करता है। • कुल उपयोग (Total usage): ~101.6 GiB। • फ्री हेडरूम (Free headroom): ~18 GiB।
यदि मैं 80B को 0.85 तक बढ़ाता, तो 4B मॉडल शुरू नहीं हो पाता। 80B बहुत अधिक मेमोरी ले लेता, जिससे 4B की न्यूनतम आवश्यकताओं के लिए कोई जगह नहीं बचती।
को-रेसिडेंट मॉडल्स के लिए मेरी प्लेबुक
- सबसे पहले सबसे बड़े मॉडल को लोड करें।
- उसे सेट होने दें।
- वास्तविक उपयोग की गई मेमोरी देखने के लिए
nvidia-smiचलाएं। - ओवरहेड के लिए 5 GB घटाकर, बची हुई फ्री मेमोरी के आधार पर छोटे मॉडल का आकार तय करें।
- स्थिरता सुनिश्चित करने के लिए दोनों मॉडलों को दो बार रीस्टार्ट करें।
अपनी मेमोरी सेटिंग्स का अंदाज़ा न लगाएं। अपनी वास्तविकता देखने के लिए इस कमांड का उपयोग करें:
nvidia-smi --query-gpu=memory.used --format=csv
यदि आपका लक्षित आवंटन (target allocation) और आपका वास्तविक उपयोग 10% से अधिक भिन्न है, तो आपका गणित गलत है। अपने एजेंट स्टैक को तैनात (deploy) करने से पहले इसे ठीक करें।
वैकल्पिक लर्निंग कम्युनिटी: https://t.me/GyaanSetuAi