Join the conversation

Join the community of Machine Learners and AI enthusiasts.

Sign Up
satgezeΒ 
posted an update 3 days ago
Post
153
satgeze/Ornith-1.0-35B-1M-GGUF
Ornith-1.0 with a 1,048,576-token context window, tested instead of claimed 🦜

Ornith is Qwen3.5-family under the hood, so YaRN factor 4 extends it from 262K native to exactly 1M. I baked that into the GGUF metadata (no fine-tuning, weights bit-identical) so llama.cpp and Ollama apply it with zero flags, then ran full needle-in-a-haystack ladders on my own hardware:

- satgeze/Ornith-1.0-35B-1M-GGUF: 10/10 needles at every rung from 32K through 1M, replicated with fresh seeds (M3 Max 128GB, ~6.8h cold 1M prefill)
- satgeze/Ornith-1.0-9B-1M-GGUF: perfect through 524K, honest 7/10 at 1M under Q4 + q8_0 KV, failure band charted in the card
- satgeze/Ornith-1.0-397B-1M-GGUF: IQ1_M through Q4_K_M as split GGUFs, coherence-gated

Also in the repos:

- Vision: Ornith kept the Qwen3.5 multimodal skeleton, so the VL vision tower (extracted by bartowski) attaches at runtime via llama-server --mmproj. OCR-tested on the 9B and 35B, mmproj files bundled.
- A measured residency matrix: on a single RTX 5090, every 9B quant up to Q6_K holds the full 1M window at 100 percent GPU, 162 to 244 tok/s.
- Quality gates: every low-bit quant passed a coherence test before upload. The 35B IQ1_S failed and was deleted rather than shipped.

Harness, method writeup, and raw per-needle data: https://github.com/satindergrewal/ornith-1m

All MIT. Credit to DeepReinforce for the models and bartowski for the imatrix quants and vision towers. If a config breaks retrieval for you, tell me and it goes in the card.

The honest 7/10 at 1M with a charted failure band is the credible part. Most 1M-context cards bury that number.

One push: single-needle NIAH mostly tests whether the retrieval head survived YaRN, not whether attention still integrates across the window. A planted token is recency plus lookup. It says little about multi-hop reasoning at 500K+.

Did you run anything past single-needle? A multi-needle or variable-tracking pass, where the model has to hold and combine facts spread across the context instead of fetching one?

Β·

Good push! But small correction, it is not single-needle. My harness plants 10 needles at 5-95% depths and the model has to return ALL 10 in one single response. The niah_test.py and raw transcripts are right there in the repo, you can check the results.jsonl. So it's 10 parallel retrievals held together, not recency + lookup.

But yes, you are right on the deeper part. My 10 needles are independent facts, nothing forces the model to combine fact A with fact B. So it tests retrieval, not composition. I kinda like this idea, so I am adding a hop tier to the harness: chained needles (needle 1 has the key that unlocks needle 2), and variable tracking (one value changes few times across the context, ask the final state). Will run it at 500K and 1M on the same models and publish the raw results either way, misses included, like everything else in these repos.