30 पॉइंट द्वारा GN⁺ 2025-08-13 | 6 टिप्पणियां | WhatsApp पर शेयर करें
  • llama-cpp के --cpu-moe ऑप्शन का उपयोग करके MOE expert layers को CPU पर प्रोसेस किया जाता है, और सिर्फ attention layers को GPU पर offload करके 5~8GB VRAM में तेज prefill performance हासिल की जाती है
  • GPU पर केवल KV cache, Attention weights·activations, routing table, LayerNorm आदि जैसे non-expert parameters ही रहते हैं, इसलिए memory usage कम रहता है
  • RTX 3060Ti-स्तर के GPU और 64GB~96GB system RAM के साथ भी 120B मॉडल को आसानी से चलाया जा सकता है, और BF16 सपोर्ट वाले GPU (RTX 3000+) पर सबसे अच्छा performance मिलता है
  • 5GB VRAM उपयोग करने पर 8.15ms प्रति token (122.66 tokens/sec) performance रिकॉर्ड किया गया, और 8GB VRAM पर यह 7.44ms (134.44 tokens/sec) तक बेहतर हुआ
  • 120B architecture को consumer hardware के लिए optimized तरीके से डिज़ाइन किया गया है, इसलिए GPU resources कम होने पर भी high-speed execution संभव है

CPU-MOE और GPU offloading संरचना

  • --cpu-moe ऑप्शन के साथ expert (MOE) layers को पूरी तरह CPU पर प्रोसेस किया जाता है
    • उदाहरण: --n-cpu-moe 36 → सभी 36 MOE blocks CPU पर चलते हैं
    • ज़रूरत पड़ने पर कुछ MOE को GPU पर भेजकर performance tune किया जा सकता है
  • VRAM बचाने के लिए GPU पर केवल निम्न चीज़ें रखी जाती हैं
    • KV cache (sequence)
    • Attention weights और activations
    • Routing table
    • LayerNorm और अन्य non-expert parameters
  • MOE weights GPU पर resident नहीं रहते, इसलिए बड़े MLP parameters का बोझ नहीं पड़ता

मेमोरी और हार्डवेयर आवश्यकताएँ

  • GPU: 5~8GB VRAM पर्याप्त (उदाहरण: RTX 3060Ti)
  • BF16 सपोर्ट होने पर GPU सबसे उपयुक्त (RTX 3000 series या उससे ऊपर)
  • System RAM: कम से कम 64GB, आदर्श रूप से 96GB
    • Linux mmap का उपयोग करके, पूरा मॉडल memory में न आने पर भी ‘hot’ expert layers memory में रखे जा सकते हैं

प्रदर्शन आँकड़े

5GB VRAM वातावरण

  • Prompt processing: 8.15ms/token (122.66 tokens/sec)
  • Inference: 55.44ms/token (18.04 tokens/sec)

8GB VRAM वातावरण (--n-cpu-moe 36, बाकी GPU)

  • Prompt processing: 7.44ms/token (134.44 tokens/sec)
  • Inference: 39.03ms/token (25.62 tokens/sec)

22GB VRAM वातावरण (कुछ MOE GPU पर)

  • Prompt processing: 6.13ms/token (163.01 tokens/sec)
  • Inference: 32.45ms/token (30.82 tokens/sec)

निष्कर्ष

  • GPT-OSS-120B का डिज़ाइन consumer hardware पर भी बड़े मॉडल को high-speed में चलाने के लिए optimized है
  • VRAM usage कम रखते हुए speed बनाए रखने वाली CPU-MOE संरचना के कारण यह सीमित GPU resources वाले वातावरण के लिए खास तौर पर उपयुक्त है

मुख्य प्रश्न और उत्तर

Q1. इस सेटअप में वास्तविक VRAM usage कितना है?

  • मूल लेखक: जब पूरा MOE CPU पर चलता है, तब लगभग 5GB VRAM लगता है, और केवल attention layers GPU पर जाती हैं
  • अतिरिक्त विवरण: GPU पर केवल KV cache, Attention weights·activations, routing table, LayerNorm रहते हैं

Q2. न्यूनतम कितनी RAM चाहिए?

  • मूल लेखक: कम से कम 64GB, आदर्श रूप से 96GB recommended
  • कारण: Linux mmap ‘hot’ expert layers को memory में रखता है, जिससे पूरे मॉडल को लोड किए बिना भी तेज access संभव होता है

Q3. अगर कुछ MOE layers को GPU पर भेजें, तो क्या speed बहुत बढ़ती है?

  • मूल लेखक: थोड़ा तेज हो सकता है, लेकिन बहुत बड़ा फर्क नहीं है
  • उदाहरण:
    • पूरा MOE CPU पर: prompt 134 tokens/sec, inference 25 tokens/sec
    • 8 MOE GPU पर: prompt 163 tokens/sec, inference 30 tokens/sec
    • VRAM usage 22GB तक बढ़ जाता है

Q4. कौन-सा GPU उपयुक्त है?

  • मूल लेखक: RTX 3060Ti या उससे ऊपर पर्याप्त है, BF16 सपोर्ट (RTX 3000+) recommended है
  • कारण: MOE के अलावा बाकी सभी layers BF16 में चलते हैं

Q5. कमांड सेटिंग कैसे करें?

  • मूल लेखक: PR #15157 के आधार पर उदाहरण दिया गया है
    ~/build/llama.cpp/build-cuda/bin/llama-server \
        -m $LLAMA_MODEL_DIR/gpt-oss-120b-mxfp4-00001-of-00003.gguf \
        --n-cpu-moe 36 \
        --n-gpu-layers 999 \
        -c 0 -fa \
        --jinja --reasoning-format none \
        --host 0.0.0.0 --port 8502 --api-key "dummy"  
    

6 टिप्पणियां

 
kaydash 2025-08-14

मैंने वास्तव में इसे आज़माया, लेकिन यह बहुत धीमा है
GPU clock लगभग इस्तेमाल ही नहीं होता,
GPU dedicated memory 8GB और physical memory 64GB पूरी भर जाती है,
और 16 vCore में से सिर्फ आधे ही इस्तेमाल होते हैं.
इसे बस चल जाता है, इसी अर्थ में देखना चाहिए; यह ऐसा नहीं था कि सारे resources का पूरा उपयोग हो रहा हो.
एक query में 6~8 मिनट लग रहे थे.

 
cronex 2025-08-13

मुझे भी कुछ ऐसा ही करके देखना चाहिए।

 
crawler 2025-08-13

मुझे लगा था 32GB काफी होगा...

 
cnaa97 2025-08-13

फिलहाल lm studio M4 max 64gb पर नहीं चलता :(

 
jinucho 2025-08-13

65GB है, इसलिए... अफ़सोस है टीटी

 
GN⁺ 2025-08-13
Hacker News की राय
  • यह जानने की उत्सुकता है कि अगर मॉडल को सीधे अपने हार्डवेयर पर चलाएँ, तो क्या guardrail हटाए जा सकते हैं
    • guardrail को बायपास करने के लिए शायद ऐसा ‘abliterated finetune’ खोजना होगा, जिसमें refusal reaction पैदा करने वाले neuron path को ट्रैक करके हटाया गया हो
    • हाल में पढ़े एक लेख के अनुसार GPT-OSS को केवल synthetic/generated data पर train किया गया है, इसलिए शुरू से ही इसमें ‘प्रतिबंधित ज्ञान’ ज्यादा नहीं है
      संबंधित लेख
    • jailbreak prompt से इसे बायपास किया जा सकता है, और थोड़ा झंझट जरूर है लेकिन यह अच्छी तरह काम करता है
    • जिन versions में guardrail आंशिक रूप से हटाए गए हैं, उनमें performance काफी गिर जाती है, इसलिए व्यक्तिगत रूप से यह मुझे घाटे का सौदा लगता है
    • मूल रूप से यह मॉडल में built-in है, लेकिन इसे crack और modify करने वाला community मौजूद है
  • 5950x + 128GB RAM + 12GB 3060 GPU environment में token generation speed तेज है, लेकिन context थोड़ा भी बड़ा हो जाए तो processing speed बहुत धीमी हो जाती है
    इसलिए qwen, mistral, gemma जैसे दूसरे models ज़्यादा इस्तेमाल कर रहा/रही हूँ
    • ‘तेज’ या ‘धीमा’ जैसे subjective expressions की बजाय, ठोस token numbers जानना चाहूँगा/चाहूँगी
    • सिर्फ simple chat/text manipulation के अलावा, इस model से आप क्या करना चाहते हैं, यह जानने की जिज्ञासा है
  • 32GB RAM + 16GB VRAM environment में 20B model पूरा VRAM में लोड हो सकता है, लेकिन context window को 8k tokens से ऊपर बढ़ाने पर VRAM कम पड़ने लगता है
    दूसरे लोग कम VRAM में भी 120B model चला रहे हैं, शायद इसकी वजह ROCm support न होना और Vulkan का इस्तेमाल हो सकता है
    फिर भी hardware को उसकी सीमा तक धकेलना मज़ेदार है
    • context size बढ़ने पर ज़्यादा layers को system RAM में offload करना पड़ता है
      llama.cpp में GPU compute layers की संख्या सीधे सेट की जा सकती है, लेकिन ollama इसे अपने-आप adjust करता है
      अच्छा होगा अगर session length के हिसाब से RAM/VRAM ratio को dynamically adjust किया जा सके
  • 64GB RAM + 8GB VRAM को ‘बस किसी तरह’ कहना मज़ेदार है, मेरे लिए तो यह हजारों डॉलर की setup है
    • लगभग 300 CAD RAM और लगभग 400 CAD GPU में, desktop हो तो यह किफायती रूप से संभव है
    • यह mid-range gaming PC के स्तर का है, इसलिए कुछ सौ डॉलर के upgrade से इसे घर पर तुरंत चलाया जा सकता है
    • लगभग $1599~$1999 में ऐसे preorder products भी हैं जो बहुत महंगे नहीं हैं
    • USD 1000 से कम में नए parts के साथ assemble किया जा सकता है, और used लेने पर यह और सस्ता हो सकता है, साथ ही GPU performance भी बेहतर मिल सकती है
    • DDR5 64GB लगभग $150 और 12GB 3060 लगभग $300 में मिल जाता है, और eBay पर इससे भी सस्ता मिल सकता है
  • यह जानना है कि किसी ने MacBook Air M4 या RTX 3060 पर 20B model चलाकर देखा है या नहीं
  • RAM कम होने की वजह से बड़े models नहीं चला पाता/पाती, लेकिन 20B model MacBook पर तेज चलता है और मेरे use case के लिए काफी है
    लेकिन llama.cpp में function calling अभी भी टूटा हुआ है
    • यह bug इस PR में fix कर दिया गया है
    • अच्छा है कि यह RAM limit नहीं बल्कि bug था, और 16GB RAM वाले MacBook Air पर भी कई models अच्छे से चलते हैं
      कमरे में $149 mini PC पर AI chatbot host करने की योजना है, और Qwen3 4B model अच्छा लग रहा है
      संबंधित योजना
  • यह जानने की उत्सुकता है कि OpenWebUI या किसी दूसरे GUI में इस spec पर settings optimize की जा सकती हैं या नहीं, और 20B model शायद बेहतर रहेगा
  • मैं LLM में नया हूँ, इसलिए जानना चाहता/चाहती हूँ कि क्या यह optimization सभी MoE models पर लागू हो सकती है
    • यह layer names पर regex लागू करने का तरीका है, इसलिए अगर naming मिलती-जुलती हो तो दूसरे models पर भी संभव है
      उदाहरण के लिए Qwen 3 पर भी यह काम किया, और regex को सीधे specify करके specific layers को specific device पर भेजा जा सकता है
  • यह जानना है कि mlx optimized version 64GB Mac पर चलेगा या नहीं
    • LM Studio के estimate के मुताबिक 3-bit quantization(~50GB) हो तो बिना समस्या के संभव है