- GPU·RAM·NVMe के बीच tensor placement को optimize करके बड़े language models चलाने वाला storage-hierarchy-aware inference scheduler
- 32GB Mac Mini पर Mixtral 8x7B(31GB) मॉडल को 2.2 tok/s और Llama 70B(40GB) मॉडल को 0.3 tok/s की गति से चला सकता है
- access pattern और hardware bandwidth का विश्लेषण करके physical memory से बड़े models भी स्थिर रूप से चलाता है, यहां तक कि वे मॉडल भी संभाल सकता है जिन पर मौजूदा llama.cpp OOM के कारण विफल हो जाता था
- MoE structure की expert routing, neuron cache, prefetch के जरिए I/O को अधिकतम 75% तक घटाता है और 99.5% cache hit rate हासिल करता है
- model size और hardware के अनुसार Full-resident, Expert-streaming, Dense FFN-streaming modes अपने-आप चुनकर सर्वोत्तम performance बनाए रखता है
- Ollama-compatible HTTP API देता है, इसलिए OpenClaw आदि के साथ integrate किया जा सकता है, और SSD को read-only मोड में उपयोग करके SSD life घटाए बिना NVMe-based inference को support करता है
अवलोकन
- Hypura Apple Silicon वातावरण के लिए एक storage-hierarchy-aware LLM inference scheduler है, जो GPU·RAM·NVMe के बीच tensor placement optimization करने वाला टूल है
- access pattern, bandwidth cost और hardware performance के आधार पर tensors को वितरित करके physical memory से बड़े models भी स्थिर रूप से चला सकता है
- 32GB Mac Mini पर Mixtral 8x7B(31GB) मॉडल को 2.2 tok/s और Llama 70B(40GB) मॉडल को 0.3 tok/s की गति से चला सकता है
- उसी वातावरण में llama.cpp OOM (Out of Memory) के कारण चल नहीं पाता
समस्या की पृष्ठभूमि
- consumer Mac में तेज़ unified memory और NVMe storage होता है, लेकिन memory capacity सीमित होती है
- उदाहरण के लिए 32GB M1 Max सीधे 40GB मॉडल लोड नहीं कर सकता, जिससे अत्यधिक swap और OOM termination होता है
- Hypura model structure का विश्लेषण करके layer-wise optimal placement करता है और इस समस्या को हल करता है
model structure के आधार पर hierarchical placement
- Norms और Embeddings: छोटे होते हैं, लेकिन हर token पर access होते हैं, इसलिए GPU पर स्थिर रखे जाते हैं
- MoE Expert Routing: sparsity का उपयोग, हर token पर 8 में से सिर्फ 2 experts सक्रिय
- router interception से active experts की पहचान करके केवल आवश्यक हिस्से NVMe से लोड करता है
- I/O में 75% कमी, neuron cache 99.5% hit rate प्राप्त
- co-activation tracking के जरिए अगले active experts की भविष्यवाणी कर पहले से prefetch करता है
- Dense FFN Weights: model size का लगभग 60% हिस्सा
- NVMe से dynamic pool buffer के माध्यम से streaming
- prefetch lookahead depth उपलब्ध memory के अनुसार स्वतः समायोजित होती है
- नतीजतन, जो मॉडल पारंपरिक mmap तरीके से crash हो जाते थे, वे भी चल सकते हैं, और memory में फिट होने वाले मॉडल बिना overhead के Metal GPU speed पर चलते हैं
यह कैसे काम करता है
- Hypura GGUF files पढ़ता है और GPU·RAM·NVMe bandwidth की profiling करता है
- हर tensor को नीचे दिए गए तीन layers में से एक में रखा जाता है
- GPU(Metal): Attention, Norm, Embedding layers
- RAM: वे overflow layers जिन्हें GPU पर लोड नहीं किया जा सकता
- NVMe: बाकी layers,
F_NOCACHE+preadके साथ direct I/O
- model size और hardware के अनुसार inference mode अपने-आप चुना जाता है
- Full-resident: पूरा model GPU+RAM में loaded, कोई NVMe I/O नहीं
- Expert-streaming: MoE models के लिए, केवल non-expert tensors GPU में resident रहते हैं, expert tensors NVMe से stream होते हैं
- Dense FFN-streaming: non-MoE बड़े models के लिए, Attention+Norm GPU पर और FFN NVMe से stream होता है
- pool buffer size, prefetch depth, memory budget hardware profile के आधार पर अपने-आप गणना होते हैं
प्रदर्शन
- test environment: M1 Max, 32GB unified memory, NVMe 5.1GB/s
- मुख्य benchmark परिणाम
- Qwen 2.5 14B Q4_K_M (8.4GB): GPU में पूरी तरह loaded, 21 tok/s
- Mixtral 8x7B Q5_K_M (30.9GB): Expert-streaming mode, 2.2 tok/s, 99.5% cache hit rate
- Llama 3.3 70B Q4_K_M (39.6GB): Dense FFN-streaming mode, 0.3 tok/s, 24-slot pool, 7-layer prefetch
- memory में फिट होने वाले models के लिए 0 overhead, और उससे बड़े models Hypura की वजह से चलने योग्य बने रहते हैं
इंस्टॉलेशन और रन
- Rust 1.75+ और CMake आवश्यक
- installation प्रक्रिया
git clone --recurse-submodules https://github.com/hypura/hypura.git cd hypura cargo build --release - run examples
hypura profile hypura run ./model.gguf --prompt "Hello, world" hypura run ./model.gguf --interactive hypura bench ./model.gguf hypura inspect ./model.gguf - जिन models का परीक्षण नहीं हुआ है, उन्हें
--max-tokens 10के साथ टेस्ट करने की सलाह दी जाती है
Ollama-compatible server
- Hypura Ollama-compatible HTTP API देता है, इसलिए OpenClaw जैसे Ollama-based tools के साथ पूरी तरह compatible है
hypura serve ./model.gguf Endpoint: http://127.0.0.1:8080 API: /api/generate, /api/chat, /api/tags - मुख्य endpoints
Endpoint कार्य GET /status check GET /api/tagsloaded models की सूची GET /api/versionserver version POST /api/showmodel metadata POST /api/generatetext generation POST /api/chatconversational generation - OpenClaw integration के लिए
~/.openclaw/openclaw.jsonमें Ollama base URL को Hypura पर सेट करें - server options
hypura serve [OPTIONS] --host default 127.0.0.1 --port default 8080 --context default 4096
आर्किटेक्चर
- Cargo workspace संरचना, दो crates से बना
hypura: main binary और libraryhypura-sys: llama.cpp FFI binding (CMake build)
- मुख्य modules
मॉड्यूल भूमिका scheduler/placement.rsGPU/RAM/NVMe के बीच tensor placement optimization compute/inference.rsinference engine और server के लिए load/generate functions compute/nvme_backend.rsNVMe streaming, neuron cache, evaluation callback server/routes.rsOllama-compatible HTTP handler profiler/hardware profiling cli/bench.rsbenchmark tool model/tensor_role.rstensor role classification
FAQ
-
SSD life की कोई समस्या नहीं
- Hypura SSD से केवल read करता है, write नहीं
- NVMe I/O
pread()+F_NOCACHEके साथ read-only मोड में होता है - SSD केवल cold storage की भूमिका निभाता है, computation RAM/GPU पर होता है
- write केवल benchmark result JSON, stats files आदि तक सीमित है, वह भी KB स्तर पर बहुत मामूली
सुरक्षा दिशानिर्देश
- अगर model RAM limit (–4GB margin) से बड़ा हो, तो
bench --baselineब्लॉक किया जाता है - जिन models का परीक्षण नहीं हुआ है, उन्हें
--max-tokens 10के साथ टेस्ट करें - test models
./test-models/directory में रखे जाते हैं
लाइसेंस
- MIT License
नैतिक सूचना
- repository का code लेखक ने सीधे नहीं लिखा
- यह LLM का उपयोग करके किया गया instruction-based code generation experiment है
- यह NVMe-based inference की संभावनाओं का पता लगाने के लिए बनाया गया प्रोजेक्ट है
अभी कोई टिप्पणी नहीं है.