Downloads · 30 days
110
21% of all-time downloads
kel-dx/llm-jp-4-33b-thinking-NVFP4
llm-jp-4-33b-thinking-NVFP4 is a text generation model from kel-dx. Use it when you need the model to write or continue text. The card lists the license as apache-2.0.
Weight-only NVFP4 quantization of llm-jp/llm-jp-4-33b-thinking (revision 9e6928628594b205bd3ccd93c2813064aa53fe97) for vLLM on NVIDIA Blackwell. The checkpoint is 21.6 GB, 0.32× the BF16 size.
Downloads · 30 days
110
21% of all-time downloads
All-time downloads
532
Public
Parameters
17.6B
21.6 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors21.6 GB · 100%
How the weights are stored.
U815.6B · 89%
From the Hugging Face model README
Weight-only NVFP4 quantization of
llm-jp/llm-jp-4-33b-thinking
(revision 9e6928628594b205bd3ccd93c2813064aa53fe97) for vLLM on NVIDIA
Blackwell. The checkpoint is 21.6 GB, 0.32× the BF16 size.
On llm-jp-eval it scores 0.673 against 0.661 for BF16 on the same harness and prompts (30 samples per dataset). On a DGX Spark, NVFP4 plus the companion DSpark drafter decodes 5.2× faster than BF16 (19.1 vs 3.6 tok/s at 128 output tokens). On an RTX PRO 6000 the same pair decodes at 103.7 tok/s (NVFP4 alone 62.8, BF16 21.4).
pip install "vllm==0.28.0"
hf download kel-dx/llm-jp-4-33b-thinking-NVFP4 --include "vllm_plugin/*" --local-dir nvfp4
pip install ./nvfp4/vllm_plugin # the llmjp4 reasoning parser (source in this repo)
vllm serve kel-dx/llm-jp-4-33b-thinking-NVFP4 \
--trust-remote-code \
--reasoning-parser llmjp4 \
--kv-cache-dtype fp8 \
--max-model-len 16384 \
--gpu-memory-utilization 0.6
With the DSpark drafter (num_speculative_tokens must be 8):
vllm serve kel-dx/llm-jp-4-33b-thinking-NVFP4 \
--trust-remote-code --reasoning-parser llmjp4 --kv-cache-dtype fp8 \
--max-model-len 16384 --gpu-memory-utilization 0.6 \
--speculative-config '{"method":"dspark","model":"kel-dx/llm-jp-4-33b-thinking-NVFP4-speculator.dspark","num_speculative_tokens":8}'
These are the settings of the quality run below on a DGX Spark. The
throughput run used --gpu-memory-utilization 0.35, which holds the 21.6 GB
checkpoint, the 4.7 GB drafter and single-stream KV at 16k context. On the
GB10's 119 GB unified memory, 0.85 starved the host and the server was killed
by the out-of-memory daemon during KV allocation, so leave host headroom.
Raise --max-model-len as memory allows.
Any OpenAI-compatible client works against /v1/chat/completions. The
llmjp4 parser returns the Harmony analysis channel as reasoning and the
final channel as content, in streaming mode as well.
Use the tokenizer files in this repository. The upstream
llmjp4_tokenizer.py subclasses LlamaTokenizerFast, and under transformers 5
(bundled in vLLM 0.25 and later) that class rebuilds the Unigram tokenizer as
merge-less BPE and emits one token per character. The class shipped here is the
one the LLM-jp 8B repositories already use; tokenizer.json is unchanged
from upstream.
nvidia-modelopt==0.45.0, W4A16_NVFP4_CFG,
modelopt export format, served by vLLM's native NVFP4 path.Linear in the 64 decoder layers (q/k/v/o, gate/up/down) in
NVFP4 W4A16: FP4 weights, group 16, FP8 E4M3 block scales, FP32 per-tensor
scale. lm_head, embeddings and norms stay BF16.max.--kv-cache-dtype fp8). The checkpoint
carries no calibrated KV scales. NVFP4 KV is not used because vLLM's NVFP4 KV
kernel corrupts decode on SM120 and SM121
(vllm#50084).| Category | BF16 | NVFP4 (this checkpoint) | NVFP4 / BF16 |
|---|---|---|---|
| AVG (14 categories) | 0.6612 | 0.6731 | 101.8% |
| JA AVG | 0.6384 | 0.6545 | 102.5% |
| EN AVG | 0.7453 | 0.7432 | 99.7% |
| NLI | 0.8000 | 0.8133 | 101.7% |
| QA | 0.6236 | 0.6446 | 103.4% |
| RC | 0.5667 | 0.6000 | 105.9% |
| CR | 0.8833 | 0.8917 | 100.9% |
| HE | 0.6583 | 0.6444 | 97.9% |
| EL | 0.5632 | 0.5798 | 103.0% |
| FA | 0.2890 | 0.2921 | 101.1% |
| MR | 0.6313 | 0.6341 | 100.5% |
| MT | 0.8529 | 0.8523 | 99.9% |
| CG | 0.9667 | 1.0000 | 103.4% |
| SUM | 0.0816 | 0.0841 | 103.0% |
| IF | 0.6764 | 0.6792 | 100.4% |
| BBH | 0.8083 | 0.8083 | 100.0% |
| LM | 0.8556 | 0.9000 | 105.2% |
Setup: 30 samples per dataset, 58 datasets plus xlsum_ja, temperature 0,
dataset-default few-shot (4 or 0), max_tokens = output length + 4096 for
reasoning, no drafter, vLLM 0.28.0, same prompts for both. BF16 ran on an
RTX PRO 6000 with bf16 KV, NVFP4 on a DGX Spark with fp8 KV.
Notes:
benchmark/phase3-llm-jp-eval-{nvfp4,bf16}-r4096-vllm0.28.0-sumfix.json,
recovery table benchmark/phase3-recovery-bf16-vs-nvfp4-sumfix.json.
Files without the -sumfix suffix are the original scoring.ELYZA-tasks-100 prompts, temperature 0, one request at a time, exactly N
generated tokens per request (ignore_eos), decode tok/s excluding
time-to-first-token, mean over 100 prompts.
| Configuration | 128 tokens | 1024 tokens | vs BF16 |
|---|---|---|---|
BF16 llm-jp/llm-jp-4-33b-thinking (vLLM 0.27.1, bf16 KV) | 3.64 | — | 1.0× |
| NVFP4 (this checkpoint) | 11.04 | 10.94 | 3.0× |
| NVFP4 + DSpark drafter (k=8) | 19.05 | 20.08 | 5.2× |
The BF16 row is from an earlier run on vLLM 0.27.1 with a pre-fix tokenizer (longer prompts); it was not repeated on 0.28.0.
| Configuration | 128 tokens | 1024 tokens | vs BF16 |
|---|---|---|---|
BF16 llm-jp/llm-jp-4-33b-thinking (bf16 KV) | 21.44 | 21.29 | 1.0× |
| NVFP4 (this checkpoint) | 62.85 | 62.35 | 2.9× |
| NVFP4 + DSpark drafter (k=8) | 103.68 | 109.53 | 4.8× / 5.1× |
The NVFP4 legs ran at --gpu-memory-utilization 0.9, the BF16 leg at 0.85.
Per-request records for every row are in benchmark/.
vLLM 0.28.0 (serving), nvidia-modelopt 0.45.0, transformers 5.5.4 (quantization) and 5.15.1 (serving), base model revision 9e69286.
Apache-2.0, following the base model. Base model by the Research and Development Center for Large Language Models, National Institute of Informatics (LLM-jp). Quantization, drafter and measurements by kel-dx.