Text Generation
MLX
Safetensors
nemotron_h
turboquant
kv-cache-quantization
nemotron
nvidia
mamba2
hybrid
quantized
2bit
conversational
custom_code
2-bit
Instructions to use majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit with MLX:
# Make sure mlx-lm is installed # pip install --upgrade mlx-lm # Generate text with mlx-lm from mlx_lm import load, generate model, tokenizer = load("majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit") prompt = "Write a story about Einstein" messages = [{"role": "user", "content": prompt}] prompt = tokenizer.apply_chat_template( messages, add_generation_prompt=True ) text = generate(model, tokenizer, prompt=prompt, verbose=True) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Pi
How to use majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit"
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent new
How to use majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit with Hermes Agent:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit"
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit
Run Hermes
hermes
- OpenClaw new
How to use majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit"
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit" \ --custom-provider-id mlx-lm \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
- MLX LM
How to use majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit", "messages": [ {"role": "user", "content": "Hello"} ] }'
Add model card
Browse files
README.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
base_model: nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16
|
| 3 |
+
library_name: mlx
|
| 4 |
+
tags:
|
| 5 |
+
- turboquant
|
| 6 |
+
- kv-cache-quantization
|
| 7 |
+
- nemotron
|
| 8 |
+
- nvidia
|
| 9 |
+
- mamba2
|
| 10 |
+
- hybrid
|
| 11 |
+
- quantized
|
| 12 |
+
- mlx
|
| 13 |
+
- 2bit
|
| 14 |
+
license: other
|
| 15 |
+
license_name: nvidia-open-model-license
|
| 16 |
+
license_link: https://developer.download.nvidia.com/licenses/nvidia-open-model-license-agreement-june-2024.pdf
|
| 17 |
+
pipeline_tag: text-generation
|
| 18 |
+
---
|
| 19 |
+
|
| 20 |
+
# Nemotron-3-Nano-4B - TurboQuant MLX 2-bit
|
| 21 |
+
|
| 22 |
+
**2-bit weight-quantized MLX version** of [nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16) with TurboQuant KV-cache quantization. Optimized for Apple Silicon inference via the [MLX](https://github.com/ml-explore/mlx) framework. Maximum compression for running on memory-constrained devices. The dense hybrid Mamba-2 + Attention architecture supports up to 262K context length.
|
| 23 |
+
|
| 24 |
+
Approximate model size: **~1.2 GB**
|
| 25 |
+
|
| 26 |
+
## Model Specifications
|
| 27 |
+
|
| 28 |
+
| Property | Value |
|
| 29 |
+
|---|---|
|
| 30 |
+
| **Base Model** | [nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16) |
|
| 31 |
+
| **Parameters** | 4 billion (dense) |
|
| 32 |
+
| **Architecture** | Hybrid Mamba-2 + Attention (dense) |
|
| 33 |
+
| **Context Length** | 262,144 tokens (262K) |
|
| 34 |
+
| **License** | NVIDIA Open Model License (commercial use OK) |
|
| 35 |
+
| **Weight Quantization** | 2-bit (~1.2 GB) |
|
| 36 |
+
| **KV-Cache Quantization** | TurboQuant |
|
| 37 |
+
| **Framework** | MLX (Apple Silicon) |
|
| 38 |
+
|
| 39 |
+
## Quickstart
|
| 40 |
+
|
| 41 |
+
```python
|
| 42 |
+
from mlx_lm import load, generate
|
| 43 |
+
from turboquant import TurboQuantCache
|
| 44 |
+
|
| 45 |
+
model, tokenizer = load("majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-2bit")
|
| 46 |
+
|
| 47 |
+
prompt = "Explain the theory of relativity."
|
| 48 |
+
response = generate(model, tokenizer, prompt=prompt, max_tokens=512)
|
| 49 |
+
print(response)
|
| 50 |
+
```
|
| 51 |
+
|
| 52 |
+
## What is TurboQuant?
|
| 53 |
+
|
| 54 |
+
TurboQuant ([arXiv: 2504.19874](https://arxiv.org/abs/2504.19874)) is a KV-cache quantization technique that compresses the key-value cache used during autoregressive generation. Combined with 2-bit weight quantization in MLX, this provides a dual compression strategy: smaller model weights plus compressed KV cache for efficient long-context generation.
|
| 55 |
+
|
| 56 |
+
Key benefits:
|
| 57 |
+
- **No weight modification** -- model weights stay at original precision
|
| 58 |
+
- **Reduced inference memory** -- KV cache is compressed significantly
|
| 59 |
+
- **Longer context windows** -- fit more tokens in the same GPU memory
|
| 60 |
+
- **Minimal quality loss** -- carefully designed quantization preserves generation quality
|
| 61 |
+
|
| 62 |
+
## KV-Cache Quantization Comparison
|
| 63 |
+
|
| 64 |
+
| Method | Prefill Speed | Decode Speed | Memory Savings | Reference |
|
| 65 |
+
|---|---|---|---|---|
|
| 66 |
+
| **TurboQuant** | 1x (baseline) | 1x (baseline) | High | [arXiv: 2504.19874](https://arxiv.org/abs/2504.19874) |
|
| 67 |
+
| **RotorQuant** | **5.3x faster** | **28% faster** | High | [GitHub](https://github.com/scrya-com/rotorquant) |
|
| 68 |
+
|
| 69 |
+
## Memory Estimates (Nemotron-3-Nano-4B)
|
| 70 |
+
|
| 71 |
+
| Precision | Approximate Size | MLX Variant |
|
| 72 |
+
|---|---|---|
|
| 73 |
+
| BF16 (original) | ~8 GB | -- |
|
| 74 |
+
| 8-bit quantized | ~4 GB | [TurboQuant-MLX-8bit](https://huggingface.co/majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-8bit) |
|
| 75 |
+
| 4-bit quantized | ~2.3 GB | [TurboQuant-MLX-4bit](https://huggingface.co/majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-4bit) |
|
| 76 |
+
| **2-bit quantized** | **~1.2 GB** | **This model** |
|
| 77 |
+
|
| 78 |
+
## Hardware Requirements
|
| 79 |
+
|
| 80 |
+
This model requires approximately 1.2 GB of unified memory. Recommended hardware:
|
| 81 |
+
- Apple M1 (8 GB+)
|
| 82 |
+
- Apple M2 (8 GB+)
|
| 83 |
+
- Apple M3 (8 GB+)
|
| 84 |
+
- Apple M4 (8 GB+)
|
| 85 |
+
- Any Apple Silicon Mac with 8 GB+ unified memory
|
| 86 |
+
|
| 87 |
+
## See Also
|
| 88 |
+
|
| 89 |
+
- [nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16) -- Base model
|
| 90 |
+
- [majentik/Nemotron-3-Nano-4B-TurboQuant](https://huggingface.co/majentik/Nemotron-3-Nano-4B-TurboQuant) -- TurboQuant KV-cache only (transformers)
|
| 91 |
+
- [majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-8bit](https://huggingface.co/majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-8bit) -- MLX 8-bit variant
|
| 92 |
+
- [majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-4bit](https://huggingface.co/majentik/Nemotron-3-Nano-4B-TurboQuant-MLX-4bit) -- MLX 4-bit variant
|
| 93 |
+
- [majentik/Nemotron-3-Nano-4B-RotorQuant-MLX-2bit](https://huggingface.co/majentik/Nemotron-3-Nano-4B-RotorQuant-MLX-2bit) -- RotorQuant MLX 2-bit variant
|
| 94 |
+
- [TurboQuant Paper (arXiv: 2504.19874)](https://arxiv.org/abs/2504.19874)
|
| 95 |
+
- [MLX Framework](https://github.com/ml-explore/mlx)
|