5 पॉइंट द्वारा GN⁺ 2026-03-23 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 397B पैरामीटर वाले Mixture-of-Experts मॉडल को MacBook Pro(48GB RAM) पर 4.4 टोकन/सेकंड से अधिक की गति से चलाने वाला C/Metal-आधारित inference engine
  • पूरे 209GB मॉडल को SSD से स्ट्रीम करते हुए, Python या किसी framework के बिना केवल C और Metal shaders से कार्यान्वित
  • SSD Expert Streaming, FMA-optimized kernel, Deferred GPU Compute आदि के जरिए GPU·SSD·CPU parallel efficiency को अधिकतम किया गया
  • 4-bit quantization configuration गुणवत्ता और गति के बीच संतुलन बनाती है, और tool calling capability सहित production-level output उत्पन्न करती है
  • लैपटॉप वातावरण में भी अल्ट्रा-लार्ज MoE मॉडल पर real-time inference संभव बनाने वाला lightweight optimization का उदाहरण

प्रदर्शन परिणाम

  • 4-bit expert (FMA kernel) configuration में 4.36 tok/s, अच्छी गुणवत्ता, कुल 209GB disk उपयोग
  • 4-bit base configuration 3.90 tok/s देता है, यानी FMA optimization से पहले का चरण
  • 2-bit expert (trust OS) configuration 5.74 tok/s तक पहुँचता है, लेकिन JSON output errors के कारण tool calling संभव नहीं
  • 2-bit peak single token 7.05 tok/s तक पहुँचता है, लेकिन वास्तविक उपयोग के लिए उपयुक्त नहीं
  • 4-bit quantization वास्तविक संचालन के लिए उपयुक्त configuration है

हार्डवेयर वातावरण

  • MacBook Pro (Apple M3 Max), 16-core CPU(12P+4E), 40-core GPU, 16-core ANE
  • 48GB unified memory, bandwidth लगभग 400GB/s
  • SSD 1TB Apple Fabric, 17.5GB/s sequential read speed
  • macOS 26.2 (Darwin 25.2.0) वातावरण

मॉडल आर्किटेक्चर

  • कुल 60 transformer layers: 45 GatedDeltaNet(linear attention) + 15 full attention
  • हर layer में 512 experts हैं, जिनमें से K=4 प्रति token सक्रिय होते हैं (1 shared expert सहित)
  • hidden dimension 4096
  • मुख्य तकनीकें

    • SSD Expert Streaming

      • expert weights (4-bit आधार पर 209GB) को NVMe SSD से parallel pread() के जरिए जरूरत पड़ने पर लोड किया जाता है
      • हर layer में सक्रिय सिर्फ 4 experts लोड होते हैं (प्रत्येक लगभग 6.75MB)
      • OS page cache अपने आप caching संभालता है, अलग cache की जरूरत नहीं
      • Apple के “LLM in a Flash” पेपर से प्रेरित संरचना
    • FMA-optimized dequant kernel

      • (nibble * scale + bias) * x ऑपरेशन को fma(nibble, scale*x, bias*x) रूप में पुनर्व्यवस्थित किया गया
      • scale*x और bias*x को पहले से calculate करके GPU FMA units एक ही instruction में काम करती हैं
      • simple implementation की तुलना में 12% speed improvement
    • Metal Compute Shaders

      • 4-bit/2-bit dequant matrix-vector multiply, SwiGLU activation, RMS normalization, GPU attention(Q@Kᵀ, softmax, scores@V), RoPE, MoE merge+residual+gate आदि को hand-coded Metal kernels से implement किया गया
    • Deferred GPU Expert Compute

      • CMD3(expert forward pass) commands को asynchronous submit किया जाता है ताकि GPU के चलने के दौरान CPU अगली layer तैयार करे
      • merge+normalization+residual ऑपरेशन भी GPU पर चलते हैं और सीधे अगली layer को सौंपे जाते हैं
    • Accelerate BLAS का उपयोग

      • GatedDeltaNet की recurrent computation के लिए cblas_sscal, cblas_sgemv, cblas_sger का उपयोग
      • scalar code की तुलना में 64% तेज प्रदर्शन
    • Trust the OS

      • custom cache हटाकर, OS page cache (LRU-based, लगभग 35GB) expert data caching संभालता है
      • अपना Metal LRU, malloc cache, LZ4 compressed cache — इन सबसे धीमा निकला
      • natural 71% cache hit rate हासिल
  • unified memory constraints

    • Apple Silicon पर SSD DMA और GPU computation एक ही memory controller साझा करते हैं
    • parallel execution के दौरान GPU bandwidth saturation से latency बहुत बढ़ जाती है
    • GPU → SSD → GPU sequential pipeline ही hardware-optimal form है

1 टिप्पणियां

 
GN⁺ 2026-03-23
Hacker News की राय
  • consumer devices पर भी Qwen 3.5 397B चलाने का एक और तरीका है
    लगभग 2.5 BPW quant वर्ज़न उपलब्ध है, इसलिए 128GB memory वाले डिवाइस पर भी यह काफी संभव है
    मैंने इसे M1 Ultra पर लगभग 20 tok/s की गति से, 256k context बनाए रखते हुए, अच्छी तरह चलाया
    lm-evaluation-harness परिणाम लगभग mmlu 87.86%, gpqa diamond 82.32%, gsm8k 86.43%, ifeval 75.90% थे
    विस्तृत अनुभव मैंने Hugging Face चर्चा लिंक1 और लिंक2 में संकलित किए हैं
    offline inference के लिए यह एक शानदार मॉडल है

    • लिंक वाली विधि भी पहले से 2-bit quantization का उपयोग कर रही है
      token प्रति experts की संख्या 10 से घटाकर 4 कर दी गई है, इसलिए quality और गिर जाती है
      छोटे prompt के लिए ठीक है, लेकिन लंबे session में इसका उपयोग नहीं है
      JSON output में "name" की जगह \name\ उत्पन्न होने की समस्या भी है, जिससे tool calling अस्थिर हो जाता है
    • मैं जानना चाहता हूँ कि आजकल tok/s कितना मिल रहा है
      यह भी जानना है कि क्या यह लंबे context में भी अच्छी तरह काम करता है
      और आपका username फिर से देखकर अच्छा लगा — Neovim बनाने वाले व्यक्ति होना वाकई बड़ी उपलब्धि है
      मैं भी इसे रोज़ इस्तेमाल करता हूँ
    • power usage को लेकर जिज्ञासा है
      शायद CoconutBattery से इसका अनुमान लगाया जा सकता है
    • क्या यह केवल एक single M1 Ultra पर चलाया गया था?
    • मैं personal automation पर बहुत ज़्यादा credits खर्च कर रहा था, इसलिए यह जानकारी बहुत मददगार है
  • विवरण देखें तो लगता है कि 2-bit quantization और experts की संख्या 10 से 4 करने से लगभग 5 tok/s हासिल हुआ
    यह एक दिलचस्प proof of concept है, लेकिन मूल 397B मॉडल की quality से काफी दूर है
    ऐसी चरम optimization से मॉडल की intelligence loss होती है
    JSON output में "name" की जगह \name\ आने की समस्या भी है, इसलिए यह practical use के लिए उपयुक्त नहीं है
    मैं मानता हूँ कि यह प्रयास दिखाता है कि तकनीकी रूप से ऐसा करना संभव है, लेकिन वास्तव में उपयोगी स्तर तक नहीं पहुँचा है
    आजकल ऐसे AI-लिखित papers बहुत ज़्यादा हो गए हैं, जिससे थकान महसूस होती है

    • JSON output की समस्या देखकर मैंने सोचा था कि शायद sampling को सिर्फ valid JSON tokens तक सीमित किया जा सकता है
      लेकिन सुना है कि वास्तविक commercial LLMs में भी tool calling accuracy कम होती है
      शायद इसे लागू करना कठिन है, या संरचनात्मक रूप से कुछ सीमाएँ हैं
  • r/LocalLLaMA चर्चा में भी इस पर संबंधित बहस हुई थी

  • GitHub page के अनुसार साधारण mmap access में page-level overhead के कारण bottleneck आता है
    सोच रहा हूँ कि macOS पर huge page सेट करना या posix_fadvise से prefetching करना मदद कर सकता है या नहीं

  • 2-bit quantization की quality गिरावट वास्तव में गंभीर समस्या है
    वास्तविक काम में मेरा अनुभव है कि अच्छी तरह tuned 30B 4-bit model, 70B+ 2-bit से बेहतर होता है
    experts की संख्या घटाने पर यह लगभग एक अलग model बन जाता है
    फिर भी consumer hardware की सीमाओं को परखने की दृष्टि से यह दिलचस्प है

  • “लैपटॉप पर चल रहा है” जैसा शीर्षक हर बार $3000 वाले MacBook का मतलब निकले, यह थकाऊ है
    compression तकनीक प्रभावशाली है, लेकिन आम उपयोगकर्ताओं के लिए यह व्यावहारिक विकल्प नहीं है

    • मैं काफ़ी अच्छा laptop इस्तेमाल करता हूँ (Mac नहीं), इसलिए ऐसे प्रयास मुझे दिलचस्प लगते हैं
      लेकिन शीर्षक देखकर मुझे यह उम्मीद नहीं होती कि यह किसी भी laptop पर चल जाएगा
      ज़रूरत से ज़्यादा cynical होने के बजाय मैं ऐसे प्रयोगों का आनंद लेता हूँ
    • second-hand M1 Max 64GB model $2000 से कम में भी मिल सकता है
      video editing जैसे कामों के कारण बहुत से लोगों के पास पहले से ऐसे high-end MacBook होते हैं
      अलग hardware खरीदे बिना मौजूदा laptop से प्रयोग कर पाना इसका फायदा है
    • वास्तव में $3000~4000 के Strix Halo laptop से भी यह संभव है
    • शीर्षक शायद “,on a laptop!” की तरह लिखा जाता तो अधिक सटीक होता
    • मैंने $3000 के दो laptops (128GB zbook) के cluster पर पूरा model चलाया था
      गति लगभग 20 tok/s थी, और मुझे लगता है कि यह व्यक्तिगत स्तर पर भी काफी सुलभ है
      कामकाजी उपयोग के लिए भी यह निवेश करने लायक था
  • No Python. No frameworks. Just C, Objective-C, and hand-tuned Metal shaders.
    यह वाक्य पढ़ते ही अंदाज़ा हो गया कि tokens कहाँ से आए होंगे

  • Hand-written Metal kernels” लिखा है, तो क्या यह GPT ने खुद लिखा होगा? 😉

    • वास्तव में लेखक ने स्पष्ट रूप से कहा है कि यह AI द्वारा लिखा गया code है
  • सच में प्रभावशाली परिणाम हैं
    क्या Linux पर भी SSD के बजाय system memory आधारित access से ऐसा ही तरीका संभव होगा, यह जानना चाहूँगा
    या weights को ROM के रूप में store करने का विचार भी रोचक है

    • Linux पर भी वही approach संभव है
      बस यह project Metal का उपयोग करता है, इसलिए macOS-विशेष है
    • अधिकांश engines (जैसे llama.cpp, vllm, sglang) इस तरह की सुविधा का समर्थन करते हैं
      लेकिन MoE models अभी भी bandwidth constraints से काफ़ी प्रभावित होते हैं
    • experts को system memory में load करने की सुविधा पहले से अधिकांश local AI frameworks में उपलब्ध है
      लेकिन decode चरण में GPU की तुलना में CPU transfer overhead ज़्यादा होता है, इसलिए लाभ कम रहता है
      GPU को shared part acceleration के लिए ही इस्तेमाल करना अधिक कुशल है
    • GPU memory में न समाने वाली कुछ layers को CPU पर चलाना भी संभव है
      लेकिन जैसे ही model system RAM या disk तक चला जाता है, performance तेज़ी से गिरती है
    • अगर यह approach काम करे, तो दो 3090 और पर्याप्त RAM के साथ भी व्यक्तिगत lab स्तर की large-scale inference संभव लगती है
  • SSD को bottleneck बताया गया था, लेकिन लेखक का कहना है कि उसे 15GB/s मिला
    जबकि मेरी जानकारी में अधिकतम bandwidth लगभग 8GB/s थी। मैं क्या मिस कर रहा हूँ?

    • इस तरह की architecture में IO काफ़ी bursty होता है
      router का परिणाम आते ही SSD से experts लाए जाते हैं, और उसी क्षण SSD saturate हो जाता है
      average IO लगभग 2970MB/s है, जो SSD limit से काफ़ी कम है
      कुछ tensors को async reads के साथ parallelize किया जाए तो और बेहतर हो सकता है
      मैंने Linux पर io_uring के साथ प्रयोग किया था, जहाँ लगभग 20% reads computation के दौरान parallel में पूरी हो गईं
    • PCIe 5 पीढ़ी में bandwidth दोगुनी हो जाती है, इसलिए नवीनतम SSD और तेज़ हैं
    • MacBook Pro M5 Pro/Max models की SSD speed उसी स्तर की है