ui-distill-3b

Qwen2.5-Coder-3B-Instruct, fine-tuned to write single-file HTML UI components in the style of Ornith-1.0-35B.

Trained on one RTX 3060 12GB.

What it is for

Getting a polished, self-contained HTML component out of a one-line request. The long system prompt that normally coaxes this out of a big model — use Tailwind, add hover states, center it on a full-height background, make it screenshot-ready — is baked into the weights, so you do not have to write it.

Use this system prompt, and nothing more:

You are an expert front-end developer. Respond with a single,
self-contained HTML file and nothing else.

Then just ask: "Create a settings panel for a self-hosted media server. Toggles for hardware transcoding and auto-download, a storage usage bar, and a save button. Dark theme, modern and polished."

Recommended sampling: temperature 0.7, top_p 0.95, repeat penalty off (1.0). Repetition penalty degrades HTML — closing tags and repeated class names are legitimate repetition.

Files

file size
ui-distill-3b-Q8_0.gguf 3.1 GB — recommended
ui-distill-3b-Q4_K_M.gguf 1.8 GB
adapter/ 229 MB LoRA, if you want to merge it yourself

Q8_0 at 32k context uses about 4.5 GB of VRAM.

Results

Ten held-out build requests, written by the teacher itself, same one-line system prompt and sampling for every model:

median output throughput clean finish
Qwen2.5-Coder-3B (stock) 3,579 chars ~88 tok/s 10/10
ui-distill-3b 27,267 chars ~85 tok/s 8/10
Ornith-1.0-35B (teacher) 28,045 chars ~51 tok/s 10/10

Output volume converged to within 3% of the 35B teacher, at 1.7x the speed. The substance changed too: the fine-tune reaches for Tailwind, backdrop blur, hover states and transitions without being asked.

Limitations

Read these before you deploy it anywhere.

  • It does not always know when to stop. 2 of 10 evaluation runs ran into the 32k context wall and produced truncated HTML. Training samples were capped at ~10k tokens, so verbosity generalized but termination did not. The stock base model and the teacher both finished 10/10. Cap max_tokens yourself.
  • It is verbose by construction. If you want compact markup, this is the wrong model. Median output is ~27k characters.
  • 0.292 is a training loss. There is no held-out validation set. It indicates fit to the teacher's distribution, not UI quality.
  • Narrow domain. 33 component types x 14 visual styles, dark-theme-heavy, Tailwind Play CDN. Outside that, expect it to behave like the stock 3B.
  • English only, and it inherits every bias and failure mode of both the base model and the teacher.

Training

base            unsloth/Qwen2.5-Coder-3B-Instruct
method          QLoRA (Unsloth), r32 alpha32, response-only masking
data            567 of 648 samples usable at max_seq_len 10240
epochs          2  (284 steps, batch 1 x grad accum 4)
lr              2e-4 linear, adamw_8bit, seed 3407
hardware        1x RTX 3060 12GB
runtime         1h57m05s
final loss      0.292

License

Non-commercial. The base model, Qwen2.5-Coder-3B-Instruct, is released under the Qwen Research License, and this derivative inherits it. Note this is specific to the 3B — the 0.5B, 1.5B, 7B, 14B and 32B Qwen2.5-Coder models are Apache 2.0.

The training data is separate and permissive: it is Ornith-1.0-35B output, and Ornith is MIT. See DogukanUrker/ui-distill-html-648.

Credits

Teacher: Ornith-1.0-35B by DeepReinforce (MIT). Base: Qwen2.5-Coder-3B-Instruct by Qwen. Trained with Unsloth.

Code, evaluation harness and side-by-side gallery: https://github.com/DogukanUrker/ui-distill

Downloads last month
35
GGUF
Model size
3B params
Architecture
qwen2
Hardware compatibility
Log In to add your hardware

4-bit

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for DogukanUrker/ui-distill-3b

Base model

Qwen/Qwen2.5-3B
Quantized
(114)
this model

Dataset used to train DogukanUrker/ui-distill-3b