Ornith-1.5-122B-EXL3-SAGE-2.58bpw
Quantized EXL3 pack of ornith-ai/Ornith-1.5-122B by vcruz305 with SAGE.
SAGE is our own mixed-precision quantization method for EXL3. The method is not published. If a tensor is EXL3, its K is self-describing on the trellis.
- Serving Recipe & Benchmarks Repository (NVIDIA DGX Spark / GB10 +
vLLM 0.32.0+vcruz305/vllm-exl3):
👉https://github.com/vcruz305/Ornith-1.5-122B-EXL3-DGX-Spark-recipe - vLLM EXL3 Plugin:
👉https://github.com/vcruz305/vllm-exl3
Pack Summary
| Field | Value |
|---|---|
| Base Model | ornith-ai/Ornith-1.5-122B (125.09 B parameters, BF16) |
| Architecture | Qwen3_5MoeForConditionalGeneration (48 layers: 36 Gated DeltaNet + 12 full attention, 256 routed experts top-8 + 1 shared expert, 1 native MTP layer, 27-layer vision tower) |
| Format | EXL3 (quant_method: exl3, codebook mul1) |
| Average BPW | 2.58 bpw |
| Pack Size | 41.00 GiB language model weights (39.58 GiB GPU-resident LM + 1.42 GiB embed_tokens) / 42.01 GiB total on disk across 6 shards (model-00001-of-00006.safetensors .. model-00006-of-00006.safetensors) |
| Context Window | 262,144 tokens (max_position_embeddings, extendable to 1M via YaRN) |
| Target Hardware | Single 48 GB GPU or 128 GB unified-memory system (NVIDIA DGX Spark GB10) |
| License | MIT |
Measured Speeds on 1× NVIDIA DGX Spark (GB10, sm_121, 128 GB Unified)
Measured end-to-end with vLLM 0.32.0 + vcruz305/vllm-exl3 (using vcruz305/Ornith-1.5-122B-EXL3-DGX-Spark-recipe) and REXL3:
Engine / Workload (GB10, 1× DGX Spark) |
Decode (tok/s) |
Per-Stream (tok/s) |
Prefill (tok/s) |
TTFT (ms) |
Notes |
|---|---|---|---|---|---|
vLLM 0.32.0 + vllm-exl3 (C = 1, MTP k=1 on Code) |
32.60 (32.99 peak) | 32.60 | — | 124.2 | 88.6% draft acceptance on code; 30.38 tok/s mean across all suites |
vLLM 0.32.0 + vllm-exl3 (C = 1, No Draft) |
30.51 (30.57 peak) | 30.51 | 1,119.1 (2K) | 109.1 | VLLM_EXL3_COOP=1 + VLLM_EXL3_COALESCE_SHARDS=1 (2.0 s CUDA graph capture) |
vLLM 0.32.0 + vllm-exl3 (C = 4 Concurrent) |
63.07 | 17.22 | — | 238.1 | 2.07× aggregate throughput |
vLLM 0.32.0 + vllm-exl3 (C = 8 Concurrent) |
89.21 | 12.02 | — | 428.7 | 2.92× aggregate throughput |
vLLM 0.32.0 + vllm-exl3 Prefill 2,048 (Cold / Cached) |
— | — | 1,119.1 / 1,408.7 | 1,830.1 / 1,453.9 | 1.26× prefix-cache speedup |
vLLM 0.32.0 + vllm-exl3 Prefill 4,096 (Cold / Cached) |
— | — | 1,033.8 / 2,210.9 | 3,962.1 / 1,852.6 | 2.14× prefix-cache speedup |
vLLM 0.32.0 + vllm-exl3 Prefill 8,192 (Cold / Cached) |
— | — | 991.6 / 4,449.5 | 8,261.2 / 1,841.1 | 4.49× prefix-cache speedup |
Reference: REXL3 Native Engine (C = 1 / C = 8) |
30.58 / 90.82 | 30.58 / 11.35 | — | 91.2 | 9.12 s cold boot (41.00 GiB LM weights) |
9-Suite (353/356-Item) Downstream Benchmark vs. 4.0 bpw
Measured on the same DGX Spark (GB10) under identical deterministic prompts and evaluation harnesses:
| Benchmark Suite | Items | This Pack (vcruz305 SAGE 2.58 bpw, 41.00 GiB LM) |
4.0 bpw EXL3 (59.00 GiB LM) |
Delta (SAGE 2.58 vs 4.0 bpw) |
|---|---|---|---|---|
| MMLU-Pro (STEM) | 100 | 94 / 100 (94.00%) |
96 / 100 (96.00%) |
-2 (-2.00%) |
| LiveCodeBench (Matched / Full) | 17 / 20 | 13 / 17 (76.47%) / 15 / 20 (75.00%) |
12 / 17 (70.59%) / 14 / 20 (70.00%) |
+1 (+5.88% / +5.00%) |
| MBPP+ | 60 | 53 / 60 (88.33%) |
51 / 60 (85.00%) |
+2 (+3.33%) |
| HumanEval+ | 40 | 39 / 40 (97.50%) |
39 / 40 (97.50%) |
0 (0.00%) |
| SciCode | 10 | 5 / 10 (50.00%) |
4 / 10 (40.00%) |
+1 (+10.00%) |
| MATH-500 | 40 | 38 / 40 (95.00%) |
39 / 40 (97.50%) |
-1 (-2.50%) |
| MGSM (8 Languages) | 40 | 40 / 40 (100.00%) |
40 / 40 (100.00%) |
0 (0.00%) |
| BFCL (Function Calling) | 40 | 37 / 40 (92.50%) |
37 / 40 (92.50%) |
0 (0.00%) |
| Multi-step Tool Chains | 6 | 5 / 6 (83.33%) |
5 / 6 (83.33%) |
0 (0.00%) |
| Coding Subtotal (LCB+MBPP+HE+SciCode) | 130 | 112 / 130 (86.15%) |
108 / 130 (83.08%) |
+4 (+3.08%) |
| OVERALL TOTAL (353-Item Matched) | 353 | 324 / 353 (91.78%) |
323 / 353 (91.50%) |
+1 (+0.28%) |
| OVERALL TOTAL (356-Item Full) | 356 | 326 / 356 (91.57%) |
325 / 356 (91.29%) |
+1 (+0.28%) |
| Loaded LM Weight Footprint | — | 41.00 GiB (fits 1× 48 GB GPU) | 59.00 GiB (requires 80 GB+) | -18.00 GiB (-30.5% smaller) |
Cold Boot Time (REXL3, GB10) |
— | 9.12 s | 19.23 s | 2.11× faster |
C = 8 Aggregate Decode (GB10) |
— | 89.21 tok/s (vLLM) / 90.82 tok/s (REXL3) |
83.11 tok/s | +9.3% faster |
Fidelity vs. Unquantized ornith-ai/Ornith-1.5-122B BF16 Master
Measured directly against the unquantized ornith-ai/Ornith-1.5-122B BF16 master across held-out evaluation splits over the full 248,320-token vocabulary:
| Evaluation Split / Subset | Positions | Top-1 Agreement | Top-5 Agreement | Mean KLD (nats) | Median KLD (nats) | Mean TV | BF16 Master PPL | SAGE 2.58bpw PPL | $\Delta$PPL (%) |
|---|---|---|---|---|---|---|---|---|---|
e2e_eval (Answer-Only) |
5,256 | 92.10% | 99.24% | 0.10845 | 0.00175 | 0.07938 | 2.2139 | 2.2984 | +3.82% |
e2e_eval (Non-Header) |
16,120 | 91.12% | 99.09% | 0.16414 | 0.00383 | 0.09176 | 2.6812 | 2.7426 | +2.29% |
e2e_eval — Code (HumanEval) |
4,038 | 94.43% | 99.21% | 0.14847 | 0.00041 | 0.06060 | 1.6854 | 1.7555 | +4.16% |
e2e_eval — Reasoning (MATH-500) |
4,036 | 91.18% | 99.28% | 0.15074 | 0.00516 | 0.08967 | 3.0384 | 2.9640 | -2.45% |
e2e_eval — Math (GSM8K) |
4,018 | 90.24% | 99.08% | 0.20349 | 0.00491 | 0.10177 | 2.3485 | 2.4310 | +3.51% |
e2e_eval — General (WikiText-2) |
4,028 | 88.60% | 98.81% | 0.15403 | 0.02442 | 0.11510 | 4.2996 | 4.4758 | +4.10% |
heldout_8x1024 (Answer-Only) |
2,664 | 90.58% | 99.29% | 0.09522 | 0.00299 | 0.08531 | 2.4456 | 2.5333 | +3.59% |
heldout_8x1024 — Code |
2,026 | 94.82% | 99.41% | 0.14258 | 0.00035 | 0.05740 | 1.6215 | 1.6995 | +4.81% |
heldout_8x1024 — Reasoning |
2,024 | 91.90% | 99.11% | 0.13906 | 0.00182 | 0.08081 | 2.4344 | 2.4775 | +1.77% |
indep_8x1024 (Non-Header) |
8,056 | 90.83% | 99.14% | 0.14847 | 0.00575 | 0.09303 | 2.8513 | 2.8938 | +1.49% |
indep_8x1024 — Code |
2,012 | 94.43% | 99.25% | 0.14510 | 0.00039 | 0.05797 | 1.7349 | 1.7913 | +3.25% |
indep_8x1024 — Reasoning |
2,026 | 93.09% | 99.51% | 0.08431 | 0.00607 | 0.07276 | 2.7303 | 2.7202 | -0.37% |
indep_8x1024 — Math |
2,010 | 90.00% | 99.05% | 0.17364 | 0.00998 | 0.10259 | 2.9910 | 3.0177 | +0.89% |
Quickstart: Serving with vLLM 0.32.0 + vcruz305/vllm-exl3
Full scripts, preflight checks, and benchmarks are available in the companion recipe repository:
👉 https://github.com/vcruz305/Ornith-1.5-122B-EXL3-DGX-Spark-recipe
git clone https://github.com/vcruz305/Ornith-1.5-122B-EXL3-DGX-Spark-recipe.git
cd Ornith-1.5-122B-EXL3-DGX-Spark-recipe
# 1. Create the vLLM environment (vllm==0.32.0, vcruz305/vllm-exl3 with -DP2B_CB=2, vision patch).
bash vllm-plugin/setup_env.sh
# 2. Download this pack.
HF_XET_HIGH_PERFORMANCE=1 ~/venvs/vllm-exl3/bin/hf download \
vcruz305/Ornith-1.5-122B-EXL3-SAGE-2.58bpw \
--local-dir ~/models/Ornith-1.5-122B-EXL3-SAGE-2.58bpw
# 3. Prepare a non-destructive symlinked view at ~/models/Ornith-1.5-122B-EXL3-SAGE-2.58bpw-vllm.
PACK_DIR=~/models/Ornith-1.5-122B-EXL3-SAGE-2.58bpw \
PLUGIN_REPO=/path/to/vllm-exl3 \
bash vllm-plugin/prepare_pack.sh
# 4. Launch vLLM (--quantization exl3, 262,144 context, VLLM_EXL3_COOP=1, VLLM_EXL3_COALESCE_SHARDS=1).
source ~/venvs/vllm-exl3/bin/activate
bash vllm-plugin/serve.sh
- Enable MTP speculative decoding (
32.60 tok/s/32.99peak on code):SPEC_CONFIG='{"method":"mtp","num_speculative_tokens":1}' bash vllm-plugin/serve.sh - Enable the 27-layer multimodal vision tower:
LANGUAGE_MODEL_ONLY=0 bash vllm-plugin/serve.sh
About the Base Model: ornith-ai/Ornith-1.5-122B
(Copied from the upstream ornith-ai/Ornith-1.5-122B model card for reference)
Chirp Chirp! 🐦 We are introducing Ornith-1.5, a major step toward building foundation models through end-to-end self-improvement.
Ornith-1.5 extends Ornith-1.0 (which was developed on top of Qwen3.5 and Gemma4 with additional continued pretraining, mid-training, and post-training) by expanding the self-improvement loop from scaffold and rollout optimization to jointly optimizing task generation, scaffold construction, and solution rollouts. Rather than relying on a fixed set of human-curated tasks and manually designed harnesses, Ornith-1.5 continuously generates new training tasks, discovers effective strategies for solving them, and improves the policy through reinforcement learning. For more details on the task, harness, and rollout reward design, please refer to our blog.
Upstream Benchmarks (ornith-ai/Ornith-1.5-122B)
| Ornith-1.5-122B | Qwen3.8-Flash-Next (125B) | Qwen3.8 (27B dense) | Nemotron 3.5 Super VL (120B) | DeepSeek-V4-Flash-0731 (284B) | Beam (501B) | |
|---|---|---|---|---|---|---|
| Coding | ||||||
| TerminalBench 2.1 | 81.200 | 83.400 | 71.900 | 66.700 | 82.700 | 80.100 |
| CyberGym | 80.000 | 78.000 | 55.000 | 34.000 | 76.700 | 59.000 |
| NL2Repo | 51.200 | 45.200 | 42.300 | 21.000 | 54.200 | 49.400 |
| SWE-bench Pro (no-hack) |
76.900 | 43.900 | 65.500 | 42.500 | - | 57.000 |
| SWE-bench Verified (non-hack) |
84.500 | 82.800 | 76.800 | 61.200 | - | - |
| SWE-bench Multilingual (non-hack) |
76.400 | 73.000 | 70.300 | 48.000 | - | - |
| Reasoning | ||||||
| HLE (with tools) | 48.000 | 38.000 | 31.300 | 33.200 | 50.800 | 51.100 |
| HLE (w/o tools) | 37.680 | 34.160 | 29.320 | 31.790 | - | - |
| SciCode | 53.800 | 47.500 | 43.600 | 47.100 | - | - |
| Agentic | ||||||
| WideSearch | 75.200 | 71.800 | 62.600 | 69.200 | 77.300 | 68.500 |
| BrowseComp | 78.500 | 75.300 | 71.400 | 61.000 | 80.200 | 67.600 |
| MCP-Atlas | 74.600 | 74.100 | 69.000 | 63.300 | 74.600 | - |
| Toolathlon-Verified | 70.800 | 71.400 | 67.100 | 60.100 | 70.300 | 63.500 |
| ClawEval | 79.400 | 76.500 | 75.400 | 61.200 | - | - |
Recommended Sampling & Reasoning Parameters
📝 NOTEOrnith-1.5-122B is a reasoning model: by default the assistant turn opens with a <think> … </think> block before the final answer. Our vLLM recipe enables --reasoning-parser qwen3 so the chain-of-thought is returned in a separate reasoning_content field, and --tool-call-parser qwen3_xml --enable-auto-tool-choice so <tool_call> blocks are surfaced as standard OpenAI tool_calls.
Recommended sampling parameters:
- For general tasks:
temperature=1.0,top_p=0.95,top_k=20,min_p=0.0,presence_penalty=1.5,repetition_penalty=1.0 - For precise coding tasks:
temperature=0.6,top_p=0.95,top_k=20,min_p=0.0,presence_penalty=0.0,repetition_penalty=1.0
Using Ornith-1.5-122B via the Chat Completions API
Once your vLLM server is running (http://localhost:8899/v1 via vcruz305/Ornith-1.5-122B-EXL3-DGX-Spark-recipe), talk to it with any OpenAI-compatible client:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8899/v1",
api_key="EMPTY",
)
response = client.chat.completions.create(
model="Ornith-1.5-122B-EXL3",
messages=[
{"role": "user", "content": "Write a one-line Python lambda that squares a number."}
],
temperature=0.6,
top_p=0.95,
max_tokens=1024,
)
message = response.choices[0].message
print("reasoning:", getattr(message, "reasoning_content", None))
print("answer:", message.content)
Tool calling works out of the box:
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}
]
response = client.chat.completions.create(
model="Ornith-1.5-122B-EXL3",
messages=[{"role": "user", "content": "What is the weather in Paris right now?"}],
tools=tools,
tool_choice="auto",
temperature=0.6,
max_tokens=2048,
)
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.function.name, tool_call.function.arguments)
# -> get_weather {"city": "Paris"}
Agentic & Coding CLI Usage
Hermes Agent
export OPENAI_BASE_URL="http://localhost:8899/v1"
export OPENAI_API_KEY="EMPTY"
export MODEL="Ornith-1.5-122B-EXL3"
OpenClaw
export OPENAI_BASE_URL="http://localhost:8899/v1"
export OPENAI_API_KEY="EMPTY"
export OPENAI_MODEL="Ornith-1.5-122B-EXL3"
OpenCode
# Register your local Ornith endpoint as a provider in ~/.config/opencode/opencode.json:
# {
# "$schema": "https://opencode.ai/config.json",
# "provider": {
# "ornith": {
# "npm": "@ai-sdk/openai-compatible",
# "name": "Ornith (local)",
# "options": { "baseURL": "http://localhost:8899/v1", "apiKey": "EMPTY" },
# "models": { "Ornith-1.5-122B-EXL3": { "name": "Ornith-1.5-122B-EXL3" } }
# }
# }
# }
opencode
Citation
@misc{ornith_1_5,
title = {{Ornith-1.5}: From Self-Scaffolding to Self-Improvement},
url = {https://ornith.ai/ornith_1_5.html},
author = {{Ornith Team}},
year = {2026}
}