Model directory and decision workspace
MEMORY DECISION / CHECKED 2026-09-26

Qwen-Image 2.1 VRAM and quantization: what the published measurements support

Qwen-Image 2.1 has no official VRAM table. The model card, the ModelScope card, the GitHub repository and the release blog describe the architecture and stop there, and the official organization publishes no quantized checkpoint at all, so every GGUF, INT8 and FP4 build is third-party work. What exists instead is a handful of named measurements taken under different placement policies, and those differ by design rather than by error.

This page lists each figure with the conditions it was measured under, and states plainly where the public record still disagrees. We have not run this pipeline. No number below is ours.

What the publisher publishes, and what it does not

SourceKindVRAM tableQuantization tiersWhat it actually says
Publisher model card on Hugging FaceFirst partyNoNo7B single-stream DiT (32 layers), Qwen3-VL 8B text encoder, 64-channel RGBA autoencoder at 16x compression. The only memory guidance is enable_model_cpu_offload() for GPUs with limited memory.
Publisher card on ModelScopeFirst partyNoNoSame card text as Hugging Face, mirrored to the domestic hub.
Official repository and its file treeFirst partyNoNo25 tracked paths: README, licence, showcase assets and the prompt-rewrite code. There is no quantization, GGUF or VRAM document in the repository.
Release blog postFirst partyNoNoQualitative only: KV cache reuse is described as improving inference efficiency and reducing memory usage, with no figure attached.
Publisher organization listingFirst partyn/aNone shippedThe organization publishes Qwen-Image-2.1 and two prompt-enhancer checkpoints. It ships no GGUF, FP8 or INT8 release of this model.

Source: publisher model card, ModelScope card, official repository, release blog. All read 2026-09-26.

Component sizes on disk

The vLLM-Omni recipe is the only source that splits the pipeline into named components and sizes them. These are checkpoint sizes on disk, not peak memory.

ComponentClassOn disk
Text encoderQwen3VLForConditionalGenerationbf16, 17.5 GB
Diffusion transformerQwenImage21Transformer2DModelbf16, 14.2 GB
AutoencoderAutoencoderKLQwenImage21fp32, 1.4 GB
TotalAll three components33.1 GB

Source: vLLM-Omni recipe for Qwen-Image-2.1, updated 2026-09-19. The same recipe notes that roughly a quarter of the saving available from quantization comes from the transformer and most of it from the text encoder.

Measured peaks, each with its conditions

SGLang's diffusion cookbook publishes the widest spread, including one consumer card. Measured 2026-09-20 at 1024x1024, 40 steps, guidance 1, one RGBA PNG per run, with VRAM sampled during the request phase rather than at startup.

GPUPlacementAttentionGenerationEditPeak VRAM
H200, 141 GBResidentFlashAttention4.48 s5.29 s38.4 GiB
B200, 192 GBResidentFlashAttention2.46 s3.02 s38.5 GiB
RTX PRO 6000, 96 GBResidentTorch SDPA8.03 s9.63 s38.4 GiB
RTX 4090, 24 GBDiT and VAE resident, encoder offloaded layer by layerFlashAttention18.68 s21.68 s22.7 GiB
DGX Spark, 128 GB unifiedResidentTorch SDPA35.36 s42.23 sNot reported separately

The same page states that the RTX 5090 recipe uses transformer layerwise offload with Torch SDPA and has not been retested against the updated checkpoint, so its row is not published. Its GGUF section carries no figure at all, only the warning that GGUF reduces weight storage without guaranteeing lower latency. Source: SGLang cookbook, Qwen-Image 2.1.

The vLLM-Omni recipe reports its own peaks on datacenter Blackwell, and is explicit that the numbers are `NVIDIA GPUs only` and that support is `not in a tagged release` at the time of writing.

HardwareResolution and stepsConfigurationPeak memoryTime per image
GB3001024x1024, 40 stepsBF1634.0 GB3.28 to 4.49 s
GB3001024x1024, 40 stepsTransformer FP8, image MLP kept BF1632.0 to 32.7 GB3.36 to 4.71 s
GB3001024x1024, 40 stepsText-encoder FP827.5 to 28.1 GB3.43 to 4.77 s
GB2001024x1024, 50 stepsBF1640.0 GBNot reported
GB2001024x1024, 50 stepsFP8, all 160 eligible layers33.4 GBNot reported
GB2001024x1024, 50 stepsFP8 with the image MLP left BF1638.3 GBNot reported

The recipe's own conclusion is worth quoting because it inverts the usual assumption: the text encoder is the bigger saving by a wide margin, about 6 GB against about 2 GB for the transformer, and neither path runs faster. The FP8 variants carry quality costs against BF16 as well, measured as average PSNR: 26.1 dB when every eligible layer is quantized, 29.7 dB when the image MLP stays BF16. Source: vLLM-Omni recipe, updated 2026-09-19.

The quantization tiers that exist, and who publishes them

PublisherTiersNotes
Alibaba Qwen (official)NoneNo quantized checkpoint is released, so there is no official tier list to compare against.
Comfy-Org (ComfyUI)Transformer bf16 and int8_convrot; text encoder bf16, int8_convrot and w4a8; VAE bf16The tiers ComfyUI templates load by default. Its documentation describes int8 as lower memory and bf16 as needing more, with no gigabyte figure and no measured peak.
unslothGGUF (Dynamic 2.0) for the denoiser; a separate FP8 repositoryStates that a GGUF is the denoiser only, so a GGUF pipeline also needs the VAE and a Qwen3-VL GGUF text encoder beside it.
Community quantizersQ2 to Q8 GGUF, INT4 and INT8 ConvRot, uncensored and text-encoder variantsSeveral independent uploaders, each with its own conversion recipe.

No publisher, official or third-party, maps a tier to a memory requirement. That mapping is exactly what a buyer needs, and it does not exist in public. Sources: Comfy-Org repack, ComfyUI tutorial, unsloth GGUF card.

Where the published numbers disagree, and why

For the same model at the same 1024x1024 scale, public figures run from about 2 GB to 38.4 GiB. That is a factor of nineteen, and the reason is not measurement error. There are three different memory models behind those numbers:

  1. Fully resident. Every weight is on the accelerator. SGLang measures 38.4 GiB on an H200; vLLM-Omni measures 34.0 GB BF16 on a GB300.
  2. Partly offloaded. Some components move to host memory between steps. SGLang measures a 22.7 GiB peak on a 24 GB RTX 4090 by offloading the text encoder layer by layer, and the same page notes that CPU offload requires host RAM.
  3. Streamed. Weights live in system memory and are fed to the GPU as needed. An ncnn and Vulkan implementation reports full BF16 precision on as little as 2 GB of dedicated GPU memory with no CPU or disk offload in the usual sense, and says it runs on a GTX 1060. That is a different trade: host bandwidth, not VRAM, becomes the constraint.

Two further reports are worth recording with their limits. A diffusers measurement on a single RTX 5090 reports resident weights of 16.6 GB at 8-bit and 10.6 GB at 4-bit, peaks of 21.3 and 15.2 GB at 1024x1024, 22.6 and 15.4 GB at 2048x2048, and peaks of 25.6 and 19.1 GB with two reference images. Its stated scope is one GPU and one seed per prompt with no BF16 baseline, and it flags its own run configuration. Separately, a forum post claims that INT8 fits 8 GB of VRAM and INT4 fits 4 GB, without naming a resolution, step count, runtime version or measurement method. We record that as an unsupported claim, not as a measurement.

Cross-vendor speed reports are equally unsynchronised. In one community thread a 24 GB RTX 4090 takes nine minutes for a 1376x768 edit with five reference images while plain text-to-image takes about twenty seconds, and another commenter first reports 49 seconds for three references at 2K on a 12 GB RTX 3060 and then corrects it to about a megapixel in twenty seconds. Input resolution, reference count, step count and attention backend are never held together across reports, which is why the disagreements cannot be resolved by reading more of them.

One contradiction that looked like a GGUF problem was partly retracted. A ComfyUI issue reported the int8 repack running 234 to 330 seconds against 158 to 308 seconds for a Q8 GGUF on a 16 GB RTX 5060 Ti. The first reply attributed it to the PyTorch CUDA build rather than the format, and the reporter's follow-up with a cu130 build brought int8 down to 75 and 76 seconds with the GGUF numbers unchanged. The useful lesson is a variable to pin, not a settled result.

Failure modes the memory numbers do not cover

These are open reports against the pipelines people actually use. They matter more than a gigabyte figure when nothing runs at all.

Pointers: loader workaround, vision tower fix, ROCm dynamic VRAM, prefix cache abort, sampling schedule, attention fallback.

How to decide without trusting a single figure

  1. Pin the checkpoint revision, the quantization tier, the runtime and its CUDA or torch build, and the placement policy before comparing two numbers. The retracted int8 result above shows a build change flipping a conclusion.
  2. Compare peak memory, not on-disk size. The same pipeline is 33.1 GB of components, 38.4 GiB resident, and a 22.7 GiB peak under layerwise offload.
  3. Budget the text encoder first. It is the largest single component and the larger quantization saving.
  4. Do not assume the transformer dominates under full layerwise offload. SGLang's own GGUF guide warns that VAE decode and offload buffers can still dominate peak GPU memory.
  5. Expect the first request after startup to cost more than later ones; the vLLM-Omni recipe measures roughly 1.3x.
  6. If you go the GGUF route, budget for three files and one loader: a denoiser, the VAE, and a Qwen3-VL GGUF text encoder with its mmproj, on a loader that recognizes this architecture.

Evidence table

SourceKindDateLink
Publisher model cardFirst-party documentationPublished 2026-09-20Hugging Face
SGLang diffusion cookbookNamed third-party measurement with full conditionsMeasured 2026-09-20SGLang docs
vLLM-Omni recipeNamed third-party measurement with full conditionsUpdated 2026-09-19vLLM recipes
RTX 5090 diffusers noteCommunity report with stated scope and a linked write-upPosted 2026-09-22Model discussion
ncnn and Vulkan implementationProject claim backed by a public repositoryPosted 2026-09-22Model discussion
INT8 fits 8 GB, INT4 fits 4 GBUnsupported claim, no method recordedPosted 2026-09-21Community thread
Generation-speed threadCommunity reports, mutually inconsistentPosted 2026-09-21Community thread
int8 versus Q8 GGUFCommunity report, partly retracted in its own threadOpened 2026-09-22ComfyUI issue

What this page does not claim

We own no test hardware and this page contains no measurement of ours. No checkpoint was downloaded to write it. Nothing here is a promise that the pipeline runs on your card: every figure was produced by someone else, on the hardware named beside it, and the conditions matter more than the number. The fit figure on the model directory entry is the on-disk component total, which is a starting point for planning rather than a VRAM requirement.

Related: local hardware purchase paths and GPU selection by workload and runtime.