license: other
license_name: qwen-research
license_link: LICENSE
pipeline_tag: text-to-image
library_name: radiance
tags:
- radiance
- rocm
- amd
- rdna4
- fp8
- text-to-image
- image-editing
- uncensored
- not-for-all-audiences
base_model: - Qwen/Qwen-Image-2.1-Turbo
- AtomicChat/Qwen-Image-2.1-Turbo-Uncensored-GGUF
Qwen-Image 2.1 Turbo with AtomicChat's abliterated text encoder, FP8 — radiance container
Qwen-Image 2.1 Turbo with the abliterated Qwen3-VL-8B text encoder
of AtomicChat's Qwen-Image-2.1-Turbo-Uncensored,
as a single .rad container for the radiance inference engine
(AMD RDNA4, ROCm).
| File | qwen-image-2.1-turbo-uncensored-fp8.rad — 16.08 GiB |
| Weights | the conditioning network's (Qwen3-VL-8B) and the diffusion transformer's linears FP8 E4M3 per 128×128 block (bf16 scales); the vision tower, the small linears, the norms and the VAE bf16 |
| Steps | 8, fixed by the model |
| Needs | radiance built from main after 1.5.0 — Qwen-Image support is not in 1.5.0 and comes with the next release |
What differs from Qwen-Image 2.1 Turbo
Only the conditioning network's language model: the o_proj and down_proj weights of all 36 layers and the token
embedding, which AtomicChat's abliteration rewrote (scale 0.75, per their GGUF's metadata). The diffusion transformer,
the vision tower and the VAE are the stock Turbo model's.
What that does to pictures is small. The stock pipeline has no content filter, and AtomicChat's own test found no
image outcome changed over 45 prompts; here a picture moves by about as much as the FP8 conversion moves it (39.7 dB
PSNR from the stock container at 1024x1024). The Turbo diffusion transformer itself has no uncensored fine-tune on
Hugging Face.
Serve
radiance --model qwen-image-2.1-turbo-uncensored-fp8.rad --tp 2 --tp-wire wht6 --host 0.0.0.0 --port 8000
The server speaks OpenAI's Images API: POST /v1/images/generations and POST /v1/images/edits
(JSON, or multipart with image / image[] and mask, as OpenAI's SDKs send them). Pictures come back asb64_json (png, jpeg or webp; response_format: url is refused). Also: n, size (WxH or auto =
2048x2048), seed, negative_prompt with true_cfg_scale, streaming with partial_images,background: transparent; edits take 1 to 10 reference pictures and a mask.
On two Radeon AI PRO R9700 with --tp-wire wht6: 11.6 s at 2048x2048, 2.2 s at 1024x1024, 3.1 s for a 1024x1024
edit -- the stock Turbo model's speed.
How this file was made
python extract_atomic.py Qwen/Qwen-Image-2.1/text_encoder AtomicChat/Qwen-Image-2.1-Turbo-Uncensored/text_encoder
rad-convert AtomicChat/Qwen-Image-2.1-Turbo-Uncensored --recipe qwen-image-2.1-fp8.recipe -o qwen-image-2.1-turbo-uncensored-fp8.rad
extract_atomic.py (in this repository) reads AtomicChat's BF16 GGUF by HTTP range and writes the 73 tensors that
differ from the stock text encoder as abliterated.safetensors, with a model.safetensors.index.json that points
those names at it and every other name at the stock shards (linked beside it). AtomicChat/Qwen-Image-2.1-Turbo-Uncensored
is the diffusers download of Qwen/Qwen-Image-2.1-Turbo with that text_encoder/ in place.
The recipe (qwen-image-2.1-fp8.recipe in this repository) is the stock containers' — it names what is
quantised; everything it does not name is the checkpoint's own dtype:
te.blk.*.attn_qkv.weight rtn codes=fp8_e4m3 block=128x128 scale=bf16
te.blk.*.attn_output.weight rtn codes=fp8_e4m3 block=128x128 scale=bf16
te.blk.*.ffn_gate_up.weight rtn codes=fp8_e4m3 block=128x128 scale=bf16
te.blk.*.ffn_down.weight rtn codes=fp8_e4m3 block=128x128 scale=bf16
dit.blk.*.attn_qkv.weight rtn codes=fp8_e4m3 block=128x128 scale=bf16
dit.blk.*.attn_output.weight rtn codes=fp8_e4m3 block=128x128 scale=bf16
dit.blk.*.ffn_gate_up.weight rtn codes=fp8_e4m3 block=128x128 scale=bf16
dit.blk.*.ffn_down.weight rtn codes=fp8_e4m3 block=128x128 scale=bf16
vae.* cast dtype=bf16
License
Built with Qwen. Qwen-Image 2.1 Turbo is licensed under the Qwen RESEARCH LICENSE AGREEMENT (non-commercial;LICENSE in this repository), and NOTICE carries its attribution. This container is a modified copy: its text
encoder carries AtomicChat's abliteration and its linear weights are re-encoded as FP8 (see above).