Note: This model requires manual fixes to config.json and tokenizer_config.json after conversion. See Conversion Notes / 変換時の注意事項 for details.
変換後に config.json と tokenizer_config.json の手動修正が必要です。詳細は変換時の注意事項を参照してください。
⚠️ LM Studio runtime v1.5.0 / v1.6.0 users: This model fails to load with KeyError: '-'. Manually created patch required. → See LM Studio section below.
⚠️ LM Studio runtime v1.5.0 / v1.6.0 をお使いの方: このモデルは KeyError: '-' エラーでロードできません。手動で作成できるパッチが必要です。→ 下記 LM Studio セクションを参照。
NVIDIA-Nemotron-Nano-9B-v2-Japanese is a hybrid Mamba-Transformer model (Nemotron-H architecture) optimized for the Japanese language. It achieves top-tier performance among sub-10B models on the Nejumi Leaderboard 4, Japan's most comprehensive LLM evaluation platform.
Note on MLX inference speed: This model uses the Mamba-2 hybrid architecture (Nemotron-H), which relies on state space model (SSM) computations instead of standard attention. On CUDA (NVIDIA GPUs), SSM operations are highly optimized, giving Nemotron-H a significant speed advantage. However, on Apple Silicon via MLX, SSM kernels are not yet as optimized as attention-based operations, resulting in slower token generation than comparably-sized Transformer models. NVIDIA's reported speed figures (up to 6× faster than Qwen3-8B) are CUDA-specific and should not be expected on MLX.
Tested on Apple MacBook Pro M4 Max (128GB):
Metric
Value
Peak Memory
17.9 GB
Prompt Processing
~65 tokens/sec
Token Generation
~26 tokens/sec
Quality Evaluation
Disclaimer: The following results are based on a preliminary, limited-scope evaluation conducted by the model converter. This is not an official benchmark. Results may vary depending on hardware, software versions, and prompt conditions.
WikiText-2 Perplexity (lower is better — widely used standard benchmark for language modeling; full test split, 62 documents):
Quantization
Word Perplexity
Degradation
Verdict
fp16 (baseline)
10.11
—
—
8-bit
10.12
+0.01 (+0.1%)
✅ Pass
4-bit
10.82
+0.71 (+7.0%)
✅ Pass
JCommonsenseQA Accuracy (higher is better — widely used standard benchmark for Japanese commonsense reasoning; full validation split, 1,119 questions):
Quantization
Accuracy
vs. fp16
Verdict
fp16 (baseline)
79.6%
—
—
8-bit
79.4%
−0.2pt
✅ Pass
4-bit
75.4%
−4.2pt
⚠️ Warn
Note: 4-bit passes the English perplexity threshold but shows a measurable drop in Japanese commonsense reasoning accuracy (−4.2 percentage points). For tasks requiring precise Japanese output, the 8-bit version is preferred.
This model uses reasoning traces (<think>...</think>) by default. The original NVIDIA model supports /think and /no_think system prompts to control reasoning, but on MLX (mlx-lm / LM Studio MLX backend), /no_think does not suppress reasoning traces. See the known limitation below.
⚠️ Known Limitation: /no_think on MLX (mlx-lm / LM Studio MLX backend)
/no_think does not suppress reasoning traces when running via mlx-lm or LM Studio's MLX backend. The model generates <think>...</think> traces regardless of the /no_think directive, and the output length is identical to /think mode. This is an upstream behavior — the original NVIDIA model's chat_template always inserts <think>, and /no_think is designed to be handled by the inference engine (e.g., vLLM on CUDA), not the prompt template.
Impact on LM Studio (MLX backend): The MLX backend does not separate <think> content from the response. Reasoning tokens consume the max_tokens budget, which can cause empty responses if max_tokens is too low (e.g., 1500). Set max_tokens to 4096 or higher as a workaround.
GGUF format is not affected — LM Studio's llama.cpp backend correctly separates reasoning content from response content.
LM Studio
⚠️ LM Studio v1.5.0/v1.6.0 Known Issue: All Nemotron 9B series models fail to load with KeyError: '-' in LM Studio v1.5.0. This is a LM Studio bug, not a model issue. v1.4.0 and earlier work without any patch. The Japanese MLX versions published by tocchitocchi have been verified working on v1.5.0 with the patches below.
Three files need to be patched under LM Studio's bundled Python packages. Apply once, then restart LM Studio.
The model files in this repository are already fixed and ready to use. The following instructions are only for those who want to convert the original model themselves.
Important: When converting this model from the original safetensors using mlx_lm.convert, two manual fixes are required after conversion. Without these fixes, the model will produce broken output.
1. Replace tokenizer_config.json
The conversion process generates a simplified tokenizer_config.json with "tokenizer_class": "TokenizersBackend", which is incorrect. Replace it with the original from NVIDIA:
import json
with open('config.json') as f:
cfg = json.load(f)
cfg['torch_dtype'] = 'bfloat16'
if 'dtype' in cfg:
del cfg['dtype']
for key in ['quantization', 'quantization_config']:
if 'mode' in cfg.get(key, {}):
del cfg[key]['mode']
cfg['time_step_limit'] = [0.0, float('inf')]
with open('config.json', 'w') as f:
json.dump(cfg, f, indent=4)
import json
with open('config.json') as f:
cfg = json.load(f)
cfg['torch_dtype'] = 'bfloat16'
if 'dtype' in cfg:
del cfg['dtype']
for key in ['quantization', 'quantization_config']:
if 'mode' in cfg.get(key, {}):
del cfg[key]['mode']
cfg['time_step_limit'] = [0.0, float('inf')]
with open('config.json', 'w') as f:
json.dump(cfg, f, indent=4)