Download the code and result files Watch a decodeEvery figureHow to reproduce
The paper's abstract
The whole study in plain words
An everyday pictureThink of a student who writes the answer on the first line of the exam and spends the rest of the time writing an explanation underneath. By the end the student feels very sure, but only because the explanation agrees with the answer already written, not because they looked at the picture again. The models we study behave the same way.
New to the words? The glossary explains every term on this page in one or two sentences.
The model and the whole argument, in 3D
How to use itThis is LLaDA-V, the main model of the study, built as a building: the picture and the question enter on the left, an image encoder and a language model process them, and the answer is written into a tower whose floors are the denoising passes, one floor per pass. The eleven steps follow the paper: the model, then its four questions, then its conclusion. The caption above the picture says what each step shows and where to look, and the colours button explains the colours. Press play or click the numbers; drag to turn the model, use + and − to zoom, and hover any part for its name.
How much we tested
A claim that diffusion VLMs barely use their schedule is only as strong as the search behind it. Here is the size of that search, as the paper reports it.
The benchmarks
Three clocks run on every decode, and only the first one decides the answer
In plain wordsA diffusion VLM writes its whole answer at once and then refines it over several passes. We read what it would answer, and how sure it is, after every pass. The answer settles first; the confidence comes much later; the rest of the text settles last.
A masked-diffusion VLM starts from a fully masked answer and fills it in over T forward passes. At every pass we read the answer the model would give if stopped there, the entropy at the answer position, and the full text. On LLaDA-V the three settle at very different times.
The paper asks four questions
How a masked-diffusion VLM answers, and where the paper measures it
In plain wordsThe picture is turned into tokens once. Then the language model fills in a fully hidden answer over several passes: each pass it guesses every hidden word, keeps the surest ones and hides the rest again. The paper reads the model at every pass, at no extra cost.
The image is encoded once. The language model then fills in a fully masked answer over T passes. At each pass it predicts a word for every masked position, keeps the most confident one and masks the rest again. Press play to send one real question through the loop: the box under the diagram shows what the model would answer if it stopped at that pass.
Watch a real decode, pass by pass
In plain wordsPick a real question and press play. You see what the model would answer if you stopped it at each pass, and how unsure it is about the answer word. The answer word settles within a few passes; the uncertainty falls much later.
Pick a question and press play. The box shows what the model would output if it stopped at that pass; the highlighted word is the answer slot. The chart is the entropy at the answer slot (log scale). The answer stops changing long before the entropy collapses, and the text keeps changing after that.
A few passes out of thirty-two, on seven backbones
In plain wordsHow much of the 32-pass schedule can still change the answer? Very little. On POPE the answer is final after to passes on every backbone, and most answers never change after the first pass. Harder GQA questions use more of the schedule.
Iteration utilisation U is the last pass at which the emitted answer changes, divided by the number of passes: the share of the schedule that can still alter the answer. It needs no extra computation.
The confidence arrives late, and it measures the text, not the image
In plain wordsThe model becomes sure of its answer only later, and a simple test shows why. Give it the text it has already written and it becomes certain, whether the image is real or blank; scramble the same words and it does not. Its confidence measures how well the answer fits its own text, not the picture.
Commit granularity, not refinement: a frozen hedge, and one deferred round
In plain wordsLonger schedules are more accurate, but not because the model thinks longer. A short schedule writes many words at once, and its first round can lock a non-answer such as “There, there is a …” into the answer slot. Keeping the answer out of that first round, the answer-deferred round, fixes it.
Short schedules commit many tokens per pass. When the first pass puts a hedge template at the answer slot ("There, there is a …"), a coarse first round freezes it in place. The answer-deferred round (ADR) keeps the answer span out of the first commit round; nothing else changes.
Endpoint confidence is schedule-fragile; one early read fixes it
In plain wordsBecause the confidence tracks the model’s own text, it gets worse at spotting wrong answers as the schedule gets longer, even while accuracy rises. Reading the same uncertainty early, before the text exists, works much better and costs nothing.
If the confidence tracks the text, a longer schedule that writes more text should make it a worse error detector, even as accuracy rises. Reading the same entropy at a fixed early pass avoids that.
Five pre-specified repairs of the endpoint do not come close
In plain wordsWe tried several ways to repair the final confidence, all fixed before looking at the data. None comes close to the simple early signal.
The interventions were fixed before seeing the data. None approaches the free trajectory statistic as an error detector; on GQA three rank errors below chance.
A certified early exit, with the random-score control that exposes vacuous certificates
In plain wordsThe idle passes can be skipped safely. A statistical certificate decides when to stop and keeps the chance that stopping changes the answer below a chosen budget. Running the same procedure with a random score shows how much of the saving the score itself earns.
The exit threshold is certified with distribution-free bounds at a flip-risk budget α. The same procedure run on a random score shows how much of the saving any score would get; on POPE flips are rare and the certificate is largely vacuous, on GQA it is not.
Seven backbones, fresh pools, image noise and a prompt intervention
In plain wordsThe same pattern holds on seven models from three families, on fresh questions and under image noise. Asking a model to explain itself creates the pattern exactly as the account predicts.
Glossary: the terms on this page, in plain words
Every table of the paper and its supplement
In plain wordsAll tables of the paper and its supplement, each with the paper’s own note on how to read it where there is one. Type in the box to find one.
Every figure of the paper and its supplement
In plain wordsAll figures, with their captions. Click one to enlarge it.
Click a figure to enlarge it and read its caption.
All the code: experiments, analyzers, tables and figures
In plain wordsThe scripts that ran the experiments, the ones that analyse their results, and the ones that draw every table and figure.
The data module recomputes every number from the per-example records; the experiment drivers wrote those records on one GPU each.
Every number traces to one of these files
In plain wordsThe result files behind the paper’s numbers. Under each file: the scripts that read it.
Rebuild the tables and figures from the archive
In plain wordsDownload one archive and run these commands to rebuild the paper’s tables and figures.
Download the archive, unzip it and run from its top folder (Python 3.9+ with numpy, scipy, matplotlib and pillow).
python3 papers/cvpr2027_dvlm/make_supp_tables.py # every generated table python3 papers/cvpr2027_dvlm/make_backbone_tables.py # the main-text and backbone tables python3 papers/cvpr2027_dvlm/make_supp_figures.py # the supplementary figures (and the line figures) python3 papers/cvpr2027_dvlm/supp_data.py # recompute the main cache from the per-example records python3 papers/cvpr2027_dvlm/supp_data_backbones.py # recompute the seven-backbone cache (about 1.5 minutes)
Limitations
In plain wordsWhat our results do not show, in the paper’s own words.