library_name: gguf
license: mit
base_model:
- ornith-ai/Ornith-1.5-397B
base_model_relation: quantized
tags: - gguf
- nvfp4
- mtp
- speculative-decoding
- uncensored
- abliterated
- qwen35moe
- hybrid
- blackwell
- text-generation
- conversational
Ornith-1.5-397B uncensored (GGUF, NVFP4 + MTP draft)
TL;DR: The base repo — the uncensored Ornith-1.5-397B GGUF (NVFP4 experts, bit-exact) — plus the official MTP head grafted back in, enabling llama.cpp's native speculative decoding (--spec-type draft-mtp). Same weights, same quality — mathematically identical output distribution (the target model verifies every drafted token) — with +20-42% decode speed on reasoning-style content. 235 GB, 6 shards.
What changed vs the base repo
- The official Ornith-1.5-397B MTP (multi-token-prediction) draft layer — shipped by ornith-ai as a separate
model-mtp.safetensors(13.2 GB BF16) and stripped from ressl's abliterated release — is grafted into the GGUF via llama.cpp's official converter (themtp.*tensors remap toblk.60.*+nextnmetadata; the converter handles everything with--no-mtpomitted). - The draft layer is quantized to Q8_0. Draft-layer precision does not affect output quality — the draft only proposes tokens; the target model verifies each one against its own distribution. Draft precision only affects the acceptance rate (speed), and Q8_0 is plenty.
- Everything else is byte-identical to the base repo: NVFP4 experts bit-exact from ressl's ModelOpt release, Q8_0 attention/linear-attention/shared-experts, official chat template and mmproj compatibility.
Measured on 2× DGX Spark (GX10, GB10 @ sm_121, llama.cpp RPC over 200 GbE RoCEv2)
Validation before release: greedy-mode token-identity against the non-MTP build (2/3 prompts byte-identical; the single divergence was a floating-point near-tie cascade in a long reasoning chain — final answers still identical — inherent to batch-shape fp non-associativity, not a quality change), coherence suite, uncensoring probes.
- Decode: 18.1 tok/s on reasoning/math content (base: 12.7 → +42%) and 13.2 tok/s on free-form prose (+5%; the censored-trained MTP head accepts uncensored continuations at 0.43 there vs 0.82 on reasoning text, mean accepted draft length 3.5)
- Prefill unchanged (~450-500 tok/s); load ~7 min cold (RPC cache populate) / ~2 min warm
- Memory: 116/121 GB per node at 128K context (ctx reduced from 200K to fit the draft layer; KV q8_0)
Run it (validated command)
# worker node:
ggml-rpc-server --host 0.0.0.0 --port 50052 --cache
# main node:
llama-server \
-m Ornith-1.5-397B-uncensored-MTP-00001-of-00006.gguf \
--mmproj mmproj-Ornith-1.5-397B-bf16.gguf \
--chat-template-file chat-template.jinja \
--rpc <worker>:50052 \
--host 0.0.0.0 --port 8080 --alias Ornith-1.5-397B-uncensored \
-ngl 999 -ctk q8_0 -ctv q8_0 -fa on \
--ctx-size 131072 -ub 512 -b 2048 --threads 10 -np 1 \
--cont-batching --cache-idle-slots \
--spec-type draft-mtp \
--reasoning-format deepseek
Requires a 2026 llama.cpp build with qwen35moe MTP support (verified on the glm5next branch). Serving does NOT fit a single 121 GB node — this is a 2-node RPC model. Watch draft acceptance = lines in the server log; if your workload shows <0.4, the MTP head isn't helping and you can serve the base repo without --spec-type at the same quality.
Provenance
| Stage | Author | Artifact |
|---|---|---|
| Base model | ornith-ai | Ornith-1.5-397B (MIT) |
| Abliteration | ressl | Ornith-1.5-397B-uncensored-NVFP4 — see his FP8 repo for the full refusal evaluation (1/1120 hard refusals) |
| MTP head | ornith-ai | model-mtp.safetensors from the official base release |
| GGUF + MTP graft | Lethe | this repo |
License
MIT (inherited). Use responsibly and within your local laws; this model complies with requests the stock model refuses.