CoolFace
Modelpublic

utautako/Ornith-1.0-35B-NVFP4-noMTP-BF16-GGUF

sourceHugging Facemitupdated 3mo agoView on Hugging Face
0likes58downloads
Model Card

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 Q4K/Q6K), 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

FileSizeDescription
Ornith-1.0-35B-NVFP4-noMTP-BF16.gguf19.60 GiBMain GGUF — NVFP4 body preserved, BF16 token_embd/lm_head
mmproj-Ornith-1.0-35B-BF16.gguf861 MiBVision projector (mmproj) for image input

Usage (llama.cpp)

bash
# Text-only
llama-server -m Ornith-1.0-35B-NVFP4-noMTP-BF16.gguf --host 0.0.0.0 --port 8080 --jinja

# With vision (image-text-to-text)
llama-server -m Ornith-1.0-35B-NVFP4-noMTP-BF16.gguf \
  --mmproj mmproj-Ornith-1.0-35B-BF16.gguf \
  --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).

ModeppPrefill (pp) tok/sGeneration (tg) tok/sPeak tg
Text5126539.84 ± 84.57193.58 ± 3.20194.00
Text40967754.81 ± 288.02193.75 ± 1.92194.33
Vision (+mmproj)5126076.30 ± 335.59188.55 ± 1.97189.00
Vision (+mmproj)40967674.93 ± 86.51190.58 ± 0.24191.00

Coherence test PASSED in all runs; generation latency ≈ 112–125 ms.

Runtime configuration

Currently loaded with llama-server on RTX 5090:

ParameterValue
Context (c)196 608
Max tokens32 768
Speculative decodingnone
Vision projectormmproj-Ornith-1.0-35B-BF16.gguf
KV cache typeq8_0
VRAM usage22.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 Q4KM ≈ 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.