What a diffusion LLM is, and what Mercury 3 is like to run in a workspace

Rafael
•

Almost every language model you have used writes one token at a time. It reads the prompt, predicts the next token, appends it, and runs again. A 500-token answer is 500 passes through the model, one after the other, and no amount of hardware lets the 300th token start before the 299th is done.

Inception's Mercury 3, released today, does not work that way. It is a diffusion language model, and Inception reports 1,068 tokens per second for it on NVIDIA GPUs. As of this release, Curiosity can use it as an LLM provider for chat, AI tools and agents. This post explains what a diffusion LLM does differently, and what we saw when we ran it.

Writing by filling in blanks

Image diffusion models start from noise and remove a little of it at every step until a picture is left. Text has no natural equivalent of Gaussian noise, so the common text version uses masking instead. The Kuleshov group's How to build a diffusion language model describes the result as a "generative BERT".

Training takes a clean sentence, hides a random fraction of its tokens, and asks a transformer to predict the hidden ones. Unlike a next-token model, the transformer sees the whole sequence at once, left and right of every gap. The fraction hidden changes from example to example, so the model learns to work from a nearly complete sentence and from an almost empty one.

Generation runs the process backwards. It starts from a sequence that is all masks. In each round the model predicts every masked position, keeps some of the predictions and masks the rest again, so a few more positions are settled each round:

round 0   [M]  [M]  [M]  [M]  [M]  [M]  [M]
round 1   The  [M]  [M]  [M]  [M]  [M]  mat
round 2   The  cat  [M]  [M]  on   [M]  mat
round 3   The  cat  sat  down on   the  mat

The number of rounds is a setting, and it can be far smaller than the number of tokens. That is where the speed comes from: each round is one pass through the model, and each pass settles many tokens at once. The same post puts the gain at 5 to 10 times faster than autoregressive generation. Inception's Mercury paper reported 1,109 tokens per second for its smallest coding model on an H100, measured by Artificial Analysis.

The same sentence, generated token by token and by masked diffusion.

Where the approach is weaker

Sean Goedecke's Strengths and limitations of diffusion language models lists the costs:

  • A fixed output length. A plain masked model fills in a sequence of a set size, say 256 tokens. That is wasted work for a two-word answer.
  • Long prompts. A token-by-token model computes the attention state for the prompt once and reuses it (the KV cache). A model that rewrites the whole sequence on every round cannot reuse it as easily, so it is slower at reading a long context.
  • Changing course. A reasoning model that writes left to right can notice a mistake halfway and take it back. It is less clear how a model that settles a block at a time does the same.

The first two have a standard fix, block diffusion: generate the answer in blocks from left to right, run diffusion inside each block, and cache the blocks that are done the way an autoregressive model caches its prefix. The answer can then be any length, and the prompt is read once. Mercury 3 accepts a 1M-token context, up from 260K in Mercury 2.5, and Inception has not published how it reads one that long. The third point is open: one commenter in the Hacker News thread on Mercury 3 asks whether a model that writes out of order is harder to follow when you rely on its visible reasoning.

Connecting it to Curiosity

Inception's API is OpenAI-compatible, so the integration is small. In Manage → AI → LLM Providers there is now an Inception Labs entry that talks the OpenAI protocol to https://api.inceptionlabs.ai/v1, with mercury-3, mercury-2.5 and mercury-2 in its model list. Usage is attributed to Inception on the LLM usage page, and the reference prices come from our copy of Simon Willison's llm-prices, which now carries Inception's models.

Mercury 3
Context 1,000,000 tokens
Input price per million tokens $0.20 ($0.10 at launch)
Output price per million tokens $0.70 ($0.35 at launch)
Cached input 90% off the input price
Throughput reported by Inception 1,068 tokens/s

We timed it from a development workspace:

Time
Connection test 923 to 988 ms
First streamed text in a chat 0.4 to 1 s
A chat turn, including one or two tool calls 1 to 2 s

These are measurements from one container on one day, not a benchmark.

When to try it

Mercury 3 suits work where the response time of each turn matters: an assistant that calls several tools per answer, a support reply drafted while the customer waits, an agent loop with many short steps. Inception says it matches or beats the speed-optimized models of the large labs on its benchmarks, and the new model has not yet been tested independently, so run your own prompts before you switch a production assistant. The Curiosity documentation has the setup steps.

Further reading

Read next

Articles on context graphs, enterprise search and industrial AI

Connected knowledge for AI systems