ఒకే GPUపై రెండు మోడళ్లను రన్ చేయడం: లోకల్ LLMల వెనుక ఉన్న గణితం

నేను ఒక వర్క్‌స్టేషన్‌పై ఏజెంట్ స్టాక్‌ను రన్ చేస్తున్నాను. మోడల్స్ LAN ద్వారా ఒక DGX Sparkలో ఉంటాయి. మెమరీని మెరుగ్గా నిర్వహించడానికి నేను Ollamaకు బదులుగా vLLMని ఉపయోగిస్తున్నాను.

లక్ష్యం ఏమిటంటే ఒకేసారి రెండు మోడళ్లను రన్ చేయడం:

రెండు మోడళ్లు LiteLLM ప్రాక్సీ ద్వారా ఒకే URLని ఉపయోగిస్తాయి. సరైన గణితాన్ని (math) కనుగొనే వరకు ఈ సెటప్ చాలాసార్లు విఫలమైంది.

ఆ పోరాటం నుండి నేర్చుకున్న పాఠాలు ఇక్కడ ఉన్నాయి.

మెమరీ ఉచ్చు (The Memory Trap) gpu_memory_utilization సెట్టింగ్ అనేది ఖాళీ మెమరీ కోసం లక్ష్యం కాదు. ఇది మొత్తం GPU మెమరీలో ఒక భాగం (fraction).

మీ వద్ద 120 GB కార్డ్ ఉండి, utilizationను 0.80గా సెట్ చేస్తే, vLLM మొత్తం సామర్థ్యంలో 96 GBని క్లెయిమ్ చేయడానికి ప్రయత్నిస్తుంది. ప్రస్తుతం ఎంత ఖాళీగా ఉందో అది చూడదు. మీరు రెండు ప్రాసెస్‌లను రన్ చేయాలనుకుంటే, వాటి శాతాల మొత్తం 0.95 కంటే తక్కువ ఉండాలి. CUDA ఫ్రేమ్‌వర్క్ ఓవర్‌హెడ్ (overhead) కోసం కొంత స్థలాన్ని వదిలివేయాలి.

మోడళ్లతో ఏమి జరిగింది నేను 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 యొక్క కనీస అవసరాలకు తగినంత స్థలం మిగలలేదు.

Co-resident మోడళ్ల కోసం నా ప్లేబుక్

  1. మొదట అతిపెద్ద మోడల్‌ను లోడ్ చేయండి.
  2. అది స్థిరపడే వరకు (settle) వేచి ఉండండి.
  3. వాస్తవంగా ఎంత మెమరీ ఉపయోగించబడిందో చూడటానికి nvidia-smi రన్ చేయండి.
  4. మిగిలిన ఖాళీ మెమరీ నుండి ఓవర్‌హెడ్ కోసం 5 GB తీసివేసి, దానికి అనుగుణంగా చిన్న మోడల్‌ను సైజ్ చేయండి.
  5. స్థిరత్వం (stability) కోసం రెండు మోడళ్లను రెండుసార్లు రీస్టార్ట్ చేయండి.

మీ మెమరీ సెట్టింగ్‌లను ఊహించి నిర్ణయించకండి. మీ వాస్తవ పరిస్థితిని చూడటానికి ఈ కమాండ్‌ను ఉపయోగించండి: nvidia-smi --query-gpu=memory.used --format=csv

మీ టార్గెట్ అలోకేషన్ మరియు వాస్తవ వినియోగం మధ్య తేడా 10% కంటే ఎక్కువగా ఉంటే, మీ గణితం తప్పు అని అర్థం. మీ ఏజెంట్ స్టాక్‌ను డిప్లాయ్ చేసే ముందే దానిని సరిచేయండి.

Source: https://dev.to/ric03uec/two-qwen3-models-on-one-dgx-spark-the-residency-math-for-local-llm-coding-5bpj

ఐచ్ఛిక అభ్యాస సమూహం (Optional learning community): https://t.me/GyaanSetuAi