- 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 लाइसेंस लागू
अभी कोई टिप्पणी नहीं है.