01 / Parallel commit
Tokens per forward pass
In the serving benchmark, up to 3.10 on GSM8K. AR decoding commits 1.00.
Trida models draft a block of tokens with diffusion and check it with their own autoregressive path, in one forward pass. You get the AR answer, several tokens at a time.
Trida2.0-4B served self-speculatively, against the same checkpoint decoding one token at a time.
01 / Parallel commit
In the serving benchmark, up to 3.10 on GSM8K. AR decoding commits 1.00.
02 / Throughput
Versus 216 tok/s for the AR path, with verify-guaranteed AR quality.
Concurrency 1, threshold 0.9, reasoning on, HybridDiffusion SGLang integration. The full-mask recipe makes Trida2.0-4B a better drafter, so it is fastest at low concurrency.
Trillion Labs' block-diffusion language models. Trida2.0-4B and Trida2.1-4B are built on Qwen3.5 with a trained AR path in the same weights; Trida-7B, the first generation, comes from Tri-7B.
Qwen3.5-4B base
The reference model. Block size 8, served self-speculatively or as plain AR. Tuned from an agent-aligned base for tool use and Korean agent tasks.
Writes and decides
A self-speculative agent model with a typed-decision head and the Qwen3.5 vision tower. One set of weights generates text and answers typed questions with calibrated probabilities.
First generation · since January 2026
The first-generation Trida model, where the line started: to our knowledge, the first block-diffusion language model openly released in Korea, continually pre-trained from Tri-7B, for Korean, English and Japanese.
Each training row holds the prompt, a noised copy of the response and a clean copy, tied together by one attention mask.
Each noised block attends to the prompt and to the clean copies of earlier blocks, so generation stays left-to-right block by block.
Inside a block, positions see each other in both directions, so the whole block can be predicted in a single pass.
Every committed token is an accepted draft equal to the AR token, or the AR correction. The gain is tokens per pass, never a different answer.
Concurrency 1, threshold 0.9, reasoning on. A vanilla Qwen3.5-4B baseline is being added.
| Benchmark | Self-speculative | AR |
|---|---|---|
| GSM8K | 84.2 | 89.3 |
| MMLU-Pro | 63.0 | — |
| IFEvalprompt-strict | 69.7 | — |
| BFCLnon-live AST | 65.2 | — |
| Ko-AgentBenchL1 / L2 | 0.909 / 1.00 | — |
| FunctionChatcall / completion | 0.85 / 0.88 | — |
| tau2retail / airline / telecom | 0.40 / 0.50 / 0.80 | — |
From the Trida2.0-4B model card. Ko-AgentBench and tau2 are small suites, so differences under about 0.1 are within run-to-run noise.
The open training and serving code behind the Trida models. Start from a pretrained AR checkpoint; no diffusion pre-training needed.
Native-torch FSDP2 trainer with packing, bucketing and multi-turn supervision. The output is a stock Hugging Face causal LM plus a mask token.
Causal, block-diffusion or self-speculative decoding behind an OpenAI-compatible server, on SGLang or a vLLM plugin.
Quick GSM8K, MMLU-Pro and IFEval checks, plus agentic harnesses: BFCL, tau2, FunctionChat, Ko-AgentBench, SWE-bench.
PYTHONPATH=. torchrun --nproc_per_node=8 train.py \
--model_id Qwen/Qwen3-4B \
--bd_size 32 --ar_loss_weight 0.2 \
--max_length 32768 --pack \
--save_dir checkpoints/my-bd-run
# diffusion draft → AR verify (default)
python inference/serve.py --port 30000
# the same checkpoint as plain AR
python inference/serve.py --mode causal --port 30000
| Family | Attention | Notes |
|---|---|---|
| Qwen3 | Full attention (dense) | Baseline path: dense block masks, standard KV cache |
| Qwen3.5 | Hybrid: gated-delta linear + periodic full | Hybrid-aware masking; rollback by state snapshot and restore |
The trainer works with any Hugging Face causal LM whose decoder is reachable via
model.get_decoder(). serve.py also fronts other block-diffusion families: SDAR and LLaDA 2.
Not with this recipe. It is trained for single-shot full-block drafts, which is exactly what self-speculative decoding needs. Serve it self-speculatively or as plain AR.
SGLang, through the HybridDiffusion integration, and a self-contained vLLM plugin. Both expose an OpenAI-compatible endpoint.
A stock causal LM, an added mask token, and a block_diffusion.json sidecar with the
block size, mask id and AR loss weight. The repo's model contract lists the details.
Trida Stack and Trida2.0-4B's weights are Apache-2.0; each model's card states its license.