Model reference · open weights
Qwen-Image-2.1-PE-T2I is an open-weight image model from Qwen. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.
Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.
What it is
| Released by | Qwen |
|---|---|
| Type | Image models |
| Task | Text→image |
| Parameters (lead) | 9.4B |
| Context | 256k tokens |
| Released | 2026-09-20 |
| Popularity | 876 downloads / month |
| Licence | Commercial licence needed |
About
🤖 ModelScope | 🤗 HuggingFace | 📑 Blog | 🖥️ Demo | 🫨 Discord
We are excited to open-source Qwen-Image-2.1, a unified text-to-image generation and image editing model in the Qwen family. With just 7B parameters in its visual generation component (32 Single-Stream DiT layers), Qwen-Image-2.1 balances generation quality, inference efficiency, and versatility.
Four key improvements define this release:
Text-to-image prompt rewriting model for Qwen-Image-2.1. A fine-tuned Qwen3.5-VL 9B that turns a brief image request in any language into a detailed English prompt plus a recommended aspect ratio.
For more details, see the GitHub repo and Blog.
pip install transformers>=5.4.0 torch>=2.4.0 accelerate pillow
import json
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "Qwen/Qwen-Image-2.1-PE-T2I"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id, dtype=torch.bfloat16, device_map="auto"
).eval()
# Load the system prompt shipped with the model
import huggingface_hub
sys_prompt_path = huggingface_hub.hf_hub_download(model_id, "system_prompt.txt")
system_prompt = open(sys_prompt_path).read().strip()
user_prompt = "一只在雨中弹吉他的柯基"
text = tokenizer.apply_chat_template(
[{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}],
tokenize=False, add_generation_prompt=True, enable_thinking=True,
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
with torch.no_grad():
out = model.generate(
**inputs, max_new_tokens=16256,
do_sample=True, temperature=1.0, top_p=0.95, top_k=20,
)
gen = tokenizer.decode(out[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True)
# Split thinking from the answer
thinking, _, answer = gen.partition("")
result = json.loads(answer.strip())
print(result)
# {"rewritten_prompt": "", "wh_ratio": "16:9"}
import json
import torch
from diffusers import QwenImage21Pipeline
WH_RATIO_TO_SIZE = {
"1:1": (2048, 2048), "4:3": (2400, 1792), "3:4": (1792, 2400),
"3:2": (2528, 1696), "2:3": (1696, 2528), "16:9": (2752, 1536),
"9:16": (1536, 2752),
}
# Assuming `result` from above
prompt = result["rewritten_prompt"]
width, height = WH_RATIO_TO_SIZE.get(result["wh_ratio"], (2048, 2048))
pipe = QwenImage21Pipeline.from_pretrained(
"Qwen/Qwen-Image-2.1", torch_dtype=torch.bfloat16
).to("cuda")
image = pipe(
prompt=prompt,
width=width, height=height,
num_inference_steps=40,
generator=torch.Generator("cuda").manual_seed(42),
).images[0]
image.save("rewritten_t2i.png")
The model outputs a JSON object after a `` reasoning block:
{
"rewritten_prompt": "",
"wh_ratio": "16:9"
}
rewritten_prompt — the expanded prompt to pass to the image generation modelwh_ratio — the recommended aspect ratio for renderingThis model is licensed under the Qwen Research License Agreement.
From the published model card. Full card on the HuggingFace links in the sidebar.
Using it via the API
Once AxForge deploys qwen-image-2-1-pe-t2i for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (qwen-image-2-1-pe-t2i below is illustrative; you get the exact model name on deployment.)
$ curl -sS https://api.axforge.ai/v1/images/generations \
-H "Authorization: Bearer $AXFORGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"qwen-image-2-1-pe-t2i","prompt":"a red bicycle","size":"1024x1024"}'
Create an account — your API key is available in the console. 3M free tokens every 30 days with every new account.