Text Generation
Transformers
Safetensors
designcoder
ui-generation
front-end
html
css
javascript
code-generation
full-sft
Instructions to use xingxm/DesignCoder with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use xingxm/DesignCoder with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="xingxm/DesignCoder")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("xingxm/DesignCoder", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use xingxm/DesignCoder with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "xingxm/DesignCoder" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "xingxm/DesignCoder", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/xingxm/DesignCoder
- SGLang
How to use xingxm/DesignCoder with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "xingxm/DesignCoder" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "xingxm/DesignCoder", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "xingxm/DesignCoder" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "xingxm/DesignCoder", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use xingxm/DesignCoder with Docker Model Runner:
docker model run hf.co/xingxm/DesignCoder
Update bench-200 final full-run scores (n=200 all models) + eval artifacts
Browse files
README.md
CHANGED
|
@@ -45,49 +45,93 @@ values are only comparable within the same revision.**
|
|
| 45 |
|
| 46 |
## Checkpoints
|
| 47 |
|
| 48 |
-
| Subfolder | Base model | Optimizer | LR | Global batch | Dataset | Step | bench-200 | Notes |
|
| 49 |
|---|---|---|---|---|---|---|---|---|
|
| 50 |
| `designcoder_qwen3.5_4b_muon_bs32_step1900` | Qwen3.5-4B | Muon | 1e-5 | 32 | 37,865 | 1900 | β | smallest of the first release |
|
| 51 |
| `designcoder_qwen3.5_9b_muon_bs16_step3800` | Qwen3.5-9B | Muon | 1e-5 | 16 | 37,865 | 3800 | β | optimizer ablation (Muon arm) |
|
| 52 |
| `designcoder_qwen3.5_9b_adamw_bs16_step3800` | Qwen3.5-9B | AdamW | 2e-5 | 16 | 37,865 | 3800 | β | optimizer ablation (AdamW arm) |
|
| 53 |
| `designcoder_qwen3.6_27b_adamw_bs32_step1900` | Qwen3.6-27B | AdamW | 1e-5 | 32 | 37,865 | 1900 | β | largest of the first release |
|
| 54 |
-
| `designcoder_qwen3.5_4b_adamw_bs256_data41287_step200` | Qwen3.5-4B | AdamW | 2e-5 | 256 | 41,287 | 200 |
|
| 55 |
-
| `designcoder_qwen3.5_4b_muon_bs256_data41287_step200` | Qwen3.5-4B | Muon | 2e-5 | 256 | 41,287 | 200 |
|
| 56 |
-
| `designcoder_qwen3.5_9b_adamw_bs256_data41287_step200` | Qwen3.5-9B | AdamW | 2e-5 | 256 | 41,287 | 200 | **84.40** |
|
| 57 |
-
| `designcoder_qwen3.8_27b_adamw_bs128_data41287_step400` | Qwen3.8-27B | AdamW | 1e-5 | 128 | 41,287 | 400 | **
|
|
|
|
|
|
|
|
|
|
| 58 |
|
| 59 |
## Benchmark
|
| 60 |
|
| 61 |
`bench-200` is the frozen 200-case DesignCoder benchmark (100 Track A landing, 40 Track A
|
| 62 |
-
dashboard, 30 Track B landing, 30 Track B dashboard
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
|
| 72 |
### Checkpoint selection
|
| 73 |
|
| 74 |
The `data41287` checkpoints were selected by **running the benchmark**, not by taking the
|
| 75 |
lowest training loss. In all four runs the best checkpoint sits at roughly 75% of training,
|
| 76 |
-
and loss kept improving while benchmark scores fell
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
|
| 81 |
-
|
|
| 82 |
-
| 4B
|
| 83 |
-
| 4B
|
| 84 |
-
|
|
| 85 |
-
|
|
| 86 |
-
|
|
| 87 |
-
|
|
|
|
|
|
|
|
| 88 |
|
| 89 |
The 4B AdamW pair is the clearest example: loss improved from 0.2696 to 0.2682 while the
|
| 90 |
-
score collapsed from 84.22 to 68.35. **Do not pick checkpoints from this family by
|
|
|
|
|
|
|
| 91 |
|
| 92 |
## Shared training setup
|
| 93 |
|
|
|
|
| 45 |
|
| 46 |
## Checkpoints
|
| 47 |
|
| 48 |
+
| Subfolder | Base model | Optimizer | LR | Global batch | Dataset | Step | bench-200 (full, n=200) | Notes |
|
| 49 |
|---|---|---|---|---|---|---|---|---|
|
| 50 |
| `designcoder_qwen3.5_4b_muon_bs32_step1900` | Qwen3.5-4B | Muon | 1e-5 | 32 | 37,865 | 1900 | β | smallest of the first release |
|
| 51 |
| `designcoder_qwen3.5_9b_muon_bs16_step3800` | Qwen3.5-9B | Muon | 1e-5 | 16 | 37,865 | 3800 | β | optimizer ablation (Muon arm) |
|
| 52 |
| `designcoder_qwen3.5_9b_adamw_bs16_step3800` | Qwen3.5-9B | AdamW | 2e-5 | 16 | 37,865 | 3800 | β | optimizer ablation (AdamW arm) |
|
| 53 |
| `designcoder_qwen3.6_27b_adamw_bs32_step1900` | Qwen3.6-27B | AdamW | 1e-5 | 32 | 37,865 | 1900 | β | largest of the first release |
|
| 54 |
+
| `designcoder_qwen3.5_4b_adamw_bs256_data41287_step200` | Qwen3.5-4B | AdamW | 2e-5 | 256 | 41,287 | 200 | 82.12 | best 4B / AdamW |
|
| 55 |
+
| `designcoder_qwen3.5_4b_muon_bs256_data41287_step200` | Qwen3.5-4B | Muon | 2e-5 | 256 | 41,287 | 200 | 77.62 | best 4B / Muon |
|
| 56 |
+
| `designcoder_qwen3.5_9b_adamw_bs256_data41287_step200` | Qwen3.5-9B | AdamW | 2e-5 | 256 | 41,287 | 200 | **84.40** | best 9B |
|
| 57 |
+
| `designcoder_qwen3.8_27b_adamw_bs128_data41287_step400` | Qwen3.8-27B | AdamW | 1e-5 | 128 | 41,287 | 400 | **87.89** | strongest checkpoint in the collection |
|
| 58 |
+
|
| 59 |
+
All four `data41287` scores are **final full-benchmark runs: 200/200 rollouts, 200/200
|
| 60 |
+
screenshot captures, 200/200 judge evaluations** per model (no subsetting).
|
| 61 |
|
| 62 |
## Benchmark
|
| 63 |
|
| 64 |
`bench-200` is the frozen 200-case DesignCoder benchmark (100 Track A landing, 40 Track A
|
| 65 |
+
dashboard, 30 Track B landing, 30 Track B dashboard; Track A cases specify a style, Track B
|
| 66 |
+
cases are style-free).
|
| 67 |
+
|
| 68 |
+
**Rubric composition.** Every prompt ships with its own reference rubric of **23β25 binary
|
| 69 |
+
screenshot checks** (184 prompts carry 25 checks, 15 carry 24, 1 carries 23 β 4,983 frozen
|
| 70 |
+
checks in total), all evaluated with `check_with=screenshot` by a vision judge over the
|
| 71 |
+
full-page render. Check distribution across dimensions:
|
| 72 |
+
|
| 73 |
+
| Dimension | Checks | Share |
|
| 74 |
+
|---|---:|---:|
|
| 75 |
+
| Components | 1,517 | 30.4% |
|
| 76 |
+
| Layout | 842 | 16.9% |
|
| 77 |
+
| Aesthetics | 782 | 15.7% |
|
| 78 |
+
| Typography | 642 | 12.9% |
|
| 79 |
+
| Alignment | 616 | 12.4% |
|
| 80 |
+
| Assets | 584 | 11.7% |
|
| 81 |
+
|
| 82 |
+
On top of the frozen checks, the judge scores 5 surface-specific **Prompt-Fit** items (0β2
|
| 83 |
+
each) per case. The reported `overall_score` (0β100) is the unweighted mean of Prompt Fit and
|
| 84 |
+
the six rubric dimensions. Judge: `gpt-5.6-sol` (vision) with structured JSON output.
|
| 85 |
+
|
| 86 |
+
### Full-run results (n=200 per model)
|
| 87 |
+
|
| 88 |
+
| Model | Overall | Landing | Dashboard | Track A | Track B | Prompt Fit | Frozen pass rate | Render fails |
|
| 89 |
+
|---|---:|---:|---:|---:|---:|---:|---:|---:|
|
| 90 |
+
| 27B AdamW step400 | **87.89** | 88.55 | 86.67 | 86.90 | 90.20 | 84.10 | 88.6% | 0/200 |
|
| 91 |
+
| 9B AdamW step200 | 84.40 | 86.31 | 80.85 | 84.10 | 85.09 | 78.35 | 85.4% | 1/200 |
|
| 92 |
+
| 4B AdamW step200 | 82.12 | 85.07 | 76.65 | 82.39 | 81.50 | 75.25 | 83.2% | 1/200 |
|
| 93 |
+
| 4B Muon step200 | 77.62 | 81.65 | 70.14 | 77.64 | 77.58 | 64.60 | 79.4% | 3/200 |
|
| 94 |
+
|
| 95 |
+
Scores increase strictly monotonically with scale (all 6 pairwise differences significant,
|
| 96 |
+
paired bootstrap 10k-resample 95% CI excludes 0 and Wilcoxon p < 0.013 β see
|
| 97 |
+
[`eval/significance_tests.json`](./blob/main/eval/significance_tests.json)). The gap is far
|
| 98 |
+
larger on dashboards (+16.5 from 4B Muon to 27B) than on landings (+6.9), and **Assets** is
|
| 99 |
+
the weakest dimension for every scale (55β67% pass rate), indicating a data-level bottleneck
|
| 100 |
+
rather than a capability ceiling.
|
| 101 |
+
|
| 102 |
+
### Evaluation artifacts (`eval/`)
|
| 103 |
+
|
| 104 |
+
| File | Content |
|
| 105 |
+
|---|---|
|
| 106 |
+
| [`eval/benchmark_summary.csv`](./blob/main/eval/benchmark_summary.csv) | per-model aggregates: overall, Track/Surface splits, six dimensions, Prompt Fit, frozen pass rate |
|
| 107 |
+
| [`eval/benchmark_per_case.csv`](./blob/main/eval/benchmark_per_case.csv) | long-form per-case scores for all 4 models Γ 200 cases |
|
| 108 |
+
| [`eval/significance_tests.json`](./blob/main/eval/significance_tests.json) | paired bootstrap (10k resamples) + Wilcoxon signed-rank for all 6 model pairs |
|
| 109 |
+
| [`eval/rubric_stats.json`](./blob/main/eval/rubric_stats.json) | rubric composition statistics (checks per prompt, per dimension, per track) |
|
| 110 |
+
| [`eval/reports.html`](./blob/main/eval/reports.html) | self-contained interactive HTML report: model comparison, dimension heatmap, score distributions, per-case tables |
|
| 111 |
|
| 112 |
### Checkpoint selection
|
| 113 |
|
| 114 |
The `data41287` checkpoints were selected by **running the benchmark**, not by taking the
|
| 115 |
lowest training loss. In all four runs the best checkpoint sits at roughly 75% of training,
|
| 116 |
+
and loss kept improving while benchmark scores fell. The table below shows the **8-case
|
| 117 |
+
selection subset** (used only to rank checkpoints, not comparable to the final full-run
|
| 118 |
+
numbers in the tables above):
|
| 119 |
+
|
| 120 |
+
| Run | Step | Train loss | subset bench (n=8, selection only) | final full bench (n=200) |
|
| 121 |
+
|---|---:|---:|---:|---:|
|
| 122 |
+
| 4B AdamW | 200 | 0.2696 | 84.22 | **82.12** |
|
| 123 |
+
| 4B AdamW | 266 | 0.2682 | 68.35 | β |
|
| 124 |
+
| 4B Muon | 200 | 0.3339 | 83.36 | **77.62** |
|
| 125 |
+
| 4B Muon | 266 | 0.3349 | 81.27 | β |
|
| 126 |
+
| 9B AdamW | 200 | 0.2518 | 84.40 | **84.40** |
|
| 127 |
+
| 9B AdamW | 266 | 0.2504 | lowest of the three | β |
|
| 128 |
+
| 27B AdamW | 400 | 0.2067 | 91.19 | **87.89** |
|
| 129 |
+
| 27B AdamW | 530 | 0.2059 | 86.37 | β |
|
| 130 |
|
| 131 |
The 4B AdamW pair is the clearest example: loss improved from 0.2696 to 0.2682 while the
|
| 132 |
+
subset score collapsed from 84.22 to 68.35. **Do not pick checkpoints from this family by
|
| 133 |
+
loss.** Note also that small subsets systematically overestimate: the subset ranks checkpoints
|
| 134 |
+
correctly but runs several points above the full 200-case benchmark.
|
| 135 |
|
| 136 |
## Shared training setup
|
| 137 |
|