~/satyajit

Ming-Image-0.1-Design: a Z-Image fine-tune that is #1 of 42 open models and 16th of 129

mdjsonmcp

2026-09-23 · 33 min · image-generation · diffusion · open-weights · benchmarks · evaluation · agents · explainer

A 114-second narrated explainer, drawn in code. Every figure in it is this article's own; the sources are below.
transcript

Hi, I'm Clementine! Ming's design model draws interfaces. Its core is borrowed; what's new is how a prompt reaches it. The idea: keep Z-Image's diffusion transformer, and swap the parts around it: a new encoder, learned queries, and an alpha-channel decoder. The prompt goes into a Ming multimodal language model, with two hundred and fifty-six learnable query tokens appended. Those query states pass a Qwen connector, into the slot Z-Image's text encoder used to fill. In parallel, a shortcut takes layers five, twelve and twenty, and projects them straight to the transformer's width. The transformer is Z-Image's base checkpoint, fine-tuned: the six billion in the name, about a quarter of the download. Its decoder is swapped for Qwen-Image-Layered's RGBA one. It fits because both use sixteen latent channels. The Layer model asks the same body for frames. The first is the full composite. Then one RGBA layer per frame, front to back. The flat input joins as one more frame. Six layers means eight full frames, run twice per step. Layer count is a latency dial. Here's the released six-layer example. A flat card goes in. Six RGBA layers come out: the text, two illustration layers, the ribbon, the panel, the red background. Stacked, they recompose the card. What did the fine-tune buy? A two-hundred-and-forty-four-point gain over its parent on design prompts: first of forty-two open models, sixteenth of all. So the core is Z-Image's, re-aimed at a new encoder. The arena gain is what fine-tuning bought. To recap: a new encoder into Z-Image's transformer, an RGBA decoder, and layers as frames. Every source is in the full article. I'm Clementine. Bye!

inclusionAI, Ant Group's model lab, released the Ming-Image-0.1-Design family on 22 September: two "6B" models, one that generates text-heavy designs and one that splits a flat design into editable layers, plus two agent skills. The announcement carries one quantitative claim: "Ming-Image-0.1-Design ranks #1 among open-weight models on Artificial Analysis's UI/UX Design leaderboard."

A rank is only half a measurement. This site's standing rule is to put the denominator next to it, and the same rule applies to "6B", to "open-source" and to "Agent Skill". So I read the release rather than the announcement: every config.json, the safetensors header of every shard by HTTP range read, the companion code at inclusionAI/Ming-Image, the leaderboard data Artificial Analysis embeds in its own page, and the two skills in inclusionAI/ling-cookbook. I downloaded no weights and ran no inference. Where I compared weights, I range-read a few tensors of a few kilobytes each.

The short version: this is a careful, useful, permissively licensed release, built mostly out of other labs' open parts and crediting none of them. The #1 holds. It is narrower than the sentence suggests.

inclusionAI/Ming-Image-0.1-Design@1cd7fac · snapshot 2026-09-23
announced
6B text-to-image model for UI, infographics and posters; #1 open-weight on AA UI/UX
measured
6,154,901,056
parameters
6.15B
repo size
71.50 GB
task
text-to-image
library
diffusers
license
mit
safetensors
16 shards
largest file
5.00 GB
files
36
downloads
0
likes
120
parameters by dtype
BF166.15B
text-to-imageimage-generationgraphic-designtext-renderingrgba

Measured from the safetensors headers: the 6B is the DiT alone, 6,154,901,056 parameters, BF16 — 24.8% of a 24,857,847,668-parameter pipeline whose largest part is a 17.0B multimodal encoder. The DiT is Z-Image's S3-DiT with its two learned pad tokens removed. MIT licence. On Artificial Analysis on 23 September: first of 42 open-weight models in UI/UX Design and 16th of all 129 models there, 1083 ± 22 Elo over 2,095 appearances; 45th of 161 across all prompts.

repo last modified 2026-09-22

inclusionAI/Ming-Image-0.1-Design-Layer@6504487 · snapshot 2026-09-23
announced
6B layer decomposition into RGBA layers
measured
6,154,908,736
parameters
6.15B
repo size
65.19 GB
task
image-text-to-image
library
diffusers
license
mit
safetensors
20 shards
largest file
5.00 GB
files
40
downloads
0
likes
38
parameters by dtype
F326.15B
image-text-to-imagelayer-decompositionrgbagraphic-design

Measured: 6,154,908,736 DiT parameters — exactly Z-Image's count — stored in FP32 (24.6 GB) although the card recommends BF16. The multimodal encoder and VAE shards are byte-identical to the Design repo's; the DiT, connector and query tokens differ. Layers come out as frames of the same DiT. The card's only quantitative figure labels its winning row 'CLEAR-1024 (Ours)'.

repo last modified 2026-09-22

inclusionAI/Ming-Image@62c6072 · snapshot 2026-09-23
tracked files
64
license
MIT
branch
main
tests
8 files
source
468.3 kB
commit date
2026-09-22
source by language
Python468.3 kB(26)

by size of tracked source at this commit, file counts in brackets; docs, data and vendored trees excluded

The inference code both model cards point at. MIT at the root; several source files carry Apache-2.0 headers, and diffusion/transformer.py is diffusers' Z-Image transformer under an 'Ant Group' copyright line.

local clone, 2026-09-23 at 62c6072 — branch, commit, commitDate, fileCount, hasTests, languages, license, licenseFile, shallow, testFileCount

shallow clone: counts describe the pinned tree, not the history

inclusionAI/ling-cookbook@71d596e · snapshot 2026-09-23
tracked files
134
branch
main
tests
8 files
source
933.1 kB
commit date
2026-09-22
source by language
Jupyter Notebook548.4 kB(24)Python384.7 kB(44)

by size of tracked source at this commit, file counts in brackets; docs, data and vendored trees excluded

Where the two announced skills live, under resources/recommended-skills/: image-to-editable-ppt (PR #5) and ling-ui-design (PR #6), both merged on 22 September within minutes of being opened. Each skill carries its own MIT licence, 'Copyright (c) 2026 Ant Group'; the cookbook root has none.

local clone, 2026-09-23 at 71d596e — branch, commit, commitDate, fileCount, hasTests, languages, shallow, testFileCount

shallow clone: counts describe the pinned tree, not the history

The 6B is a quarter of the download

The model card says "a 6B text-to-image model" and the GitHub README says "two 6B-parameter models". The Hub's own safetensors counter agrees: 6,154,901,056. It is only counting one folder.

The repo ships five components, and summing their headers gives the pipeline. Measured: 24,857,847,668 parameters in 52.9 GB of files at the current revision of the Design repo. (The card above shows the Hub's 71.5 GB storage figure, which also counts files from earlier revisions.) Every tensor's byte span matches its dtype times its shape, and each component's total equals its files' sizes minus their headers exactly, so there is nothing hidden in the padding.

inclusionAI/Ming-Image-0.1-Design @ 1cd7fac — 24,857,847,668 parameters in 5 components

parameters stored

DiT 24.8%everything else 75.2%
  • DiT (the “6B”) — 6.15B (24.8%). transformer/ — Z-Image's S3-DiT, BF16
  • LLM routed experts — 15.30B (61.6%). mllm/ — 19 MoE layers x 256 experts, 8 run per token
  • LLM dense path — 0.33B (1.3%). attention, shared experts, three routers, norms
  • LLM embeddings — 0.32B (1.3%). 157,184 x 2,048 token table
  • LLM lm_head — 0.32B (1.3%). never runs: the pipeline reads hidden states, it never samples a token
  • vision tower — 0.73B (2.9%). Qwen2.5-VL-72B-shaped ViT + projector; idle for text-to-image
  • connector — 1.31B (5.3%). connector/ — Qwen2.5-1.5B, FP32, run as a bidirectional encoder
  • connector embed_tokens — 0.23B (0.9%). never runs: the connector is fed inputs_embeds
  • mlp + VAE — 0.16B (0.6%). 256 query tokens and two projections (FP32); Qwen-Image-Layered's RGBA VAE

linear-layer arithmetic per image, 12 steps — share spent in the DiT

text-to-image 1024²0.72–1.25 PFLOP in the DiT · 99.40–99.74%

4,096 image tokens · CFG 1.0: one pass

text-to-image 2048²2.53–3.06 PFLOP in the DiT · 99.75–99.93%

16,384 image tokens · the recommended size

4 layers at 10247.49–8.55 PFLOP in the DiT · 99.91–99.97%

24,576 image tokens · composite + 4 layers + reference = 6 frames; CFG 2.0

6 layers at 10249.91–10.97 PFLOP in the DiT · 99.93–99.98%

32,768 image tokens · the released card-making demo

The two bars answer different questions. By storage the DiT is a quarter of the download; by arithmetic it is essentially all of it, because the 17.0B language model is a mixture of experts that runs 0.79B parameters per token over a few hundred prompt tokens once, while the DiT runs all 6.15B over every image token on every step. The ranges span a 512- to 4,096-token prompt. 0.57B parameters (2.3%) never run on any path: the LLM’s lm_head, the connector’s token table and the LLM’s audio router.

Four things in that ledger are worth saying in prose.

The 6B claim is exact, and it describes 24.8% of what you download. That is almost the ratio this site found for Qwen-Image-2.1, whose "7B" was 28% of its pipeline. The difference is that Qwen's biggest non-DiT part was a dense 8.8B text encoder. Ming's is a mixture of experts: 17.0B stored, but only 0.79B of the language model runs per token, over a prompt that is read once. The DiT runs all 6.15B over every image token on every step. Reasoned from those two facts: by linear-layer arithmetic the DiT is above 99% of the work at every size the code supports. By storage it is a quarter. Both numbers are true. The one that decides whether a GPU fits is the storage one, and the release says it plainly: the validated configuration is "one CUDA GPU with 80 GiB VRAM".

565M parameters never run. The language model ships its 322M-parameter lm_head, and the pipeline reads hidden states and never samples a token. The connector is a whole Qwen2.5-1.5B, fed inputs_embeds, so its 233M-parameter token table is dead too. And the language model carries an audio router, 10M parameters, trained (its expert biases correlate 0.80 with the text router's), in a pipeline whose code raises "audio input is not supported by Ming Image inference". None of this is unusual. It is the residue of lifting a multimodal chat model into a text encoder, and it is worth knowing before you quantise.

The Layer repo is heavier than the Design repo. Its DiT is stored in FP32: 24.6 GB for the same 6.15B parameters, 65.2 GB for the repo. The card's recommended settings say "Precision: BF16". It works, because infer.py defaults to --dtype bfloat16 and casts on load. It doubles the transformer download for no stated reason.

The Design model can edit, and the card does not say so. infer.py accepts --task image-edit, served by the same generation_edit profile as text-to-image, at a 1024 bucket. The in-progress vLLM-Omni support lists "(design) Single-reference image editing" as a supported feature. Neither model card mentions it.

The DiT is Z-Image, and not the Turbo one

The transformer's config.json is where the lineage starts. dim 3840, 30 layers of 30 heads, n_refiner_layers 2, cap_feat_dim 2560, axes_dims [32, 48, 48], rope_theta 256.0, t_scale 1000.0. That is, field for field, Tongyi-MAI/Z-Image's ZImageTransformer2DModel: Alibaba Tongyi's 6B single-stream DiT, whose Turbo checkpoint appeared in November 2025 and whose base checkpoint followed in January. Only three things differ. The class is renamed DiffusionTransformer, the first RoPE axis is stretched from 1,536 to 20,480 positions, and two new capability fields decide padding and multi-frame output.

Three independent checks say it is more than a borrowed shape.

  1. The code. Ming's diffusion/transformer.py is 744 lines. After undoing three class renames, 631 of the 653 lines of diffusers v0.36.0's transformer_z_image.py appear in it, in order. The diffusers file opens "Copyright 2025 Alibaba Z-Image Team and The HuggingFace Team". Ming's opens "Copyright (c) Ant Group. All rights reserved." Measured.
  2. The count. The Layer DiT has 6,154,908,736 parameters: Z-Image's number, to the unit. The Design DiT has 7,680 fewer, which is exactly two 3,840-wide vectors. Those are Z-Image's learned x_pad_token and cap_pad_token, dropped because the Design checkpoint masks padding out of attention instead (alignment_padding_mode: "zero_masked"). Measured.
  3. The weights. A shape match proves architecture, not initialisation, so I range-read nine small tensors, biases and norm scales totalling 38,464 values, from Ming and from three candidate parents, and compared them.
Ming-Image-0.1-Design transformer/ against three candidate parents — relative L2, lower is closer
tensorZ-ImageZ-Image-TurboMing-flash-omni-2.0Ming …-Layer
layers.29.adaLN_modulation.0.bias
15,360 values
0.0084 · r 1.000
0.1614 · r 0.987
0.1614 · r 0.987
0.0018 · r 1.000
layers.29.attention_norm1.weight
3,840 values
0.0333 · r 0.998
0.5386 · r 0.334
0.5392 · r 0.333
0.0057 · r 1.000
layers.15.attention.norm_k.weight
128 values
0.0255 · r 0.982
0.0864 · r 0.966
0.0791 · r 0.961
0.0283 · r 0.977
layers.0.attention.norm_q.weight
128 values
0.1250 · r 0.929
0.1945 · r 0.824
0.1896 · r 0.829
0.0292 · r 0.997
all_final_layer.2-1.linear.bias
64 values
0.2498 · r 0.978
0.6705 · r 0.845
0.6265 · r 0.867
0.0560 · r 0.999
t_embedder.mlp.2.bias
3,840 values
0.3342 · r 0.949
0.7925 · r 0.778
0.7692 · r 0.818
0.0935 · r 0.996
t_embedder.mlp.0.bias
1,024 values · retrained
0.9053 · r 0.403
0.9016 · r 0.258
0.8971 · r 0.296
0.0328 · r 0.999
cap_embedder.1.bias
3,840 values · retrained
0.7371 · r 0.678
0.7632 · r 0.668
0.7507 · r 0.678
0.1110 · r 0.994
cap_embedder.0.weight
2,560 values · retrained
0.5327 · r 0.305
0.5105 · r 0.308
0.5992 · r 0.241
0.3369 · r 0.811
Every informative tensor points at the base Z-Image checkpoint, not at the distilled Turbo that inclusionAI’s own February model was built on: the last block’s 15,360-value modulation bias sits 0.84% from Z-Image and 16.1% from Turbo. The three shaded rows are equally far from every candidate, which is what retraining looks like — and two of them are the caption embedder, the one layer whose input changed, from Qwen3-4B’s hidden states to Ming’s connector. The right-hand column is the Layer model against the Design model. The retrained rows moved 50–90% away from Z-Image and moved there together, 3–34% apart, which two independent fine-tunes would not do: the two releases share a Ming parent. 30,784 values per checkpoint, read by range request.

Measured: every informative tensor puts the Ming DiT nearest the base Z-Image, the January checkpoint, and not the distilled Turbo. The last block's 15,360-value modulation bias is 0.84% away from base and 16.1% from Turbo. That matters because inclusionAI has done this before. Its February omni model, Ming-flash-omni-2.0, ships a transformer/ whose config still says ZImageTransformer2DModel, whose _name_or_path is .../Ming_flash_zimage_final_5k_fixrope, and whose mlp/config.json says "dit_type": "zimage". Those weights sit on Turbo: 0.61% from it on the same bias. For the design model they went back to the undistilled base, which is what you do when you intend to train a lot.

The Artificial Analysis arena happens to rate the parent, which makes the size of that training visible. Reported by Artificial Analysis, arithmetic mine: Z-Image Base sits at 840 Elo in UI/UX Design, and Ming at 1083. That is a 244-point gain from fine-tuning, in the category it was fine-tuned for. Across all prompts the gain is 120.

How a 17B model talks to a 6B one

Z-Image conditioned its DiT on the hidden states of Qwen3-4B, which is 2,560 wide. Ming keeps that 2,560-wide slot and replaces what feeds it. Tracing modeling_bailingmm2.py:

The fingerprint agrees with the plumbing. The two tensors that make up the caption embedder are among the three that moved 50–90% away from every candidate parent: the one layer whose input distribution changed was retrained.

The VAE is the other swap. Z-Image uses a 16-channel RGB AutoencoderKL. Ming ships AutoencoderKLQwenImage with input_channels: 4, and Measured: its file has SHA-256 06520463…, identical to Qwen/Qwen-Image-Layered's RGBA VAE. It is the same file. It also has 16 latent channels at 8× spatial compression, which is why the swap is dimension-compatible with Z-Image's in_channels: 16. The config replaces Qwen's per-channel latent means and deviations with a single scaling_factor of 8.0064.

What -Layer means: the same body, with layers as frames

The Layer repo shares the multimodal encoder and the VAE with the Design repo byte for byte: all seven mllm/ shards and the VAE have the same SHA-256 in both. The DiT, the connector and the query tokens differ. The DiT's config differs in two fields, alignment_padding_mode: "learned" and multi_frame_output: true. Its two pad tokens are new: they correlate at −0.002 and −0.019 with Z-Image's, so they were freshly initialised rather than inherited.

The fingerprint's last column settles the family tree. The Layer DiT is closer to the Design DiT than either is to Z-Image, and on the retrained tensors the two moved away from Z-Image together. Two independent fine-tunes would not do that. The two releases share a Ming parent. Measured.

multi_frame_output is the whole trick. The VAE is a video autoencoder, descended from Wan's, with a time axis. The Layer model asks the DiT for N + 1 frames: one full composite, then N RGBA layers, front to back. It appends the flat input image as one more frame along the same RoPE axis the frames use. That is Qwen-Image-Layered's formulation, layers as positions on a third RoPE axis with the conditioning image as its own index, transplanted onto a Z-Image body. The README describes the output honestly: "The layer model returns the requested layers plus one leading composite/full-canvas image." The CLI drops the composite and writes layer_01.png onward.

Eight panels in two rows. Top row: the input, a red card reading 'World Card Making Day, 7th October' with a red ribbon and bow down the left edge, art supplies in two corners and a paintbrush illustration at the top; then Layer 1, the text alone on a checkerboard; Layer 2, the top-right illustration; Layer 3, the two corner illustrations. Bottom row: Layer 4, the ribbon and bow; Layer 5, the dark card panel with its gold glitter border; Layer 6, a solid red background; and the recomposited result, visually identical to the input.
The released six-layer example: input, six RGBA layers on a preview checkerboard, and the recomposition. Rearranged from one row of eight panels into two rows of four; the panels are unaltered (Ming-Image-0.1-Design-Layer model card, showcase).

There is a cost in this design that the card does not spell out. Every layer is a full frame of image tokens, and the Design model's guidance scale of 1.0 becomes 2.0 here, which means two DiT passes per step instead of one. Reasoned from the code: a six-layer decomposition at the 1024 bucket is eight frames, 32,768 image tokens, run twice per step. A 2048² text-to-image image is 16,384 tokens, run once. By linear arithmetic the released six-layer demo is about four times the DiT work of the model's largest text-to-image output, before attention's quadratic term makes the gap wider. The layer count is a latency dial. The card mentions a 512 bucket for speed and says nothing about layer count.

A grid of eight layer decompositions. Each shows several separated layers on grey transparency followed, after a dashed line, by the recomposed design. The designs are template-style graphics: a 'Home Textiles' trade-show flyer, a 'Happy Birthday Anderson' card with a cake, a fashion poster with a large letter M, a South American exotic birds flyer with a parrot, a 'We will be closed on Labor Day' notice on a flag background, a 'Hello Summer' beach graphic with sunglasses, and a 'Natural teeth whiteners' banner with a mother and daughter.
The Layer model's gallery: decomposed layers, then the recomposition after each dashed line. These are template-style designs, the Crello kind; the card does not say where the inputs came from (Ming-Image-0.1-Design-Layer model card, gallery).

The Layer model's only number belongs to something called CLEAR

The Layer card has one quantitative figure. It is a table from a paper: "Table 1: Quantitative results of various layer-decomposition methods on Crello test set". The metrics are RGB L1 and alpha soft IoU, reported at zero to five "max-allowed layer merges". The bold row, the winner, is labelled "CLEAR-1024 (Ours)".

A table titled 'Table 1: Quantitative results of various layer-decomposition methods on Crello test set'. Columns give RGB L1 and alpha soft IoU at max-allowed layer merge 0 to 5. Rows: VLM Base plus Hi-SAM, Yolo Base plus Hi-SAM, LayerD, Qwen-Image-Layered-I2L marked with a dagger, Qwen-Image-Layered-I2L-640 and -1024 marked with a double dagger, and CLEAR-1024 (Ours) in bold with the best value in every column: 0.0574 L1 and 0.8923 soft IoU at zero merges.
The Layer model's only quantitative evidence, as published. The dagger footnote says the Qwen row 'is not open-sourced and was finetuned on the Crello training set' (Ming-Image-0.1-Design-Layer model card, performance).

Neither model card uses the word CLEAR. arXiv has no layer-decomposition paper by that name as of today. So the reader is left to infer that CLEAR-1024 is this checkpoint at its 1024 bucket. That is a reasonable inference and it is still an inference. Reasoned.

The rest of the table is checkable, so I checked it.

Crello test set — RGB L1 (lower is better) at MLM 0, strict matching
VLM Base + Hi-SAM
0.1197 · IoU 0.560
Yolo Base + Hi-SAM
0.0962 · IoU 0.570
LayerD
0.0709 · IoU 0.752
Qwen-Image-Layered-I2L, Crello-tuned
0.0594 · IoU 0.871
Qwen-Image-Layered, released, 640
0.1481 · IoU 0.713
Qwen-Image-Layered, released, 1024
0.1409 · IoU 0.718
CLEAR-1024 (Ours)
0.0574 · IoU 0.892
  • copied from Qwen-Image-Layered's Table 1 — matches to 4 d.p.
  • Ming team's run of the released Qwen weights
  • the table's own row, named CLEAR
CLEAR vs the Crello-tuned Qwen row, RGB L1 at MLM 0
-3.4%
same, alpha soft IoU at MLM 0
+0.0218
CLEAR vs the released Qwen weights at 1024, RGB L1 at MLM 0
-59.3%
The comparison that decides whether this is a strong result is the last grey row: a Qwen model fine-tuned on Crello’s training split, which CLEAR beats by 3.4% on the strict column. Whether CLEAR also saw that split is the one fact the table does not state. Against the Qwen weights anyone can download the margin is 59%, and the table’s own footnote explains most of that: the paper’s number came from a Crello-tuned checkpoint that was never released.

Measured: four of the seven rows are transcribed from Table 1 of the Qwen-Image-Layered paper, and all 48 of their numbers match to four decimal places. The paper's text confirms the dagger. Qwen's reported numbers come from a model they "finetune[d] … on Crello training set" because of the distribution gap between Crello and their PSD-derived data. Two rows are the Ming team's own runs of the released Qwen-Image-Layered weights, and those do much worse (0.1409 L1 against 0.0594). That matches the footnote's point that the paper's number came from an unreleased, Crello-tuned checkpoint.

So the load-bearing comparison is CLEAR against the Crello-tuned Qwen row. CLEAR wins it: 3.4% lower L1 and +0.022 soft IoU at zero merges, and it wins every column. What the table does not say is whether CLEAR also trained on Crello's training split. If it did, this is like-for-like and CLEAR is modestly better. If it did not, this is a zero-shot model beating a fine-tuned one, which would be a much stronger result, and I would expect them to say so. Crello is released under CDLA-Permissive-2.0, so either answer is legitimate. It is simply unstated. The gallery inputs above are Crello-style templates, which is suggestive and not evidence.

The alpha channel is a matte, again

One of this site's Qwen-Image-2.1 findings was that its RGBA output is a matte generator: 99.1% of pixels within seven levels of fully transparent or fully opaque. Ming makes the same kind of claim twice. The Design model generates RGBA from a prompt prefixed with one of ten fixed phrases ("RGBA, 4-channel, transparent background", "抠图素材,背景alpha=0" and so on), and the Layer model emits RGBA layers.

The Layer model's outputs cannot be tested. Measured by absence: no raw layer PNG is published anywhere. The showcase, the gallery and the repo's card_making_decomposition.png are all flattened previews on a checkerboard, in RGB. The Design model's can. The GitHub repo ships three text-to-image samples under transparent_rgba/, each at the native 2048 × 2048. WebP keeps alpha in its own chunk, and in all three that chunk reads compression=1 (lossless) with no level reduction, so the alpha is exactly what the model produced even though the colour is lossy.

Three transparent-background generations on a grey and white checkerboard: a silver sedan in three-quarter view, a close-up of a tabby-and-white cat's face with long white whiskers, and a smiling snowboarder in a white jacket, helmet and goggles holding a board.
The Design model's transparent-background showcase, on the card's own preview checkerboard (Ming-Image-0.1-Design model card, transparency showcase).
alpha values in three native 2048² RGBA samples, lossless alpha plane
silver sedanmidrange 0.652% · alpha = 1–7 12.4%

windows rendered fully opaque; the only soft region is the contact shadow · within 7 levels of an extreme: 98.83%

tabby catmidrange 0.888% · alpha = 1–7 25.5%

fur and whiskers — the hard case · within 7 levels of an extreme: 98.44%

snowboardermidrange 0.144% · alpha = 1–7 45.4%

a helmeted rider holding a board: mostly hard edges · within 7 levels of an extreme: 99.75%

  • 0
  • 1–7
  • 8–31
  • 32–223
  • 224–247
  • 248–254
  • 255
Qwen-Image-2.1, INT8, 1024²
midrange 0.550%
within 7: 99.10%
Qwen-Image-2.1, Q4_K_M, 1024²
midrange 0.482%
within 7: 99.15%
Two different Qwen RGBA autoencoders — Qwen-Image-2.1’s 16x one and the 8x Qwen-Image-Layered one Ming ships — under two different denoisers, and the same answer: under one pixel in a hundred carries partial transparency, even on fur. The rose band is the practical surprise. The background is not zero: alpha = 1 is the single most common value in the snowboarder frame, 43.2% of it, so any tool that treats alpha > 0 as “content” sees the whole canvas.

Measured: 0.652%, 0.888% and 0.144% of pixels fall between alpha 32 and 223, and 98.4–99.7% sit within seven levels of an extreme. The tabby cat is the interesting one, because fur is the case the Qwen piece's falsifier asked for. Fur edges are exactly where a matting model puts partial alpha. At native resolution the model draws the fur boundary as opaque tufts and the whiskers as thin opaque strands, and the soft band that remains is under 1% of the frame. The sedan's windows are fully opaque. The only real gradient in that frame is the contact shadow under the tyres. The same Qwen autoencoder family under a different denoiser, fine-tuned by a different lab, gives the same answer: a clean cutout generator, not a translucency generator.

Three panels of the same 2048-pixel cat image. Left: composited onto a grey and white checkerboard, showing a clean cutout with whiskers extending past the fur. Middle: the alpha channel alone, an almost binary white silhouette on black, with the whiskers as thin white lines and a serrated edge of opaque fur tufts along the top of the head. Right: the RGB channels with the alpha discarded, showing the cat on a dark maroon field.
One sample three ways: composited, alpha alone, and RGB with the alpha thrown away. The fur edge is serrated opaque tufts, not a soft gradient, and the discarded background is a dark maroon field rather than black (my rendering of a native RGBA sample from the Ming-Image repository; the checkerboard and the panel layout are mine).

Two practical notes come out of the same files.

First, the background is not zero. Measured: alpha = 1 is the single most common value in the snowboarder frame, 43.2% of all pixels, and a quarter of the cat's. You cannot see 1/255, but any code that treats alpha > 0 as content will see a full-canvas object. PIL's getbbox() on the sedan's alpha channel returns the full 2048 × 2048 canvas. Thresholded at 8, it returns the car, 1,932 × 969. The PPT skill's cropper defaults to --threshold 8, which clears the floor. The UI skill's optional --trim-alpha uses a bare getbbox(), which does not.

Second, the colour under the transparent pixels is a dark maroon: mean (49, 31, 33) under the cat. Qwen-Image-2.1's was saturated purple. It is less alarming, and it still arrives if a loader drops the alpha channel.

#1 of 42, 16th of 129

Now the claim itself. First, what the leaderboard is, from Artificial Analysis's methodology page (AA from here on).

Then the data, read from the leaderboard page on 23 September.

Artificial Analysis text-to-image arena, UI/UX Design — all 129 models, top 21 plus four reference rows — 23 Sep 2026
1GPT Image 2.5 Flare (max)
1228 ±27
2GPT Image 2.5 Sunburst (max)
1219 ±27
3GPT Image 2 (high)
1204 ±26
4Grok Imagine Image 2.0
1180 ±33
5MAI-Image-2.6
1168 ±29
6Nano Banana 2
1167 ±24
7MAI-Image-2.6-Flash
1148 ±28
8Nano Banana Pro
1136 ±24
9Muse Image
1134 ±29
10MAI-Image-2.5-Pro
1131 ±24
11Nano Banana 2 Lite
1119 ±24
12GPT Image 1.5 (high)
1117 ±24
13Seedream 5.0 Pro
1099 ±24
14MAI-Image-2.5
1095 ±24
15Qwen-Image-3.0-Pro
1092 ±28
16Ming-Image-0.1-Design
1083 ±22
17Qwen-Image-3.0
1083 ±29
18grok-imagine-image-quality
1068 ±22
19FLUX.2 [flex]
1067 ±27
20Wan 2.7
1065 ±26
21Ideogram 4.0 (Quality) · open
1050 ±23
…
30Ideogram 4.0 · open
1016 ±24
…
42FLUX.2 [dev] · open
1000 ±0
…
62Z-Image Turbo · open
948 ±25
…
84Z-Image Base · open
840 ±31
80010001260

what a rating gap means: expected share of UI/UX votes Ming wins, head to head

vs GPT Image 2.5 Flare (max), #1 overall in UI/UX (-144.6)
30.3%
vs Ideogram 4.0 (Quality), #2 open-weight, non-commercial (+33.1)
54.7%
vs HiDream-O1-Image, the next MIT or Apache model (+98.3)
63.8%
vs Z-Image Turbo (+135.4)
68.6%
vs Z-Image Base, the DiT's initialisation (+243.8)
80.3%

the same model in all 20 views — rank among all models, then among open-weight models

overall (all prompts)45/1616/52 open994 ±821,276 appearances
UI/UX Design16/1291/42 open1083 ±222,095 appearances
Layout19/1211/38 open1072 ±222,328 appearances
Text Rendering23/1211/37 open1001 ±212,374 appearances
Productivity & Knowledge Work21/1212/38 open1042 ±222,130 appearances
Reasoning43/974/31 open1016 ±202,320 appearances
Knowledge39/1114/35 open1014 ±212,362 appearances
Retail & E-commerce37/1204/36 open995 ±222,152 appearances
Marketing & Advertising43/1615/52 open999 ±242,137 appearances
Animation & Gaming39/1616/52 open1016 ±222,135 appearances
Human Anatomy46/1517/50 open1000 ±232,409 appearances
Complex Compositions50/1347/42 open1004 ±222,388 appearances
Social Media & Creator53/9112/28 open983 ±222,075 appearances
Architecture & Real Estate56/13412/43 open965 ±212,118 appearances
Frontier61/8813/26 open966 ±212,038 appearances
Lighting59/10313/32 open952 ±212,348 appearances
Consumer66/16114/52 open963 ±222,191 appearances
Material65/11215/36 open947 ±212,375 appearances
Physics70/10015/31 open942 ±212,343 appearances
Live-Action Film78/16117/52 open939 ±212,123 appearances
First among open-weight models in 3 of 20 views, and in two of those three the lead is inside the noise: +7.0 Elo in Layout, +1.25 in Text Rendering, against intervals of ±21–23. Only the UI/UX lead, +33.1, is about two standard errors wide. Artificial Analysis does not tag Z-Image Base as open weights; it is, under Apache-2.0, and adding it would not change any rank above it.

Reported by Artificial Analysis, arithmetic mine:

The Elo arithmetic behind "54.7%" is the definition, not a separate model:

P(Ming wins)=11+10−d/400,d=1083.44−1050.38=33.06P(\text{Ming wins}) = \frac{1}{1 + 10^{-d/400}}, \qquad d = 1083.44 - 1050.38 = 33.06

None of this makes the claim false. It is precisely true of the one category the model is named after, and naming a design model after design is not cherry-picking. It does make the claim specific: a specialist that leads its specialty among open models, sits mid-table everywhere else, and is 145 points behind the best closed model in its own category. The card publishes only the open-weights view of the chart, which is the view in which the rank is 1.

A bar chart titled 'Text to Image Leaderboard: UI/UX Design', subtitled 'Elo scores from blind preference votes in our Image Arena', with the label 'Open Weights Leaderboard'. Fourteen bars with confidence whiskers: Ming-Image-0.1-Design highlighted first at 1082, Ideogram 4.0 (Quality) 1052, Ideogram 4.0 1015, HunyuanImage 3.0 Instruct 1005, FLUX.2 [dev] 1000, FLUX.2 [dev] Flash 999, FLUX.2 [dev] Turbo 994, HiDream-O1-Image 987, Ideogram 4.0 Instant 973, HunyuanImage 3.0 (Fal) 965, Ideogram 4.0 Fast (Quality) 956, Z-Image Turbo 946, Cosmos3-Super-Text2Image 926, ERNIE Image 914.
The chart in the model card: the open-weights filter of Artificial Analysis's UI/UX board, from a snapshot a few days older than the live figures above (1082 vs 1083.44 today). The unfiltered board has 15 closed models above it (Artificial Analysis, as published in the Ming-Image-0.1-Design model card).

Three things about the measurement cut in different directions.

  1. The licence makes the claim understated. "Open-weight" on this board includes non-commercial weights. Ideogram 4.0's are ideogram-4-non-commercial, and FLUX.2 [dev] and its fal derivatives are under the FLUX non-commercial licence. Measured from the Hub metadata: the nearest open model in UI/UX under MIT or Apache-2.0 is HiDream-O1-Image at 985, 98 Elo behind. If what you need is a design model you can ship, Ming's lead is three times what the headline implies.
  2. The prompts are not the ones the model wants. AA prompts are plain natural language. Ming's recommended path runs a separate VLM first, Ling-3.0-flash-VL or qwen3.8-27B, to turn a short request into a Figma-style JSON layout with coordinates, hex colours and every string quoted once. The system prompt for that rewriter is in the README. Whether the arena endpoint applied it is not stated anywhere I can find. The hosted API the skills call has a use_pe switch, so a server-side rewriter exists. Either the arena measured the model without its preferred input, or it measured model plus rewriter. Reasoned, and unresolved.
  3. The model was rated before it was public. AA's record gives introducedAt as 14 September and the release as 22 September. AA says new models are "temporarily upsampled until their ratings converge". By its own interval, UI/UX has not finished converging: 2,095 appearances is more than any model above it has, and ±22 is still wider than the gap to second place.
A grid of fifteen 2048-pixel generations in five rows of three: a fashion storefront web page, an Antarctic food web infographic, a responsive card layout diagram with desktop and mobile columns, an eco-shop landing page, an Instagram-style post in a phone frame, a marketing agency landing page, a smartphone product ad, a vintage clothing shop page, a VR game dashboard, a cabin across four seasons, a robot orthographic design sheet, a four-panel kitten comic, and three photographic portraits of a climber, a chai vendor and a child hugging a plush tiger.
The vendor's text-to-image showcase. Nine of fifteen are interfaces or information graphics, which is the category the model leads; the arena prompts are AA's, not these (Ming-Image-0.1-Design model card, showcase).

Two real skills, wired to someone else's server

The announcement lists "two open-source Agent Skills: the Ling UI Design Skill and the Image-to-Editable-PPT Skill". They live in inclusionAI/ling-cookbook under resources/recommended-skills/, beside a third skill, ling-gui-agent-skill, from earlier in the month. The PR that added the UI skill describes it as "a clean source snapshot without its original Git metadata or history": it was lifted from an internal repository. The cookbook also carries a submodule pointing at an internal code.alipay.com host.

Are they skills, or prompts with a README? Measured: they are skills, and good ones by the standard this site has applied before.

What Image-to-Editable-PPT produces: one .pptx slide per source image. Text becomes native text boxes, simple cards and frames become native shapes, and illustrations become tightly cropped RGBA bitmaps, stacked by a scene.json that compiles offline. It has hard rules I would want in any such tool: "Do not place the untouched source image behind editable text", "Never silently call a flattened slide 'editable'", and a ten-minute budget with a stopping rule for API calls. It is an honest definition of "editable". Bitmap art stays bitmap, and the skill says so.

What it calls is the part the announcement leaves out.

Open weights, infer.pyImage-to-Editable-PPTLing UI Design
Endpointlocal PythonPOST {LING_BASE_URL}/images/editsPOST {API_BASE}/images/edits and /images/generations
Default host—blank in .env.examplehttps://openrouter.ai/api/v1/, which has no /images/edits route
Model idHub repoblank in .env.exampleinclusionai/ming-image-0.1-design[-layer]
Layer sizes512 or 1024 bucket512x512 probe, auto "roughly 2K"auto; 512, 1k, 2k
Prompt rewritingoutside the CLIuse_pe switch, offuse_pe on by default
Super-resolutionnoneuse_sr=true by defaultnot requested
Steps12server default14 to decompose, 30 to generate
Region JSON backnoreads revised_prompt regionsreads asset regions

The PPT skill never names its model in English. Only its Chinese README says it depends on "a model with strong visual spatial decomposition, such as Ming-Image-0.1-Design-Layer". The protocol it speaks has server-side super-resolution, a roughly 2K output and a region reading returned in revised_prompt. The released pipeline has none of these. Reasoned: as written, both skills target a hosted service, and the open weights reproduce part of it.

The UI skill's defaults resolve only halfway. Measured against OpenRouter's public API on 23 September: inclusionai/ming-image-0.1-design is listed, served by Novita since 22 September, free, text-to-image only. inclusionai/ming-image-0.1-design-layer returns 404. So does the route. An unauthenticated POST to /images/generations gets a 400 validation error, so that route exists; the same POST to /images/edits, which the decomposition script uses, gets a 404. A fresh install can generate a page mock and then stops at decomposition. The skill's own rules say to report a missing stage and ask, not to skip it, because decomposition feeds the asset gate that must pass before any code is written. Self-hosting is the other route. The model cards' "recommended" vLLM-Omni recipe link is a 404 on main, and support is vLLM-Omni PR #8021, opened on release day and still open, with a TODO list.

None of this is a defect in the skills, which are careful work. It is a mismatch in the announcement: "open-source skills" beside "open-weight models" reads as a self-contained stack, and today it is not one. For the broader pattern, where skills become the unit of distribution, see NVIDIA's Skill2Env, which trains on 3.4k public skills, and Beacon, which grades agent runs after the fact. The UI skill's loop (generate a mock, decompose it, implement it, screenshot, compare) is the visual cousin of json-render's decision-model approach to generative UI.

The licence is MIT, and mostly means it

The weights are MIT in both Hub repos: the standard text, "Copyright (c) 2026 inclusionAI". The GitHub code is MIT at the root, with Apache-2.0 headers on several of its source files. Both skills are MIT, "Copyright (c) 2026 Ant Group". Measured.

That is the opposite of what this site found three days ago, when Qwen-Image-2.1 moved an Apache-2.0 family to a non-commercial research licence under an "open-source" announcement. Here "open" means what it says, with one wrinkle: most of what is open was someone else's first.

declared: MIT, both repos — inherited: what the parts came with
  • transformer/ (the “6B”)
    6.15B
    Tongyi-MAI/Z-Image
    same parameter count to the unit (Layer); 631 of diffusers' 653 Z-Image lines in the code; last-block adaLN bias 0.84% away
    credited: no — file header reads “Copyright (c) Ant Group”
    Apache-2.0
  • vae/
    0.13B
    Qwen/Qwen-Image-Layered
    SHA-256 06520463… identical: the same file
    credited: code header only; the weights are not attributed
    Apache-2.0
  • mllm/ language model
    16.28B
    inclusionAI/Ling-mini-2.0
    same shape plus two modality routers; norm scales 1.5–1.7% away
    credited: same organisation
    MIT
  • mllm/ vision tower
    0.70B
    Qwen/Qwen2.5-VL-72B-Instruct
    merger norm 0.04% away (7B: 3.5%, 32B: 26%); 8,192-wide merger fits only the 72B
    credited: code header only; no “Built with Qwen” notice
    Qwen License
  • connector/
    1.54B
    Qwen/Qwen2.5-1.5B
    attention biases 0.08–1.5% away; stored in FP32
    credited: no
    Apache-2.0
  • mlp/
    0.03B
    Ming's own
    256 learnable query tokens and three projections
    credited: —
    —
  • byte-identical
  • weight fingerprint
  • new in this release
Distances are relative L2 against the named upstream. Four of the five inherited parts carry Apache-2.0 or MIT, both of which allow commercial use; Apache-2.0 also asks that its licence text and attribution travel with redistributed copies, and neither Hub repo carries either. The exception is small and specific: a 0.70B vision tower whose nearest relative ships under the Qwen License, which asks for a copy of the agreement, a “Built with Qwen” notice, and a separate licence above 100 million monthly users. It runs only when an image goes in, for layer decomposition and editing, not for text-to-image.

Reasoned, and a reading of licence text rather than legal advice. Four of the five inherited parts come from Apache-2.0 or MIT sources, which permit exactly this. Apache-2.0 also asks that redistributed copies carry its licence text and keep the upstream copyright notices. The VAE is Qwen's Apache-2.0 file redistributed unmodified under an MIT-only repo, and transformer.py's Z-Image copyright line has been replaced rather than kept. Both are fixable with a NOTICE file. Neither changes what you can do with the weights.

The exception is the vision tower. Its merger norm sits 0.04% from Qwen2.5-VL-72B-Instruct's. Its 8,192-wide output fits only the 72B. The 72B ships under the Qwen License, which asks for a copy of the agreement, a "Built with Qwen" notice for models built from it, and a separate licence above 100 million monthly users. inclusionAI has shipped the same tower under MIT since at least Ming-Lite-Omni-1.5 in July 2025, whose vision weights sit 0.1–1.4% from Ming-Image's. It is a long-standing position rather than an oversight in this release. For most users the 100M line is irrelevant. For the few it touches, it lives in a 0.70B component that only runs when an image goes in.

Where it sits in the Ling and Ming family

The family links are real, not decorative. The language model inside mllm/ is Ling-mini-2.0, a 16B model from the Ling 2.0 generation, one step before the models this site covered as Ling-3.0-flash and its finance fine-tune Ling-3.0-flash-Fin. The recommended prompt rewriter is Ling-3.0-flash-VL, 124.8B parameters by the Hub's count. Run the README's full recommended path and the "6B" design model has a 125B model in front of it. The skills are named "Ling" because they live in the Ling cookbook, and their environment variables are LING_*. The architecture comes from Ming-flash-omni-2.0, whose image head was already a Z-Image DiT behind the same kind of Qwen2.5-1.5B connector and 256 query tokens. Ming-Image-0.1 is that recipe moved to a smaller language model, a base rather than Turbo DiT, and an RGBA VAE.

What is missing

Verified by absence, as of 23 September:

The take

Ming-Image-0.1-Design is a good fine-tune of a good open model, released under a licence that lets you use it. The engineering is legible from the files. Z-Image's base DiT is re-aimed at a Ming multimodal encoder through 256 learnable queries and a Qwen2.5-1.5B connector, with a parallel shortcut from three of the language model's layers. Its RGB VAE is swapped for Qwen-Image-Layered's RGBA one, which fits because both are 16 channels at 8×. Layer decomposition is done the Qwen-Image-Layered way, as frames of the same model. The arena measures what that training bought: +244 Elo over its parent on UI/UX prompts. That is the number I would lead with.

The announcement leads with a rank instead, and the rank is precise and narrow. First of 42 open-weight models in the one view the claim names, by about two standard errors, over a runner-up you cannot use commercially. Sixteenth of 129 when the closed models are left in. Forty-fifth overall. For a team that needs an MIT-licensed model to draw interfaces and posters, that is a strong case, stronger than the headline once licences are counted. For anyone reading "#1" as "best", it is 145 Elo short.

The Layer model and the skills are the more interesting half, and the less evidenced one. The only number for the Layer model belongs to an unpublished method with a different name, against a table that is mostly Qwen's own. The skills are careful, honest agent packages that, as shipped, call a hosted decomposition service the open weights do not reproduce, at a route and a model id that OpenRouter did not serve the day after release.

Sorting this article's claims by what they rest on. Reported is the arena data: every Elo, interval and appearance count is Artificial Analysis's own, read from its page on 23 September, along with its methodology and the Crello table's numbers. Measured is the parameter counts from every shard header; the SHA-256 identities; the 38,464-value DiT fingerprint and the smaller ones for the connector, language model and vision tower; the code overlap with diffusers' Z-Image; the alpha histograms of the three native samples; the 48-number match to Qwen's table; the 17 skill paths; and the OpenRouter listings and routes. Reasoned is the FLOP split, the layer-count cost, CLEAR's identity, the skills' dependence on a hosted service, and every licence consequence.

What would change my mind

6 claims above, and what would falsify each

  1. Ming's DiT was initialised from the base Z-Image checkpoint, not from Z-Image-Turbo or from scratch.

    The evidence is nine tensors, 38,464 values out of 6.15 billion, chosen because they are small: biases and norm scales, where drift from a shared starting point stays visible. A full comparison of a large weight matrix, say layers.15.attention.to_q.weight at 14.7M values against both Z-Image checkpoints, that puts Ming closer to Turbo, or a statement from inclusionAI that the DiT was trained from a fresh initialisation, would falsify it. So would a Z-Image revision other than the current main turning out to be the true parent, which would change the distances without changing the family.

  2. The UI/UX lead over the next open-weight model is real but only about two standard errors wide.

    The 2.04 treats the two ratings as independent. In a joint Bradley–Terry fit they are not quite, and Artificial Analysis publishes no covariance. If the lead holds at 30+ Elo once Ming's appearances double and its interval narrows to about ±15, it is settled. If it shrinks below 15 as the new-model upsampling ends, the "#1" was early convergence. Either outcome is visible on the public board within a month.

  3. The Layer model's Crello result cannot be read as zero-shot or fine-tuned, because the table does not say which.

    A CLEAR paper, or a line in either model card, stating whether Crello's training split was in the training data settles it in one direction or the other. So would CLEAR-1024 turning out not to be this checkpoint at all, in which case the Layer model has no published number.

  4. Ming's RGBA output is a matte, not translucency: under 1% midrange alpha, even on fur.

    Three native samples, all opaque subjects: a car, a cat, a person. A native 2048² output of glass, smoke or a soft shadow with more than about 5% of pixels between alpha 32 and 223 would falsify it for the Design model. A raw RGBA layer from the Layer model, which nobody has published, is the test I most want, because a decomposition model has to reproduce whatever translucency the input design contains.

  5. Both skills, as shipped, depend on a hosted service the open weights do not reproduce.

    Run Image-to-Editable-PPT end to end against a self-hosted endpoint built from the two Hub repos, for example once vLLM-Omni PR #8021 lands, with use_sr off and a 1024 bucket, and get slides of the same quality. That would make the hosted service a convenience rather than a dependency. OpenRouter adding an /images/edits route and listing inclusionai/ming-image-0.1-design-layer would fix the UI skill's default path without changing that.

  6. The vision tower descends from Qwen2.5-VL-72B-Instruct and inherits the Qwen License's terms.

    Four tensors and a shape. The 72B's vision tower may share its initialisation with a Qwen checkpoint under different terms. A larger-tensor comparison putting Ming's tower nearer another model, or Qwen stating that the 72B's vision encoder is separately licensed, would falsify the licence half. The lineage half rests on the 8,192-wide merger output and a 0.04% norm distance, and would take a stronger counter-example.


Sources, all read directly: the Hub repos inclusionAI/Ming-Image-0.1-Design at 1cd7fac and inclusionAI/Ming-Image-0.1-Design-Layer at 6504487 (every config, every shard header by range read, the LFS SHA-256s, LICENSE); the code at inclusionAI/Ming-Image at 62c6072; the skills at inclusionAI/ling-cookbook at 71d596e and PRs #5 and #6; for comparison, Tongyi-MAI/Z-Image, Tongyi-MAI/Z-Image-Turbo, inclusionAI/Ming-flash-omni-2.0, Qwen/Qwen-Image-Layered, Qwen/Qwen2.5-1.5B, Qwen/Qwen2.5-VL-72B-Instruct and inclusionAI/Ling-mini-2.0, each by a few kilobytes of range read, and diffusers v0.36.0's transformer_z_image.py; the Artificial Analysis text-to-image leaderboard and methodology, both on 23 September; the Qwen-Image-Layered paper, Table 1 and §4.1; OpenRouter's public model API; and vLLM-Omni PR #8021. The figures are the release's own, flattened and resized, except fig7, which is my own rendering of one of its samples; see NOTICE.txt beside them. I measured the alpha histograms myself.

Cite this article

For attribution, please use the following reference or BibTeX:

Satyajit Ghana, "Ming-Image-0.1-Design: a Z-Image fine-tune that is #1 of 42 open models and 16th of 129", ai.thesatyajit.com, September 2026.

bibtex
@misc{ghana2026mingimage01design,
  author = {Satyajit Ghana},
  title  = {Ming-Image-0.1-Design: a Z-Image fine-tune that is #1 of 42 open models and 16th of 129},
  url    = {https://ai.thesatyajit.com/articles/ming-image-0-1-design},
  year   = {2026}
}
share