Ornith-1.0-35B-NVFP4-noMTP-BF16-GGUF
GGUF conversion of
sakamakismile/Ornith-1.0-35B-NVFP4,
preserving the compressed-tensors NVFP4 weights, with a
BF16 vision projector (mmproj) and
BF16 (lossless) embedding & output layers. Text-only checkpoint (no MTP head). Benchmarked on an RTX 5090 (Blackwell) with
llama-benchy.
Highlights
- NVFP4 preserved — 430 NVFP4 tensors (MoE experts, attention, linear-attention/SSM) kept in their native 4-bit format, not re-quantized.
- Lossless embeddings & output —
token_embd and lm_head are kept at BF16 (no Q4_K/Q6_K), so vocabulary and output-projection precision is unchanged from the source.
- Vision / mmproj — a separate BF16 vision projector enables image-text-to-text.
- No MTP — the source checkpoint ships no multi-token-prediction head, so this is a clean autoregressive (AR) model (
block_count = 40).
- Blackwell native FP4 — prefill/decoding use native FP4 tensor-core kernels on RTX 50-series (
sm_120).
Files
| File | Size | Description |
|---|
Ornith-1.0-35B-NVFP4-noMTP-BF16.gguf | 19.60 GiB | Main GGUF — NVFP4 body preserved, BF16 token_embd/lm_head |
mmproj-Ornith-1.0-35B-BF16.gguf | 861 MiB | Vision projector (mmproj) for image input |
Usage (llama.cpp)
1# Text-only
2llama-server -m Ornith-1.0-35B-NVFP4-noMTP-BF16.gguf --host 0.0.0.0 --port 8080 --jinja
3
4# With vision (image-text-to-text)
5llama-server -m Ornith-1.0-35B-NVFP4-noMTP-BF16.gguf \
6 --mmproj mmproj-Ornith-1.0-35B-BF16.gguf \
7 --host 0.0.0.0 --port 8080 --jinja
For a Blackwell (RTX 50xx) build with native FP4 acceleration, compile llama.cpp with CUDA 12.8+ and
-DCMAKE_CUDA_ARCHITECTURES=120. -ngl 999 offloads all layers; -c 262144 uses the full context.
This is a thinking model. Reasoning is emitted inside <think>…</think>. To disable thinking for a
turn, pass "chat_template_kwargs": {"enable_thinking": false} in the request body.
Vision
The model is multimodal (image-text-to-text). Image input requires the separate mmproj file via --mmproj.
Verified on llama.cpp with a synthetic image (the model correctly described the shape and color).
Loading the mmproj has negligible impact on text-generation throughput (see benchmarks).
Benchmarks
RTX 5090 (32 GB), llama.cpp b9812 (0e53b82a9, MSVC 19.50, sm_120a, BLACKWELL_NATIVE_FP4=1),
llama-benchy (pp = 512/4096, tg = 512, runs = 3, --latency-mode generation),
tokenizer deepreinforce-ai/Ornith-1.0-35B, ctx = 262144, KV cache q8_0. Autoregressive (no spec decoding).
| Mode | pp | Prefill (pp) tok/s | Generation (tg) tok/s | Peak tg |
|---|
| Text | 512 | 6539.84 ± 84.57 | 193.58 ± 3.20 | 194.00 |
| Text | 4096 | 7754.81 ± 288.02 | 193.75 ± 1.92 | 194.33 |
| Vision (+mmproj) | 512 | 6076.30 ± 335.59 | 188.55 ± 1.97 | 189.00 |
| Vision (+mmproj) | 4096 | 7674.93 ± 86.51 | 190.58 ± 0.24 | 191.00 |
Coherence test PASSED in all runs; generation latency ≈ 112–125 ms.
Runtime configuration
Currently loaded with llama-server on RTX 5090:
| Parameter | Value |
|---|
Context (c) | 196 608 |
| Max tokens | 32 768 |
| Speculative decoding | none |
| Vision projector | mmproj-Ornith-1.0-35B-BF16.gguf |
| KV cache type | q8_0 |
| VRAM usage | 22.68 GiB |
Quantization / conversion notes
Converted with llama.cpp's convert_hf_to_gguf.py directly from the sakamakismile NVFP4 checkpoint
(compressed-tensors, format: nvfp4-pack-quantized), which is auto-detected and re-packed into
GGML_TYPE_NVFP4 — no de-quantization to full precision.
--outtype bf16 (not Q4_K). With bf16, the NVFP4 body is preserved and the large 2-D weights
(token_embd, lm_head) stay at BF16; only small 1-D tensors (norms, biases, router gate, scales)
are F32. There is no wasteful F32 blow-up of the big weights, so a follow-up llama-quantize pass is
not required to reach a reasonable size (19.60 GiB).
--no-mtp. The checkpoint's config.json declares mtp_num_hidden_layers: 1 but ships no MTP
tensors; --no-mtp keeps block_count = 40 and avoids requesting an absent MTP head.
- Tensor make-up: NVFP4 × 430, F32 × 1161 (scales / norms / router gate), BF16 × 2 (
token_embd, lm_head).
Speed/quality trade-off of BF16 output: keeping lm_head at BF16 (~1.0 GiB) costs roughly 14 % of
generation throughput versus a fully quantized build (this model ≈ 193 tok/s vs Q4_K_M ≈ 223 tok/s on the
same hardware), because the output projection over the ~248k-token vocabulary is read every decoding step.
This build prioritizes lossless embeddings/output; for speed, Q6_K quantization of the output layer via llama-quantize is required.
Model details
- Original (quantized) model:
sakamakismile/Ornith-1.0-35B-NVFP4
- Base model:
deepreinforce-ai/Ornith-1.0-35B
- Architecture:
qwen35moe (Qwen3.5-MoE family; hybrid full + gated-linear attention), block_count = 40, no MTP
- MoE: 256 experts, 8 active; embedding dim 2048; context length 262144
- Quantization: NVFP4 (430 tensors) preserved;
token_embd/lm_head BF16; scales/norms F32
- Conversion:
llama.cpp convert_hf_to_gguf.py --outtype bf16 --no-mtp (main) and --mmproj --outtype bf16 (vision)
- File sizes: main 19.60 GiB, mmproj 861 MiB
License and attribution
Released under the MIT license, following the upstream models. This is an unofficial GGUF conversion
of sakamakismile/Ornith-1.0-35B-NVFP4 (base model deepreinforce-ai/Ornith-1.0-35B; NVFP4 quantization by
sakamakismile). It is not affiliated with or endorsed by the original authors. Please consult the original
model cards for intended use and limitations.