[NeurIPS 2026 Spotlight] Fast, lossless LLM inference via dual-view diffusion decoding.
Python
482
18 commits
updated Aug 12, 2026
Official implementation and model checkpoints for Orthrus, a dual-architecture framework that unifies the exact generation fidelity of autoregressive Large Language Models (LLMs) with the high-speed parallel token generation of diffusion models.
https://github.com/user-attachments/assets/2a0b021c-e232-4ac6-bf5c-c582c422505e
All models use a Qwen3 backbone and guarantee strictly lossless generation.
| Model | Base Model | HuggingFace | Avg. Speedup |
|---|---|---|---|
| Orthrus-Qwen3-1.7B | Qwen3-1.7B | 🤗 HuggingFace | 4.25× |
| Orthrus-Qwen3-4B | Qwen3-4.0B | 🤗 HuggingFace | 5.20× |
| Orthrus-Qwen3-8B | Qwen3-8.0B | 🤗 HuggingFace | 5.36× |
uv pip install -e .
uv pip install ninja packaging
uv pip install flash-attn --no-build-isolation # or: pip install "flash-attn-4[cu13]" if your device supports it
We recommend
uvfor fast dependency resolution.
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
model = AutoModelForCausalLM.from_pretrained(
"chiennv/Orthrus-Qwen3-8B",
dtype=torch.bfloat16, device_map="cuda",
attn_implementation="flash_attention_2", # options: sdpa | eager | flash_attention_4
trust_remote_code=True,
).eval()
tokenizer = AutoTokenizer.from_pretrained("chiennv/Orthrus-Qwen3-8B")
prompt = "Write a program to count the frequency of each word in a paragraph."
messages = [{"role": "system", "content": ""}, {"role": "user", "content": prompt}]
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True, enable_thinking=False).input_ids
output_ids = model.generate(
input_ids=input_ids.to(model.device),
max_new_tokens=2048,
use_diffusion_mode=True,
streamer=TextStreamer(tokenizer, skip_prompt=True) # enable streaming generation
)
Coming soon: Native integration with vLLM and SGLang is coming soon. Stay tuned!
Orthrus outperforms speculative decoding methods like EAGLE-3, DFlash. By natively sharing the exact same KV cache across dual views, Orthrus avoids the redundant memory overhead of draft models, resulting in significantly higher token acceptance rates and faster inference times, especially as context length scales. Orthrus maintains consistently high end-to-end throughput—even at 40K context lengths compared to DFlash's rapid degradation.
Left: Average verified tokens per forward pass compared to EAGLE-3 and DFlash. Right: End-to-end throughput across scaling context lengths.
While recent diffusion language models (dLLMs) offer parallel decoding, they often suffer from significant conditional drift and severe accuracy degradation on complex reasoning tasks. Orthrus resolves this by decoupling parallel generation from sequential constraints, establishing a new state-of-the-art for parallel generation fidelity.
Throughput vs. Accuracy on MATH-500. Orthrus delivers a ~6x speedup over the Qwen3-8B baseline with strictly lossless performance, whereas adaptations like Fast-dLLM-v2 suffer significant accuracy drops.
Orthrus supports native inference on Apple Silicon via MLX. Tested with mlx==0.31.2 and mlx-lm==0.31.3.
Usage:
from src.model_mlx import load_model_and_tokenizer, mlx_generate
repo_id = "chiennv/Orthrus-Qwen3-1.7B"
model, tokenizer = load_model_and_tokenizer(repo_id)
prompt_tokens = tokenizer.encode("If a rectangle has length 12 and width 7, what is its area?")
for token in mlx_generate(model, prompt_tokens, tokenizer.eos_token_id, max_tokens=128):
print(tokenizer.decode([token]), end="", flush=True)
If you find this model or architecture useful in your work, please cite our paper:
@misc{vannguyen2026orthrusmemoryefficientparalleltoken,
title={Orthrus: Memory-Efficient Parallel Token Generation via Dual-View Diffusion},
author={Chien Van Nguyen and Chaitra Hegde and Van Cuong Pham and Ryan A. Rossi and Franck Dernoncourt and Thien Huu Nguyen},
year={2026},
eprint={2605.12825},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2605.12825},
}
363 followers · starred May 2026
1,976 followers · starred May 2026
1,114 followers · starred May 2026
857 followers · starred May 2026
[NeurIPS 2026 Spotlight] Fast, lossless LLM inference via dual-view diffusion decoding.
Python
482
18 commits
updated Aug 12, 2026
Official implementation and model checkpoints for Orthrus, a dual-architecture framework that unifies the exact generation fidelity of autoregressive Large Language Models (LLMs) with the high-speed parallel token generation of diffusion models.
https://github.com/user-attachments/assets/2a0b021c-e232-4ac6-bf5c-c582c422505e
All models use a Qwen3 backbone and guarantee strictly lossless generation.
| Model | Base Model | HuggingFace | Avg. Speedup |
|---|---|---|---|
| Orthrus-Qwen3-1.7B | Qwen3-1.7B | 🤗 HuggingFace | 4.25× |
| Orthrus-Qwen3-4B | Qwen3-4.0B | 🤗 HuggingFace | 5.20× |
| Orthrus-Qwen3-8B | Qwen3-8.0B | 🤗 HuggingFace | 5.36× |
uv pip install -e .
uv pip install ninja packaging
uv pip install flash-attn --no-build-isolation # or: pip install "flash-attn-4[cu13]" if your device supports it
We recommend
uvfor fast dependency resolution.
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
model = AutoModelForCausalLM.from_pretrained(
"chiennv/Orthrus-Qwen3-8B",
dtype=torch.bfloat16, device_map="cuda",
attn_implementation="flash_attention_2", # options: sdpa | eager | flash_attention_4
trust_remote_code=True,
).eval()
tokenizer = AutoTokenizer.from_pretrained("chiennv/Orthrus-Qwen3-8B")
prompt = "Write a program to count the frequency of each word in a paragraph."
messages = [{"role": "system", "content": ""}, {"role": "user", "content": prompt}]
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True, enable_thinking=False).input_ids
output_ids = model.generate(
input_ids=input_ids.to(model.device),
max_new_tokens=2048,
use_diffusion_mode=True,
streamer=TextStreamer(tokenizer, skip_prompt=True) # enable streaming generation
)
Coming soon: Native integration with vLLM and SGLang is coming soon. Stay tuned!
Orthrus outperforms speculative decoding methods like EAGLE-3, DFlash. By natively sharing the exact same KV cache across dual views, Orthrus avoids the redundant memory overhead of draft models, resulting in significantly higher token acceptance rates and faster inference times, especially as context length scales. Orthrus maintains consistently high end-to-end throughput—even at 40K context lengths compared to DFlash's rapid degradation.
Left: Average verified tokens per forward pass compared to EAGLE-3 and DFlash. Right: End-to-end throughput across scaling context lengths.
While recent diffusion language models (dLLMs) offer parallel decoding, they often suffer from significant conditional drift and severe accuracy degradation on complex reasoning tasks. Orthrus resolves this by decoupling parallel generation from sequential constraints, establishing a new state-of-the-art for parallel generation fidelity.
Throughput vs. Accuracy on MATH-500. Orthrus delivers a ~6x speedup over the Qwen3-8B baseline with strictly lossless performance, whereas adaptations like Fast-dLLM-v2 suffer significant accuracy drops.
Orthrus supports native inference on Apple Silicon via MLX. Tested with mlx==0.31.2 and mlx-lm==0.31.3.
Usage:
from src.model_mlx import load_model_and_tokenizer, mlx_generate
repo_id = "chiennv/Orthrus-Qwen3-1.7B"
model, tokenizer = load_model_and_tokenizer(repo_id)
prompt_tokens = tokenizer.encode("If a rectangle has length 12 and width 7, what is its area?")
for token in mlx_generate(model, prompt_tokens, tokenizer.eos_token_id, max_tokens=128):
print(tokenizer.decode([token]), end="", flush=True)
If you find this model or architecture useful in your work, please cite our paper:
@misc{vannguyen2026orthrusmemoryefficientparalleltoken,
title={Orthrus: Memory-Efficient Parallel Token Generation via Dual-View Diffusion},
author={Chien Van Nguyen and Chaitra Hegde and Van Cuong Pham and Ryan A. Rossi and Franck Dernoncourt and Thien Huu Nguyen},
year={2026},
eprint={2605.12825},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2605.12825},
}
363 followers · starred May 2026
1,976 followers · starred May 2026
1,114 followers · starred May 2026
857 followers · starred May 2026