A DiffusionGemma finetune astatine 71.7% connected the Generative UI Benchmark, 5.5x its base.
OUI-1 is simply a finetuned DiffusionGemma exemplary that writes personification interfaces successful openui-lang. It is 26BA4B exemplary that tin tally connected user people GPU (RTX 5090, astatine FP8), and the weights are connected Hugging Face nether the Gemma Terms of Use.
Agent-driven interfaces are the early of software. But getting location comes down to 3 constraints. Interfaces must beryllium generated successful nether a second. They must beryllium reliable capable to usage arsenic software. And the models must beryllium mini capable to tally locally connected user hardware.
With AppLess, we explored that acquisition utilizing Gemma 4 connected Cerebras. But it depended connected specialized hardware successful the cloud. Moving it onto the instrumentality intends solving a harder problem: preserving responsiveness pinch dramatically little compute, without sacrificing the value aliases correctness of the generated interface.
OUI-1 is our first measurement toward solving that problem: an open-weight exemplary built to make reliable interfaces connected user hardware. The ambition is reliable, agent-driven interfaces generated locally astatine the velocity of accepted software.
Finding a exemplary that fresh the constraints
The protocol was already successful place. OpenUI Lang costs up to 67% less tokens than JSON and streams, truthful the interface starts appearing earlier the exemplary has vanished generating it. The harder portion was uncovering a exemplary pinch the correct velocity and hardware profile.
That is why we chose DiffusionGemma. Autoregressive models make 1 token astatine a clip and are bottlenecked connected representation bandwidth. DiffusionGemma writes a 256-token artifact astatine once, starting from sound and committing each token the infinitesimal it is judge of it. Google reports complete 1,000 tokens per 2nd connected a azygous H100 and complete 700 connected an RTX 5090[1].
DiffusionGemma gave america the velocity we were looking for. But velocity unsocial does not make software: the interfaces besides person to work. That was the spread we needed to close.
The benchmark made the spread concrete. DiffusionGemma scored 13.0% connected the Generative UI Benchmark. It had the velocity and hardware floor plan we wanted, but not the reliability.
The OpenUI Lang parser made those failures easy to see. A schema correction is simply a incorrect enum, a missing required prop, aliases an invented component. A wiring correction is simply a sanction utilized but ne'er defined, aliases a conception defined but ne'er attached to the root.
header = CardHeader("Spending", "last 7 days")
total = Heading("$24,180", "h9")// schema: h9 is not a heading level
chart = AreaChart(days, [spend], "wavy")// schema: "wavy" is not a curve type
footer = TextContent("Updated today")// wiring: defined, ne'er attached to root
root = Card([header, total, chart, summary])// wiring: summary is ne'er defined
That became our northbound star: bring some kinds of correction down without giving up speed.
How we trained it
The training unfolded successful 2 stages. First, we taught DiffusionGemma to constitute OpenUI Lang done supervised good tuning. Then we utilized self-distillation to retrieve its velocity and amended its reliability. Once that worked connected 1 constituent library, we repeated the process crossed 27.
Phase 1: Supervised Fine Tuning
We started pinch astir 700 OpenUI Lang examples written by larger models, dispersed crossed 7 constituent libraries, and ran a LoRA fine-tune connected 1 A100. The nonaccomplishment went down. But the benchmark people went down pinch it. The exemplary had learned to constitute longer, denser programs, and almost nary of them parsed cleanly.
We narrowed the problem to a azygous constituent library: the 1 utilized by the benchmark. The people roseate from 13.0% to 28.8%, but advancement came pinch a tradeoff. One tally reduced wiring errors while expanding schema errors; the adjacent did the reverse:
| n | 78 | 66 |
| n + 1 | 112 | 40 |
| n + 2 | 51 | 65 |
The 2 correction types moved for illustration a see-saw. We were good up of the guidelines model, but nary tally brought some down together. We assumed we had reached a capacity limit of the LoRA: it could study 1 subject astatine a time, and a afloat fine-tune would resoluteness the tradeoff later.
Where the errors went
2802
DiffusionGemma24/184 runs complete
35.3 defects per 100 statements
1263
after supervised finetuning53/184 runs complete
16.4 defects per 100 statements
20313.8× fewer
OUI-1132/184 runs complete
3.8 defects per 100 statements
schema errorswiring errors: undefined names and orphaned sections
Then we recovered a 2nd problem: the exemplary had go slower. We had expected good tuning to make it faster. The sampler commits a token erstwhile its entropy falls beneath a bound, truthful a exemplary that knows the connection should go definite sooner. Instead, connected the aforesaid 20 ray briefs, procreation clip roseate from 1.6 seconds per output to 4.3.
The guidelines exemplary was accelerated because its outputs were short and generic, averaging 22 tokens per statement. The fine-tuned exemplary wrote existent names and values, averaging 32 tokens per statement, and needed astir doubly arsenic galore denoising steps to perpetrate each token. We had taught it to nutrient much useful interfaces, but mislaid the velocity that made DiffusionGemma absorbing successful the first place.
Seconds per output, earlier and aft supervised finetuning
Same 20 ray briefs, 1 petition astatine a time, aforesaid serving settings for some rows: vLLM, FP8, 1 A100.
DiffusionGemma1.6s
after supervised finetuning4.3s
The finetuned exemplary writes longer outputs and needs astir doubly the denoising steps per token: it is committing existent names and values wherever DiffusionGemma commits short, generic ones.
Phase 2: Self-distillation
The breakthrough was realizing that OpenUI Lang has a verifiable reward. The parser tin show america whether an interface is structurally valid and place the nonstop schema aliases wiring errors erstwhile it is not. That meant the exemplary could go its ain teacher: make programs, support aliases repair them utilizing the parser's feedback, and study from the result. Self-distillation besides offered a way to recovering velocity because it is simply a known measurement to trim the denoising steps utilized by diffusion connection models[2][3].
Our type uses rejection-sampled self-training pinch repair. The exemplary writes a fewer 100 OpenUI Lang programs, and the parser keeps the ones it accepts. Near-misses spell done a repair walk that fixes only the defects reported by the parser; we cull immoderate edit that rewrites aliases invents. The median repair changes 1 statement. A judge past checks whether each surviving programme matches its brief. Those programs go the training group for the adjacent run: 500 steps, taking an hr aliases 2 connected 1 A100. The resulting exemplary generates the adjacent batch, and the loop originates again.
Self-distillation: generate, verify, retrain
1 · generatethe exemplary writes a fewer 100 openui-lang programs
2 · verifythe parser keeps the ones that walk clean; a judge checks each against its brief
3 · repairnear-misses fixed by an LLM, listed defects only, rewrites rejected
4 · retrainthe survivors go the adjacent training set
each walk trains the exemplary that writes the adjacent batch
The velocity came back: connected the aforesaid 20 ray briefs, procreation clip fell from 4.3 seconds per output to 1.9, moreover though the outputs contained 28% much tokens than DiffusionGemma's. Then the see-saw stopped. The benchmark people reached 57.1%, schema errors fell from 292 to 76, and wiring errors fell from 971 to 484 successful the aforesaid model. Every earlier tally had traded 1 correction type for the other; self-distillation improved both.
In effect, this is reinforcement learning successful its simplest form: rejection sampling pinch the parser arsenic the reward. Our hypothesis—which we person not isolated—is that training connected the model's ain matter keeps the nonaccomplishment debased almost everywhere, concentrating the gradient connected the fewer things that changed: repaired statements and sampled choices pushed toward the mode. The first teaches the wiring fix; the 2nd sharpens the exemplary truthful the entropy bound tin perpetrate tokens earlier. Teacher-written information spreads that gradient crossed an wholly different penning style.
Phase 3: Generalizing crossed 27 constituent libraries
The one-library consequence near america pinch different question: had the exemplary learned to make interfaces, aliases had it learned 1 constituent library? We applied the aforesaid recipe—supervised good tuning followed by self-distillation—across 27 constituent libraries.
The consequence was OUI-1. On the Generative UI Benchmark, it scored 71.7%, up from DiffusionGemma's 13.0%. Every unfastened exemplary pinch up to 31B progressive parameters scored lower, including Gemma 4 31B astatine 46.7%, pinch 1 exception: Qwen3.8 27B astatine 78.8%. Qwen3.8 is simply a dense exemplary that uses 27B parameters connected each token, compared pinch OUI-1's 4B progressive parameters. Nothing astatine 4B progressive parameters aliases beneath scored higher; the adjacent measurement up successful people required a dense 27B.
Generative UI Benchmark, open-weight models up to 31B active
frontier models, unfastened and closed · 90 to 99.5%02040608010031B14B8B4B2Bfewer progressive parameters →OUI-171.7% · 5.5x the guidelines modelDiffusionGemma · 13%Qwen3.8 27B · 78.8%Qwen3.6 27B · 68.5%Qwen3.6 35B-A3B · 61.4%Gemma 4 31B · 46.7%Phi-4 14B · 44%Gemma 4 26B-A4B · 29.9%Ministral 8B · 27.2%Granite 4.1 8B · 14.7%LFM 2.5 2.6B · 3.3%
View dataThe summation besides generalized beyond the benchmark library. On the AppLess library, we tested 60 asks that the exemplary had ne'er seen during training. OUI-1 produced 55 valid outputs; DiffusionGemma produced 23.
Valid outputs connected the appless telephone library
60 asks written independently of each training file, 1 output each, counted valid erstwhile it parses clean: nary schema errors, each sanction defined, astatine slightest 3 statements.
DiffusionGemma23 / 60
OUI-155 / 60
A different constituent room from the benchmark's, pinch its ain signatures successful the strategy prompt. None of these asks aliases outputs were trained on.
OUI-1 did much than bring america backmost to wherever we began. AppLess had relied connected Gemma 4 moving connected Cerebras; it now runs connected OUI-1. On the benchmark, OUI-1's 71.7% surpassed some Gemma 4 31B astatine 46.7% and Gemma 4 26B-A4B astatine 29.9%. The acquisition that first required specialized conclusion hardware tin now beryllium powered by an open-weight, 4B-active exemplary built to tally connected user hardware.
Model release
Get OUI-1
Download the open-weight exemplary from Hugging Face.
26B parameters · 4B progressive · FP8View exemplary weights
Open evaluation
Explore the benchmark
Review the scoring codification and earthy generations connected GitHub.
71.7% Generative UI BenchmarkView benchmark
Directions from here
Three directions matter from here:
- Personal devices. Run models for illustration OUI-1 person to the person, keeping much of their discourse connected the device.
- OpenUI Lang 0.5. Generate interfaces pinch their ain state, queries and mutations, truthful the runtime—not the model—handles each interaction.
- Lower latency. Move toward reliable, locally generated interfaces that get successful nether a second.
Google, DiffusionGemma: faster text generation
Deschenaux and Gulcehre, Beyond Autoregression: Fast LLMs via Self-Distillation Through Time
Zhang et al., T3D: Few-Step Diffusion Language Models via Trajectory Self-Distillation with Direct Discriminative Optimization
English (US) ·
Indonesian (ID) ·