C4: Commit Locally, Exit Globally

Coordinating Adaptive Sampling and Early Exit in Diffusion Language Models

The same prompt, decoded twice. Left: C4. Right: full decoding, which runs every scheduled step. Both panels replay a recorded LLaDA-8B-Instruct run step by step at its measured speed on one RTX 3090; every token, confidence and gate value comes from the logged model state. One sample per task, not an average: task-level results are below.

C4 speeds up diffusion language models by making two decisions separately: locally, it commits confident tokens sooner so each block finishes in fewer steps; globally, it stops the whole sequence once the answer is confident and no longer changing. No training, no extra forward pass, one frozen setting.

2.6–18.6×
measured decoding-loop speedup over full decoding
64–95%
fewer decoding steps
0 / 24
task–model settings losing more than 2 accuracy points
1
setting, calibrated once on LLaDA, reused on Dream unchanged

Abstract

Diffusion language models predict tokens in parallel but still require many iterative forward passes. Adaptive sampling accelerates local token commitment, while recent global stopping methods seek to end generation early. Our trajectory analysis shows that short answers can stabilize early in decoding, whereas reasoning outputs often require more steps to settle. A fixed progress threshold therefore struggles to avoid both redundant computation on short-answer tasks and premature termination on reasoning tasks. We introduce C4, a training-free framework that combines local decoding acceleration with adaptive global early exit. Confidence-Verified Early Exit (CVEE) determines when to end generation, skipping the remaining steps once its stopping criterion is met. It combines confidence and temporal agreement to adapt stopping to the observed revision history. Commit-Core-Then-Confirm (CCTC) accelerates token commitment while generation continues, reducing the decoding steps needed to complete each block. It extends confidence-threshold parallel decoding with a boundary-anchored core and one-step confirmation of deferred predictions, constraining additional commitments to mitigate premature freezing under unresolved context. With CVEE calibrated once on LLaDA, the same numerical settings transfer across all 12 zero-shot tasks and to Dream without recalibration. Under this configuration, C4 reduces decoding steps by 64–95% and achieves measured decoding-loop speedups of 2.6×–18.6×, with task performance close to full decoding. Component analyses show complementary contributions: early exit supplies most savings on short-answer tasks, while local acceleration contributes more on reasoning and code generation.

Method

Before C4

Why earlier methods fall short.

Diffusion decoding can be sped up in two places: commit tokens faster inside a block, or stop the whole sequence early. Earlier methods do one or the other, and each breaks somewhere (LLaDA-8B, paper Tables 1–2).

Stop early · Prophet, SchED

They stop on a schedule or a fixed confidence rule, not when the answer has settled, so reasoning is cut off while the answer is still changing.

66 → 38
GSM8K accuracy with Prophet; HumanEval 40.2 → 3.0
Commit faster · SlowFast, KLASS, WINO

They decide which tokens to commit, never when to stop, so every block is still decoded after the answer is done.

≤ 4.3×
MMLU speedup, 17–29 of 64 steps (C4: 16.1×, 4.8 steps)
Just combine them · WINO + exit gate

The exit rule reads a trajectory the sampler has already reshaped, and stops reasoning too soon.

72 → 36
GSM8K accuracy, while steps only drop from 49 to 44
Observation

The answer settles at very different times.

A diffusion LM shows its full provisional output at every step, so the current answer can be read long before decoding ends. On full LLaDA decodes, the point by which 90% of answers have stopped changing ranges from 4% of the schedule on short-answer tasks to 96% on long reasoning. No fixed stopping point fits both, so C4 stops on evidence from the answer itself and gets its speed on long outputs from faster commitment inside each block.

How C4 works

Commit locally, exit globally.

Commit-Core-Then-Confirm (CCTC)Confidence-Verified Early Exit (CVEE)Token-level confidence for local commitmenttCommit coret + 1Confirm deferredt + 2Update coreSharedtrajectoryPredictionSpan-levelconfidenceRun lengthDecision538τContinue540revisionContinue540Continue540ExitExit when confidence and stability criteria are met.Continue decodingFill remaining masks and stopCommittedCoreDeferredConfirmedLowHigh confidence
CCTC · which tokens to commit now

In the active block, confident positions next to the resolved boundary form a core and commit at once; the core may step over one unresolved position (H = 1). Confident positions further right are deferred and commit at the next step only if they still predict the same token. The decoder's own scheduled commits are kept, and confirmation reuses the next forward pass, so nothing extra is computed.

CVEE · when to stop the sequence

At every step a fixed parser reads the current answer. Decoding stops once

ct ≥ 0.7 mean confidence over the answer
runt ≥ max(3, ⌈2 · changest⌉) steps unchanged; more after each revision

The rule never looks at how far decoding has progressed; the remaining masks are filled in one step.

At step t−1 the core commits diffusion, steps over one low-confidence hole and commits language; agent and system are confident but far from the boundary, so they wait. At step t they still predict the same tokens and are confirmed. Example from the paper's Figure 3.

τCVEE = 0.7γ = 2.0pmin = 3τCCTC = 0.8H = 1one setting for 12 tasks × 2 backbones
Step through a recorded run

Watch both gates on a real trajectory.

Scrub through a recorded C4 run: the output with this step's commits, and the answer, confidence and patience CVEE sees.

Results

12 zero-shot tasks: five short-answer (64-token output), five long-reasoning (256) and two code tasks graded by hidden tests (384), on LLaDA-8B-Instruct and Dream-7B-Instruct. Speedup is tokens per second relative to full decoding of the same model, on one RTX 4090.

Main result

Faster everywhere, accuracy within two points everywhere.

2×19×cell: speedup · Δ accuracy in points vs. full decoding
TaskOutputLLaDA-8BDream-7B

Timing: fixed 20-example subset, three repeats; accuracy and steps: each task's full evaluation set. Accuracy differences are point estimates, not equivalence claims. Baseline rows: paper Table 1.

Where the savings come from

Early exit carries short answers; faster commitment carries reasoning and code.

From full decoding, add the CVEE exit gate, then the CCTC core, then confirmation, then CCTC on every block (= C4). Bars are average decoding steps (paper Table 3).

Confidence alone stops a 384-step HumanEval program after 9.7 steps: accuracy 40.2 → 4.9.
Stability alone stops GSM8K after 24.5 of 256 steps: accuracy 66.0 → 33.0.

Requiring both keeps full-decoding GSM8K accuracy on both backbones but waits almost the whole schedule, which is why the reasoning speedup has to come from CCTC.

Composition

An exit gate on another sampler.

WINO's update rule with CVEE only deciding when to stop (LLaDA). Short answers lose another 70–76% of their steps at the same accuracy; on reasoning and code, keeping accuracy means keeping almost all of WINO's steps.

TaskWINO+ CVEEConservative CVEE
AccStepsAccStepsAccSteps
MMLU61.016.861.54.1––
HellaSwag73.012.973.03.9––
GSM8K72.049.236.043.670.048.5
SVAMP85.045.662.041.783.045.1
HumanEval37.854.214.629.736.650.1

WINO is also the strongest local sampler here: on LLaDA GSM8K it beats C4 in both accuracy (72.0 vs 64.0) and speed (4.03× vs 3.55×). When early exit has little to remove, the best local sampler can win.

Video

Every decoding frame in the video is rendered from the same recorded runs as the replay above. Also on YouTube.

BibTeX

@article{lee2026c4,
  title   = {Commit Locally, Exit Globally: Coordinating Adaptive Sampling and Early Exit in Diffusion Language Models},
  author  = {Lee, Chia-Ming and Liu, Shao-Kai and Chang, Ming-Ching and Li, Xin and Liu, Yu-Lun and Hsu, Chih-Chung},
  journal = {arXiv preprint arXiv:2607.28166},
  year    = {2026}
}