• C++/CUDA-आधारित LLM inference engine, जो GPU memory streaming और direct NVMe I/O के जरिए Llama 70B model को RTX 3090(24GB VRAM) पर चलाने में सक्षम बनाता है
  • 3-स्तरीय adaptive caching structure का उपयोग करके VRAM, pinned RAM और NVMe/mmap को अपने आप विभाजित करता है, और mmap की तुलना में अधिकतम 83 गुना speedup हासिल करता है
  • gpu-nvme-direct backend CPU को पूरी तरह bypass करके NVMe से GPU तक सीधे data transfer करता है, जिससे PCIe bandwidth का अधिकतम उपयोग होता है
  • Layer skip और self-speculative decoding फीचर अनावश्यक computation को घटाते हैं और quality loss के बिना processing speed बढ़ाते हैं
  • यह consumer hardware पर भी बहुत बड़े models को कुशलता से चलाने में मदद करता है, जिससे high-performance LLM inference की accessibility बढ़ाने की संभावना दिखती है

NTransformer अवलोकन

  • यह उच्च-दक्षता वाला C++/CUDA LLM inference engine है, जो RTX 3090(24GB VRAM) पर Llama 70B model चलाता है
    • यह GPU memory के जरिए model layers को stream करता है, और वैकल्पिक रूप से direct NVMe I/O का उपयोग कर CPU को पूरी तरह bypass करता है
  • CUDA Toolkit के अलावा कोई external dependency नहीं, PyTorch या cuBLAS की जरूरत नहीं
  • GGUF model format को support करता है, और Q4_0, Q8_0, Q4_K_M, Q5_K, Q6_K, F16, F32 quantization formats का उपयोग किया जा सकता है

प्रदर्शन और caching structure

  • 3-स्तरीय adaptive caching(3-Tier Adaptive Caching)
    • VRAM-resident layers (0 I/O)
    • pinned RAM (केवल H2D transfer के लिए)
    • NVMe/mmap fallback
  • RTX 3090 + 48GB RAM environment में mmap की तुलना में 83 गुना speedup
  • PCIe Gen3 x8 bandwidth(लगभग 6.5 GB/s) bottleneck के रूप में काम करती है
  • Q4_K_M quantization VRAM में 10 अतिरिक्त layers (36 vs 26) लोड कर transfer volume को कम करती है
  • Layer skip (cosine similarity-आधारित) के जरिए 80 में से 20 layers को छोड़ा जाता है, जबकि quality loss न्यूनतम रहता है

मुख्य फीचर

  • SLEP streaming: NVMe read, PCIe DMA और GPU computation को double buffer के साथ overlap करके process करता है
  • gpu-nvme-direct backend: NVMe data को सीधे GPU-accessible pinned memory में पढ़ता है
  • Self-speculative decoding: VRAM-resident layers को draft model की तरह उपयोग करता है, इसलिए अतिरिक्त model की जरूरत नहीं
  • Automatic data path selection: VRAM-resident > pinned RAM H2D > mmap pinned > CPU memcpy
  • Llama architecture support: RoPE, GQA, SwiGLU, RMSNorm, KV cache शामिल

सिस्टम आवश्यकताएँ

  • Linux (Ubuntu, kernel 6.17+), CUDA Toolkit 13.1, gcc/g++ 14, CMake 3.24+
  • Compute Capability 8.0+ GPU (RTX 3090 पर परीक्षण किया गया)
  • direct NVMe I/O उपयोग के लिए अलग PCIe slot में NVMe SSD और gpu-nvme-direct library आवश्यक

Direct NVMe streaming

  • यदि model VRAM में फिट नहीं होता, तो NVMe → GPU direct path के जरिए CPU को पूरी तरह बाहर रखा जाता है
    • data flow: NVMe SSD → DMA → pinned staging memory → PCIe H2D → GPU buffer → computation
  • NVMe को VFIO से bind करके user space से सीधे access किया जाता है
  • प्रत्येक layer (70B Q6_K के आधार पर लगभग 670MB) को लगभग 202ms में 670 NVMe commands के जरिए पढ़ा जाता है
  • NVMe read, H2D DMA और GPU computation को double-buffer pipeline में parallel process किया जाता है

सिस्टम सेटअप और जोखिम चेतावनी

  • auto-setup script(setup_system.sh) GRUB, NVIDIA DKMS, CUDA headers, VFIO, NVMe binding को क्रमवार configure करती है
  • इसमें IOMMU disable करना, kernel module patching, NVMe VFIO binding जैसे high-risk tasks शामिल हैं
  • गलत configuration से boot failure, NVMe data loss, system instability हो सकती है
  • boot drive का कभी उपयोग न करें, अलग dedicated NVMe device आवश्यक है
  • सभी बदलावों के लिए backup और restore scripts उपलब्ध हैं

आर्किटेक्चर और code structure

  • src/ directory के मुख्य components
    • core/: tensor, memory allocation, GPU device management
    • cuda/: GEMV, RMSNorm, RoPE, SwiGLU, softmax kernels
    • memory/: NVMe और mmap-आधारित SLEP streaming engine
    • model/: Transformer components, GGUF loader, attention, FFN, normalization
    • inference/: tokenizer, sampler, engine
  • scripts/: system setup, NVMe binding और restore scripts शामिल

विकास चरण roadmap

  • चरण 1: Llama 8B Q8_0, custom CUDA kernels, 48.9 tok/s (पूर्ण)
  • चरण 2: SLEP streaming, single GPU पर 70B चलाना, 33 गुना speedup (पूर्ण)
  • चरण 3: Q4_K_M/Q5_K support, Layer skip, self-speculative decoding, F16 KV cache (पूर्ण)
  • चरण 4: NVMe Direct backend, GPU-driven NVMe reads 3.35 GB/s (पूर्ण)
  • चरण 5: inference optimization और public C API (निर्धारित)

लाइसेंस

  • BSD-2-Clause लाइसेंस लागू

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.