NVIDIA Nemotron Apple silicon MLX Vontra oMLX

NVIDIA Nemotron 3.5 Lightning 30B-A3B — MLX 6-bit

A native Apple-silicon conversion of nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16, quantized with stock 6-bit affine weights and packaged for MLX-LM and oMLX.

Original model · NVIDIA Nemotron · MLX-LM · OpenMDW 1.1 license

About this conversion

This repository contains a stock 6-bit affine MLX conversion of NVIDIA Nemotron 3.5 Lightning. The source is a 30B-total / 3B-active hybrid mixture-of-experts model that interleaves Mamba-2, sparse MoE, and attention layers. The upstream tokenizer, chat template, and generation configuration are preserved.

Item Value
Base model nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16
Format MLX safetensors
Quantization 6-bit affine, group size 64
Conversion stack mlx-lm 0.31.3, mlx 0.32.0
Weight shards 5
Weight size 25.67 GB (23.90 GiB)
Maximum configured context 262,144 tokens
Architecture nemotron_h — Mamba-2 + sparse MoE + attention

MLX-LM reported an effective precision of 6.503 bits per weight.

Apple-silicon performance

This checkpoint was load-tested and generation-tested on the following machine:

Hardware Configuration
Host Mac Studio
Chip Apple M3 Ultra
CPU 32 cores (24 performance + 8 efficiency)
Unified memory 256 GB
Runtime MLX-LM 0.31.3 / MLX 0.32.0

A warmed local test produced:

Measurement Result
Decode (median) 138.38 tokens/s
Reported peak memory 25.84 GB
Timed runs 3 × 256 generated tokens
Warm-up 32 generated tokens
Prompt 36 tokens after chat templating

The decode figure is the median of three greedy 256-token runs after a 32-token Metal-kernel warm-up. It is a practical local reference, not a controlled cross-platform benchmark. Prompt length, context growth, sampler settings, memory pressure, thermal state, and MLX/oMLX versions can materially change performance.

Quick start with MLX-LM

Install recent MLX-LM and Hugging Face tooling:

python -m pip install -U mlx-lm huggingface_hub

Run directly from the Hub:

mlx_lm.generate \
  --model Vontra/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-6bit \
  --prompt "Explain why hybrid Mamba and MoE architectures are efficient." \
  --max-tokens 512 \
  --temp 1.0 \
  --top-p 0.95

Reasoning mode is enabled by the upstream chat template by default. To disable it:

mlx_lm.generate \
  --model Vontra/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-6bit \
  --chat-template-config '{"enable_thinking": false}' \
  --prompt "Write a short hello-world program in Swift." \
  --max-tokens 256

Python usage:

from mlx_lm import load, generate

model, tokenizer = load("Vontra/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-6bit")
messages = [
    {"role": "user", "content": "Explain sparse mixture-of-experts routing."}
]
prompt = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    tokenize=False,
    enable_thinking=False,
)
print(generate(model, tokenizer, prompt=prompt, max_tokens=512))

To download the repository first:

hf download Vontra/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-6bit \
  --local-dir ~/.omlx/models/Vontra/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-6bit

Using it with oMLX

  1. Place the downloaded model at ~/.omlx/models/Vontra/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-6bit.
  2. Refresh the oMLX model registry.
  3. Load NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-6bit and use the normal chat UI or OpenAI-compatible endpoint.

Example request:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OMLX_API_KEY" \
  -d '{
    "model": "NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-6bit",
    "messages": [{"role": "user", "content": "Say hello from Nemotron on MLX."}],
    "temperature": 1.0,
    "top_p": 0.95,
    "max_tokens": 128
  }'

For long prompts, begin with a conservative context limit and increase it while watching memory pressure. The configured 256K context is a model capability, not a guarantee that every host can prefill that context within its available unified memory.

Architecture

Nemotron 3.5 Lightning is a hybrid sparse model designed for efficient agentic and reasoning workloads.

Architecture detail Upstream value
Total / active parameters 30B / 3B
Layers 52
Routed / shared experts 128 / 1
Active routed experts 6
Attention heads / KV heads 32 / 2
Hidden size 2,688
Expert intermediate size 1,856
Vocabulary size 131,072
Configured context 262,144 tokens

The upstream release is intended for coding, tool use, reasoning, research, and customization. For NVIDIA's evaluations, deployment guidance, intended use, limitations, safety information, and full architecture discussion, see the original model card.

Conversion and validation notes

  • Source weights: NVIDIA's BF16 checkpoint.
  • Quantization group size: 64.
  • Quantization mode: affine.
  • The upstream chat_template.jinja is preserved.
  • All 729 converted tensors and every indexed shard were checked locally.
  • The model was loaded and exercised through end-to-end generation on Apple silicon.
  • Quantization can reduce output quality relative to BF16; use a higher-precision variant when quality matters more than memory use.

This is a community conversion, not an official NVIDIA release. Validate quality and numerical behavior on your own representative workload before production use.

License and attribution

The upstream model is released under the OpenMDW License Agreement, version 1.1. A copy is included in this repository; review it before use or redistribution.

All model design, training, benchmark, and upstream documentation credit belongs to NVIDIA and the original contributors. The MLX conversion, Apple-silicon validation, and packaging are provided by Vontra.

Downloads last month
182
Safetensors
Model size
7B params
Tensor type
BF16
·
U32
·
F32
·
MLX
Hardware compatibility
Log In to add your hardware

6-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Vontra/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-6bit

Quantized
(57)
this model