एकाच GPU वर दोन मॉडेल्स चालवणे: लोकल LLMs मधील गणित

मी एका वर्कस्टेशनवर एजंट स्टॅक चालवतो. मॉडेल्स LAN द्वारे DGX Spark वर असतात. मेमरी अधिक चांगल्या प्रकारे व्यवस्थापित करण्यासाठी मी Ollama ऐवजी vLLM वापरतो.

उद्दिष्ट एकाच वेळी दोन मॉडेल्स चालवणे हे आहे:

दोन्ही मॉडेल्स LiteLLM प्रॉक्सीद्वारे एकाच URL वर येतात. योग्य गणित शोधण्यापूर्वी ही सेटअप अनेक वेळा अयशस्वी झाली.

या संघर्षातून मिळालेले धडे खालीलप्रमाणे आहेत.

मेमरीचा सापळा (The Memory Trap) gpu_memory_utilization हे सेटिंग मोकळ्या मेमरीसाठी (free memory) लक्ष्य नाही. ते एकूण GPU मेमरीचा एक भाग (fraction) आहे.

जर तुमच्याकडे 120 GB कार्ड असेल आणि तुम्ही utilization 0.80 सेट केले, तर vLLM एकूण क्षमतेपैकी 96 GB घेण्याचा प्रयत्न करते. ते सध्या किती मेमरी मोकळी आहे हे पाहत नाही. जर तुम्ही दोन प्रोसेस चालवण्याचा प्रयत्न करत असाल, तर त्यांची टक्केवारी मिळून 0.95 पेक्षा कमी असावी लागते. तुम्हाला CUDA फ्रेमवर्क ओव्हरहेडसाठी (overhead) जागा सोडावी लागेल.

मॉडेल्ससोबत काय घडले मी 80B मॉडेलची Thinking आवृत्ती वापरण्याचा प्रयत्न केला. ते अयशस्वी ठरले. मॉडेल <think> टॅग्समध्ये तर्क (reasoning) करत असे, परंतु प्रत्यक्षात कधीही टूल कॉल (tool call) ट्रिगर करत नसे. ते फक्त थांबून जाई.

मला 80B बॅकबोन बदलून Instruct आवृत्ती वापरावी लागली. यामुळे एजंटला टूल्सचा योग्य वापर करता आला.

प्रत्यक्ष गणित चाचणी केल्यानंतर, मला माझ्या सेटअपसाठी खालील आकडेवारी योग्य वाटली:

• Qwen3-Next-80B (0.80 लक्ष्यावर): ~87.8 GiB प्रत्यक्ष मेमरी वापरते. • Qwen3-4B (0.10 लक्ष्यावर): ~13.8 GiB प्रत्यक्ष मेमरी वापरते. • एकूण वापर: ~101.6 GiB. • मोकळी जागा (Free headroom): ~18 GiB.

जर मी 80B ला 0.85 पर्यंत वाढवले असते, तर 4B मॉडेल सुरू होऊ शकले नसते. 80B खूप जास्त मेमरी व्यापून टाकेल, ज्यामुळे 4B च्या किमान गरजांसाठी जागा उरणार नाही.

सह-निवासी (Co-resident) मॉडेल्ससाठी माझी मार्गदर्शिका (Playbook)

  1. सर्वात मोठे मॉडेल आधी लोड करा.
  2. ते स्थिर होऊ द्या.
  3. प्रत्यक्ष वापरलेली मेमरी पाहण्यासाठी nvidia-smi चालवा.
  4. उरलेल्या मोकळ्या मेमरीमधून ओव्हरहेडसाठी 5 GB वजा करून, त्या आधारावर लहान मॉडेलचा आकार ठरवा.
  5. स्थिरता सुनिश्चित करण्यासाठी दोन्ही मॉडेल्स दोनदा रीस्टार्ट करा.

तुमच्या मेमरी सेटिंग्सचा अंदाज लावू नका. तुमची वास्तविकता पाहण्यासाठी ही कमांड वापरा: nvidia-smi --query-gpu=memory.used --format=csv

जर तुमचे लक्ष्यित वाटप (target allocation) आणि प्रत्यक्ष वापर यामध्ये 10% पेक्षा जास्त फरक असेल, तर तुमचे गणित चुकले आहे. तुमचा एजंट स्टॅक तैनात (deploy) करण्यापूर्वी ते दुरुस्त करा.

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

पर्यायी लर्निंग कम्युनिटी: https://t.me/GyaanSetuAi