CIRU DualView — one model, two execution views

CIRU DualView Ornith 1.0 35B

Read the DualView technical whitepaper (PDF) — the formal weight model, byte-exact conversion proof, phase-specialized routing design, and full experimental analysis.

68.56% full-model prefill gain in the same-weight FPX7 ablation

This is the quality-maximized DualView release of Ornith 1.0 35B-A3B: a 256-expert reasoning, tool-use, coding, and vision model engineered for AMD unified-memory systems.

DualView keeps a compact FPX7-led target for generation, opens an exact INT8 compute view of the same stored values for prompt ingestion, and keeps the model's sensitive attention and state-space outputs at Q8. The download also includes the official Qwen3.6 MTP layer and Ornith's matching F32 vision projector.

ROCmFPX is required. This model introduces a new GGUF type and execution path that stock llama.cpp does not understand. Use the dualview-ornith-35b-v1 release of ciru-ai/ROCmFPX.

What matters This release
Model Ornith 1.0 35B-A3B, 256 experts / 8 active
Quality position Quality-max 7.533-bpw target with Q8 precision islands
Native context 262,144 tokens
Vision Included — matching Ornith F32 projector
HumanEval base 98.78% — 162/164
HumanEval+ 93.29% — 153/164
Target-only PP4096 1,236.16 tok/s
Target-only TG256 48.05 tok/s
Best tested MTP decode mean 84.40 tok/s
Best tested MTP code mean 101.44 tok/s
Primary hardware Ryzen AI Max+ 395 / Radeon 8060S, gfx1151

Why two views are worth doing

The most direct experiment disables only the INT8 compute view. The model, stored FPX7 values, scales, runtime, ROCm device, F16 KV, batch/ubatch, and flash-attention settings stay fixed.

Same-weight execution-path ablation PP4096 tok/s TG256 tok/s
Canonical packed FPX7 matmul 713.421 tok/s 48.511 tok/s
Exact INT8 prefill view + packed FPX7 decode 1,202.550 tok/s 48.719 tok/s
Change from opening the second view +68.56% +0.43%

This is an ablation of the execution path, not a comparison against another model. It isolates the DualView mechanism:

  • Prefill: the same values reach AMD's mature INT8 matrix path instead of running packed-Q7 MMQ.
  • Decode: the compact FPX7 representation remains the active path, so generation speed is unchanged within measurement noise.

At the routed-operator level, the same pattern is even easier to see:

Ornith routed FFN geometry, PP512 Packed FPX7 Exact INT8 view Speedup
Gate/up 4,271.03 µs 1,843.43 µs 2.32×
Down 4,355.82 µs 2,015.37 µs 2.16×

These are operator timings, while the 68.56% result above is a full-model PP4096 measurement across three clean loads and nine samples.

The retained quality-max release

The shipped target adds Q8 precision islands for every full-attention Q/K/V/O projection and every Mamba ssm_out projection. That final topology-aware recipe is faster than the public Q8 controls while retaining the packed FPX7 decode path for the other quantized tensors.

Matched protocol: ROCm0 on gfx1151, full offload, F16/F16 KV, flash attention, batch/ubatch 2048/512, 16 threads, MTP disabled.

Public or shipped Ornith target PP4096 tok/s TG256 tok/s What it shows
CIRU DualView quality-max 1,236.156 48.049 Fastest prefill
Official Q8_0 1,184.626 43.470 Same-release Q8 control
LordNeel Q6_K 1,110.903 52.458 Fastest decode in this matched panel
Unsloth UD-Q8_K_XL 1,125.562 42.628 Public high-bit dynamic quant

Against official Q8_0, the shipped target is 4.35% faster in prefill and 10.53% faster in decode. Q6_K remains 9.18% faster in decode, but DualView is 11.28% faster in prefill. The point is a stronger Pareto position—not a claim that one format wins every phase.

Retained DualView repeatability:

  • PP4096 load means: 1,239.972, 1,246.529, 1,221.966 tok/s
  • PP4096 nine-sample range: 1,219.43–1,249.91 tok/s
  • TG256 load means: 47.899, 48.182, 48.067 tok/s
  • TG256 nine-sample range: 47.783–48.233 tok/s

Public quant sweep at 64K

The long-context control used the same 64K prose and code prompts, 256 output tokens, F16 KV, flash attention, one slot, and the normal target-only server path. These are complete published Unsloth quant files, not isolated kernels.

Ornith target-only model Target bytes Prefill Decode Mean wall time
UD-Q5_K_M 26.456 GB 667.44 tok/s 36.49 tok/s 105.28 s
CIRU DualView quality-max 32.639 GB 652.01 tok/s 37.05 tok/s 107.50 s
UD-Q6_K_XL 31.844 GB 647.18 tok/s 36.42 tok/s 108.37 s
UD-Q8_K_XL 38.201 GB 619.20 tok/s 33.78 tok/s 113.50 s

At 64K, DualView is within 2.1% of the Q5 wall time, slightly faster than Q6, and 5.3% faster end to end than Q8_K_XL. It also beats all three controls in measured decode.

The public DualView download is 33.537 GB because it also carries the optional 0.898 GB MTP layer. The speed row above uses the 32.639 GB target payload with MTP disabled.

That is the point of this release: keep the quality-focused model while running in the same practical speed class as materially smaller quants.

Quality evidence

DualView is not a uniform low-bit conversion.

  • All full-attention query, key, value, and output matrices remain Q8.
  • Every Mamba ssm_out matrix remains Q8.
  • The remaining target matrices use CIRU's 7.50-bpw format.
  • The prefill representation is derived exactly from those stored weights. It does not introduce a second quantization or an additional rounding step.

The release has coding, agent, tool-use, and language-model checks—not only weight-error proxies:

Quality test Result Protocol note
HumanEval base 98.78% — 162/164 Thinking on, MTP depth 7
HumanEval+ 93.29% — 153/164 Stronger EvalPlus tests
BigCodeBench Hard Instruct 27.70% — 41/148 Thinking off, MTP depth 7
HermesAgent-20, target only 84.0 mean — 85 / 88 / 79 Three complete 20-scenario trials
HermesAgent-20, MTP depth 7 83.0 mean — 87 / 78 / 84 Three complete 20-scenario trials
ToolEval hard, target only 75.67 mean — 70 / 70 / 87 Three complete 15-scenario trials
ToolEval hard, MTP depth 7 87 12 pass / 2 partial / 1 fail
WikiText-2 perplexity 8.461721 24,576 tokens / 48 chunks

HumanEval used 131,072 context, unrestricted native reasoning, temperature=0.6, top_p=0.95, top_k=0, min_p=0, seed 42, and MTP depth 7. BigCodeBench used all 148 Hard-Instruct tasks, 131,072 context, temperature=0.6, top_p=0.95, top_k=20, seed 42, thinking disabled, and MTP depth 7; all 148 generations stopped normally. HermesAgent and ToolEval used the release thinking sampler.

The HumanEval publication is an audited protocol-corrected result. Four tasks that looped under a restrictive fenced-code adapter were replayed with the raw dataset prompt under otherwise matched settings; all four terminated and passed. The original outputs, replacements, task IDs, hashes, and scoring artifacts remain preserved. No benchmark-specification disputes were credited. The result is also listed on CIRU Lab.

HermesAgent and ToolEval are small repeated behavioral panels, not broad leaderboard rankings. They are included because they exercise the model's actual agent and tool paths. For the source model's broader capability results, see the official Ornith model card.

How DualView works

Prefill and decode are different workloads:

  • Decode repeatedly streams weights. Compact storage matters most.
  • Prefill performs wide matrix work. A regular INT8 representation maps better to AMD dot-product and WMMA hardware.

DualView gives the same target weights two hardware-facing representations:

                         ┌─ compact FPX7 view ── generation / decode
one authoritative target┤
                         └─ exact INT8 view ──── prompt ingestion / prefill

The runtime expands the signed seven-bit values into signed eight-bit lanes while reusing the same FP16 scales. The numerical value represented by every stored weight is unchanged by that conversion.

This does not mean the quant is lossless relative to the original BF16 model. It means decode and prefill share one authoritative quantized target instead of storing two independently rounded models.

Read the visual introduction to DualView →

Native vision is included

Ornith is a vision-language model. This repository includes the matching Ornith vision tower as:

vision/Ornith-1.0-35B-F32.mmproj

The .mmproj extension prevents the Hugging Face GGUF parser from mistaking the projector for the 35B language model. It remains a GGUF-format projector and is passed normally with --mmproj.

The F32 projector is an exact upcast of the source BF16 values. It avoids an additional FP16 conversion in the quality-max release.

Download

python3 -m pip install -U huggingface_hub

mkdir -p models/vision

hf download \
  jcbtc/Ornith1.0-35b-CIRU-DUALVIEW-FPX7-Q8-MTP-GGUF \
  "Ornith1.0-35b-CIRU-DUALVIEW-FPX7+Q8-MTP.gguf" \
  --local-dir ./models

hf download \
  jcbtc/Ornith1.0-35b-CIRU-DUALVIEW-FPX7-Q8-MTP-GGUF \
  "vision/Ornith-1.0-35B-F32.mmproj" \
  --local-dir ./models

Run at the full 256K context

This starts the unchanged target with vision enabled and MTP disabled:

export MODEL="./models/Ornith1.0-35b-CIRU-DUALVIEW-FPX7+Q8-MTP.gguf"
export MMPROJ="./models/vision/Ornith-1.0-35B-F32.mmproj"
export GGML_HIP_ENABLE_UNIFIED_MEMORY=1
export GGML_ROCM_GFX1151_Q7_Q8_VIEW=no-output

./build-strix-dualview/bin/llama-server \
  -m "$MODEL" \
  --mmproj "$MMPROJ" \
  --alias "Ornith1.0-35b-CIRU-DUALVIEW" \
  --host 127.0.0.1 \
  --port 8080 \
  --jinja \
  --reasoning on \
  --reasoning-format deepseek \
  --reasoning-budget -1 \
  -dev ROCm0 \
  -sm none \
  -ngl 999 \
  -fa on \
  -c 262144 \
  -n 16384 \
  -b 2048 \
  -ub 512 \
  -t 16 \
  -tb 16 \
  -ctk f16 \
  -ctv f16 \
  --parallel 1 \
  --metrics \
  --mmap \
  --no-repack \
  --cache-prompt \
  --cache-ram 8192 \
  --no-context-shift \
  -fit off \
  --spec-type none

Remove --mmproj "$MMPROJ" when vision is not needed.

Enable MTP for long generation

Replace --spec-type none with:

--spec-type draft-mtp \
--spec-draft-p-min 0.50 \
--spec-draft-n-max 7 \
-ctkd f16 \
-ctvd f16

Use depth 6 for the tested approximately 1K-prompt class. Depth 7 is the stronger tested continuation setting from 16K through 64K.

These are served, target-verified generation rates—not standalone llama-bench TG:

Prompt + 256 output Target-only PP Target-only TG Best MTP PP Best MTP TG TG gain
~1K, depth 6 1,112.85 46.71 964.85 84.40 +80.7%
16K, depth 7 1,036.55 44.08 856.14 78.86 +78.9%
32K, depth 7 867.80 41.36 739.37 73.70 +78.2%
64K, depth 7 652.01 37.05 563.32 57.82 +56.1%

The short-context depth-7 code workload reached 101.44 tok/s. At 64K, depth 7 reached 76.46 tok/s on code and 39.18 tok/s on prose, showing why acceptance and workload shape matter.

MTP is optional because it adds its own prompt-processing work. At ~1K + 256, depth 6 reduced mean wall time from 6.426 s to 4.180 s. At 64K + 256, the answer was too short to repay MTP prefill overhead, so target-only was faster end to end. Use target-only for prompt-heavy short-answer traffic and MTP for longer, high-acceptance continuations.

Build the required ROCmFPX runtime on Ubuntu 24.04

Install a current ROCm stack for the system using AMD's official Linux instructions, then verify that HIP sees the GPU.

/opt/rocm/bin/hipconfig --full
/opt/rocm/bin/rocminfo | grep -m1 gfx

sudo apt update
sudo apt install -y \
  build-essential cmake git ninja-build pkg-config \
  libcurl4-openssl-dev libssl-dev python3-venv

git clone --branch dualview-ornith-35b-v1 --single-branch \
  https://github.com/ciru-ai/ROCmFPX.git
cd ROCmFPX

JOBS="$(nproc)" ./scripts/build-strix-dualview.sh

./build-strix-dualview/bin/test-q7-q8-view
./build-strix-dualview/bin/test-quantize-fns
./build-strix-dualview/bin/llama-bench --list-devices

The final command must list the intended ROCm GPU. The release was validated on Linux ROCm with gfx1151; Windows/HIP remains an experimental port.

Memory and hardware

The current runtime eagerly materializes the INT8 prefill representation:

Measured path Live GTT
Target-only DualView 68,202,450,944 B / 63.52 GiB
Integrated MTP at 64K 73,075,855,360 B / 68.06 GiB

The public GGUF is compact on disk, but the present implementation is not compact in live memory. Allow additional room for the operating system, projector, server, KV cache, and prompt state. A 128 GB Strix Halo system is the recommended configuration.

The model and supplied profiles use its native 262,144-token context. The published repeated performance curve currently extends through 64K; 256K is enabled, not presented as a completed performance qualification.

Files

File Size SHA-256
Ornith1.0-35b-CIRU-DUALVIEW-FPX7+Q8-MTP.gguf 33,536,832,416 B / 31.234 GiB 7834fb92d451235c123973ba40eccea156db28af8d42ae13178c7efcc4d0177a
vision/Ornith-1.0-35B-F32.mmproj 1,786,305,248 B / 1.664 GiB 19ced1b3a4c0626112ed94f8c5da301a25f669fa2a568eb9360b9958dc1c494f

The integrated GGUF contains the quality-max Ornith target plus the official Qwen3.6 MTP layer. Running with --spec-type none uses the target-only path; enabling MTP does not substitute a smaller target model.

Release identity and benchmark protocol
  • Public target file: 753 tensors.
  • Target payloads: 362 FPX7 tensors, 70 Q8 quality-island tensors, and 301 F32 tensors.
  • Optional MTP layer: 20 appended tensors from the official Qwen3.6 donor.
  • FPX7 mechanism ablation: one pure-FPX7 Ornith artifact, identical bytes and settings with the compute view disabled/enabled, three clean loads × three repetitions.
  • Target-only speed: three independent loads × three repetitions, nine samples per metric.
  • 64K controls: identical prose/code prompts, 256 output tokens, F16 KV, flash attention, batch/ubatch 2048/512, one server slot.
  • MTP curves: streamed one-slot server requests with target verification, prompt processing and generation throughput recorded separately.
  • Quality runs: raw prompts, completions, reasoning traces, scoring outputs, protocol locks, model SHA-256, and runtime commands retained in the CIRU benchmark lab.
  • Primary runtime source: ciru-ai/ROCmFPX, release dualview-ornith-35b-v1.
  • Detailed public record: DUALVIEW-ORNITH-35B-RESEARCH.md.
  • Published release revision: b515125810cd233936e52620cd73055a12825e71.

Current limitations

  • Requires the matching ROCmFPX runtime; stock llama.cpp cannot load the new target format correctly.
  • The eager prefill representation substantially increases live memory.
  • Performance validation is currently specific to Linux ROCm on Strix Halo.
  • The architecture-matched vision projector is included; the combined DualView + vision + MTP path is still undergoing formal image-quality and repeatability validation.
  • MTP speed depends on prompt shape, output length, and acceptance. It is an optional generation accelerator, not a universal request-latency win.

Provenance and credits

Component licenses and pinned source identities are recorded in NOTICE.md. The Ornith target is MIT; the appended Qwen MTP component is Apache-2.0; ROCmFPX and upstream llama.cpp are MIT.

Downloads last month
727
GGUF
Model size
36B params
Architecture
qwen35moe
Hardware compatibility
Log In to add your hardware

We're not able to determine the quantization variants.

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for jcbtc/Ornith1.0-35b-CIRU-DUALVIEW-FPX7-Q8-MTP-GGUF

Quantized
(690)
this model