Clockwork Image21 Turbo NVFP4

Built with Qwen. An independent Clockwork Innovations quantization of the official Qwen-Image-2.1-Turbo checkpoint, including a locally packed NVFP4 image transformer and weight-only NVFP4 language encoder. This is our first public image quant release.

This release is for noncommercial research and evaluation only, under the Qwen Research License Agreement. Read NOTICE and MODIFICATIONS.md. Commercial use needs a separate upstream license. This is not an official Qwen, Comfy-Org or NVIDIA release.

What's included

File GiB Precision and changes
diffusion_models/clockwork_image21_turbo_transformer_nvfp4.safetensors 5.08 196 internal attention/MLP matrices in transformer blocks 2–29 use native block-16 NVFP4. Boundary blocks and other tensors remain BF16.
text_encoders/clockwork_image21_encoder_nvfp4.safetensors 8.06 224 attention/MLP matrices in language layers 2–33 use weight-only block-16 NVFP4. Activations and matrix multiplication remain BF16. Vision encoder, embeddings, head, norms and boundary layers remain BF16.
vae/clockwork_image21_vae_bf16.safetensors 0.63 Official BF16 VAE, repacked with native Comfy key names and singleton dimensions; tensor values retained.
Total weight files 13.77 File storage is not runtime RAM. This is not an all-tensor FP4 model.

Files are the exact bytes qualified locally. SHA256SUMS and weights.json contain checksums, byte counts, source identity and modification notices. Safetensors headers also describe the conversions.

Source and recipe

All weights originate from the official repository at revision fc13ba1986fcb905854dc8de2f52eee395f49b5b. We did not start from another publisher's quantization.

Packing uses native Comfy stochastic block-16 NVFP4, one scale per selected matrix computed as amax / (448 * 6), and a deterministic seed derived from the first four SHA-256 bytes of each tensor name in little-endian order. The encoder sets full_precision_matrix_mult: true. No activation calibration, fine-tuning or data-driven sensitive-layer search was performed.

On our Spark, transformer CPU packing took 106.28 seconds, and encoder CPU packing took 102.28 seconds, excluding subsequent digest verification, acquisition, inference qualification and publication. These are packing times, not end-to-end onboarding estimates.

Original conversion records are in recipes/. Their historical packed-unvalidated / candidate-unvalidated statuses describe the packing stage; the later completed evaluation is in evaluation/results.json. A portable CPU recipe adapter is provided in recipes/quantize.py; it was packaged after qualification and has not been rerun end-to-end. Changing metadata or runtime versions can change file hashes even when tensor values match.

Measured on NVIDIA DGX Spark / GB10

The following comparison keeps the same NVFP4 image transformer and BF16 VAE in all columns. Only the language encoder's storage precision changes. It does not compare an entirely BF16 image pipeline against an entirely FP4 pipeline.

Quantity BF16 encoder FP8 encoder NVFP4 encoder
Encoder file, GiB 16.33 10.58 8.06
Loaded CUDA residency, GiB 22.56 16.77 14.30
Settled physical RAM draw, GiB 25.65 30.24 18.87
Cold-load physical RAM draw, GiB 52.19 51.45 36.93
1024-square photo CUDA peak, GiB 25.02 19.24 16.78
Ten-reference editing CUDA peak, GiB 33.25 27.46 25.01
2048-square generation CUDA peak, GiB 30.67 24.88 22.42
Warm 1024 generation median, seconds 8.13 8.04 7.84

CUDA figures exclude other resident processes. Physical RAM draw includes host activity, buffers and file cache; these were sequential trials on a shared host. Spark uses unified CPU/GPU memory: do not add CUDA to the physical RAM figure. FP8 headline memory figures use a separate four-shape combined-package validation; original per-case figures are retained in the evaluation data. Memory was sampled every 250 ms, so very brief peaks may be missed. Warm medians exclude the first photo request. Small timing differences are not a major speedup claim.

Quality and tested functionality

19 matched cases per encoder precision completed successfully, with fixed prompts, seeds and reference images. The checks cover actual dimensions, finite conditioning, decoded/re-encoded owned PNG outputs and real 0–255 transparency where requested. Two seeds cover photography, illustration, English typography, Chinese typography, spatial layout, alpha generation, blue recoloring edits and transparent green edits. One seed covers two-reference composition, ten reference slots and 2048-square botanical illustration. The ten-slot test uses five unique references repeated twice; it is not ten independent scenes.

Text and ordered objects remain recognizable and correct in these cases. Alpha generation/editing and reference edits remain functional. NVFP4 changes style, composition, material texture, lighting and typography more than FP8. For example, the fox becomes larger in one illustration, teapot geometry changes, and poster typography changes. Our FP8 encoder was the closer match to BF16. This finite sample does not establish zero quality loss or universal capability coverage.

BF16, FP8 and NVFP4 encoder comparisons

Original PNGs, including transparent outputs, are in assets/. Each output's prompt, seed, dimensions, timing and memory measurement are in evaluation/results.json; ordered editing reference hashes are included there too. The gray backdrop in the gallery is a preview background, not an opaque replacement for alpha.

Native Comfy use

The tested runtime is native ComfyUI revision dddb41aad74eb9fdfe948f1bdf6fffd784fa079d, using its separate environment. No custom nodes or HTTP/UI server were used for qualification. Hardware verification is limited to GB10; portability to other GPUs or newer Comfy revisions has not been measured. These files are native Comfy checkpoints, not a drop-in Diffusers repository.

Download this repository with Hugging Face CLI:

hf download cwinnov/Clockwork-Image21-Turbo-NVFP4 --local-dir ./clockwork-image21
cd clockwork-image21
sha256sum -c SHA256SUMS

Use the Python environment belonging to your compatible Comfy checkout. Its installation and CUDA/PyTorch dependencies are not bundled here. The standalone generate.py provides the same load/sampling logic used in qualification, adapted to public paths. Its CPU import preflight is checked separately; GPU qualification was performed through our isolated managed worker, not by running this public wrapper on a second machine.

python generate.py --comfy-root /path/to/ComfyUI --preflight
python generate.py --comfy-root /path/to/ComfyUI --seed 42 --output teapot.png
python generate.py --comfy-root /path/to/ComfyUI \
  --reference assets/reference-photo.png \
  --prompt "Change the red ceramic teapot to blue. Keep its shape, the lemon, cloth and camera view unchanged." \
  --seed 42 --output blue-teapot.png

The wrapper verifies the three weight hashes, requires 224 packed encoder matrices, disables dynamic VRAM and requests full GPU residency. It uses eight steps, Euler, CFG 1 and the upstream Turbo sigma schedule:

1.0, 0.978453, 0.95418, 0.926626, 0.89508, 0.845148, 0.704534, 0.414568, 0.0

Generation accepts 256–2048 dimensions in multiples of 16, one output at a time. Editing accepts 1–10 ordered references, conditions them at resolution 512 and returns an image around 1024-square area with aspect ratio derived by the native node. --width / --height control generation only. Do not assume a 1024-reference-resolution editing run has the same memory bound: that larger reference configuration failed our physical-memory floor and is not offered here. Transparency is requested in the prompt; outputs can retain native RGBA.

For an existing Comfy installation, the file directories correspond to models/diffusion_models, models/text_encoders and models/vae. Use the native QWEN_IMAGE encoder type and TextEncodeQwenImage21 path. A ready-made Comfy GUI workflow is not included or independently tested.

Limitations and attribution

Uncalibrated quantization; BF16 exceptions and BF16 encoder computation; one hardware platform; one/two seeds per subject; no general speed or quality-equivalence guarantee. Quantization reduces persistent weight memory but does not eliminate activation, host-buffer or file-cache costs. The tested native path is full GPU residency, not a CPU-offload memory comparison.

Qwen retains its upstream rights. The full license and required attribution are distributed with this derivative. Reasonable descriptive reference to the upstream model identifies the source; Clockwork Image21 Turbo NVFP4 is the derivative's primary name. No commercial or hosted-inference permission is granted by this publication.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for cwinnov/Clockwork-Image21-Turbo-NVFP4

Quantized
(52)
this model