一张 A800 80GB,跑通 Qwen-Image-2.1:GPUStack 部署、生成与图像编辑实战

0 阅读10分钟

Datawhale 社区成员 / AI 算法工程师、架构师

2026 年 9 月 20 日,千问团队开源了 Qwen-Image-2.1——一个统一支持文生图与图像编辑的模型。它的视觉生成模块为 7B 参数、32 层 Single-Stream DiT,文本与条件图像编码由 Qwen3-VL-8B 完成。官方将其定位为结构紧凑、兼顾效率与通用性的图像模型。

我们来看一下官方与社区实测给出的关键规格:

属性数值
定位统一文生图 + 图像编辑模型
视觉生成模块7B 参数,32 层 Single-Stream DiT(Block-Causal 注意力)
文本/条件编码器Qwen3-VL-8B(文字指令与参考图走同一条编码路径)
核心链路参数约 16B(ModelScope 仓库标注 16.22B)
VAE64 通道 RGBA 自编码器,空间压缩倍率 16×
分辨率原生 2K,默认 2048×2048,7 种宽高比最大到 2752×1536
推理配置Flow Matching + Euler 调度,建议 40 步;服务默认值可能不同
参考图模型最多支持 10 张;vLLM-Omni 当前配方每次最多 4 张
透明图像原生 RGBA 输出,透明通道在 latent 空间直接生成
权重体积约 33 GB(ModelScope 仓库)
开源协议Qwen Research License(限非商业与研究用途)

fig1

四项官方主打的升级:更紧凑高效的模型结构(DiT 从上一代 20.4B 瘦到 7B)、原生透明图像(RGBA 图层可直接生成与编辑)、更灵活的多图与局部编辑(模型最多支持 10 张参考图,实际数量受推理后端限制)、文字与人物光影细节改善。其中透明图这一项,ComfyUI 官方博客的原话是 "No other major open model does this"。

一、在 GPUStack 上部署 Qwen-Image-2.1

Qwen-Image-2.1 是扩散(DiT)模型,不是自回归 LLM,因此不能直接用常规 vLLM 跑。它走的是 vLLM-Omni 这条线——这是 vLLM 项目专门为扩散 / 多模态生成模型做的运行时,在发布当天(Day 0)就提供了对 Qwen-Image-2.1 的支持。

在 GPUStack 里的思路和部署 LLM 一样:先在「推理后端」为 vLLM 加一个指向 vLLM-Omni 的版本,剩下的部署流程仍然是 Web 界面几步完成。

笔者的 GPU 环境:NVIDIA A800-SXM4-80GB;驱动版本:570.172.08;CUDA 版本:12.8。

① 进入「推理后端」,先为 vLLM 添加一个 vLLM-Omni 版本

关键顺序:必须先在「推理后端」里加好这个镜像版本,部署页面的「后端版本」下拉框才能选到它。

左侧菜单进入 推理后端,找到 vLLM 卡片点「编辑」,在「版本配置」里点「添加版本」。

  • 版本号:填 qwen-image21
  • 镜像名称:填 vllm/vllm-omni:qwen-image21(本文使用的镜像标签)。请确认该镜像是包含 Qwen-Image-2.1 适配代码的构建。截至本文核对时,vLLM 官方配方说明该模型支持尚未进入带版本的发布包,需按配方使用相应分支构建;不能仅凭镜像名称判断它是官方发布标签。
  • 框架:选择 CUDA。
  • 覆盖镜像入口命令(ENTRYPOINT):保持默认的 vllm serve。执行命令需在默认参数模板中加入 --omni,例如:{{model_path}} --omni --host {{worker_ip}} --port {{port}} --served-model-name {{model_name}}。

保存后即可在部署页面选择 qwen-image21 版本。

fig2

⚠️ 关于镜像与启动参数:Qwen-Image-2.1 需要 vLLM-Omni 的扩散推理实现,并通过 vllm serve <模型名> --omni 启动。请确保镜像中包含对应模型代码,并确认 GPUStack 的启动配置实际传入了 --omni;普通 vLLM 镜像或未带此参数的配置无法按本文示例运行。

② 新建部署,选模型与后端

回到 部署 页面,点右上角「部署模型」,按下图填写基本信息:

  • 来源:选择 ModelScope(本文示例使用 ModelScope;也可根据网络环境选择模型来源),仓库 ID 填 Qwen/Qwen-Image-2.1。
  • 后端:选择 vLLM。
  • 后端版本:选择刚才添加的 qwen-image21 版本。

提交后,等待实例进入 Running。如果模型无法加载,先检查镜像版本、--omni 启动参数及模型仓库访问权限。

fig3

二、验证与调用

1. 通过 OpenAI 兼容接口出图

vLLM-Omni 在 --omni 模式下同时注册了两个端点,都兼容 OpenAI 规范:

  • /v1/images/generations:标准的图像生成接口
  • /v1/chat/completions:对话接口,支持多模态输入

/v1/chat/completions 使用多模态消息结构:messages[].content 是数组,文字放在 text 分片中。调用图像生成时还要在请求体中指定 modalities: ["image"]:

curl -s http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API_KEY>" \
  -d '{
    "model": "qwen-image-2.1",
    "messages": [
      {
        "role": "user",
        "content": [
          {"type": "text", "text": "一只在草地上奔跑的金毛犬,逆光,电影感"}
        ]
      }
    ],
    "modalities": ["image"],
    "extra_body": {
      "size": "1024x1024",
      "num_inference_steps": 40,
      "true_cfg_scale": 1.0,
      "seed": 42
    }
  }'

fig4

需要带参考图做图像编辑时,在 content 中追加 image_url 分片,并保留 modalities: ["image"] 与图像生成参数:

    "content": [
      {"type": "text", "text": "把参考图中的主体提取为透明背景图层"},
      {"type": "image_url", "image_url": {"url": "data:image/png;base64,<参考图 base64>"}}
    ]

请求参数说明:

  • model:与部署时填写的模型名保持一致。
  • messages[].content:使用数组结构,text 分片放提示词,image_url 分片放参考图。
  • image_url.url:可使用 data:image/png;base64,<内容> 形式的 data URI。vLLM-Omni 当前配方对 data URI 有 1 MiB 的单部分大小限制;较大的参考图建议使用 /v1/images/edits 文件上传接口。

响应中的图片位于 choices[0].message.content[0].image_url.url。文生图接口 /v1/images/generations 的图片则位于 data[0].b64_json。

而对于 /v1/images/generations,分辨率、步数、引导强度这些生成参数直接放在请求体里传:

curl -s http://localhost:8000/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API_KEY>" \
  -d '{
    "model": "qwen-image-2.1",
    "prompt": "一只戴着毛线帽的柯基,坐在窗边的木桌上,旁边有一杯冒热气的咖啡",
    "size": "2048x2048",
    "num_inference_steps": 40,
    "true_cfg_scale": 1.0,
    "seed": 42
  }'

fig5

需要留意的参数:

  • num_inference_steps:建议显式设置为 40。步数增加通常会延长生成时间,效果也受提示词和采样设置影响。
  • seed:想要可复现的编辑结果时固定它。
  • true_cfg_scale:本文示例设为 1.0。不要与 guidance_scale 混用;若同时传入负向提示词,需留意引导设置对耗时和结果的影响。

2. 图像编辑与多图融合

这是 2.1 相比纯文生图模型的重要能力之一:把参考图一起传入,模型可以在理解既有素材的基础上重新组织画面,并尽量保持人物身份和商品外观。官方展示的典型场景包括:

  • 6 张人像合成合影:单人肖像分别输入,合成到同一张多人合照
  • 5 件单品合成穿搭:模特、服装、鞋子、包、帽子,直接出虚拟试穿效果
  • 10 张家具图排室内布置:一次输入全套家具,重新组合出一个完整空间

参考图数量:以实际推理后端支持为准。模型规格最多支持 10 张,但 vLLM-Omni 当前配方限制为每次最多 4 张。局部编辑的圈选、涂画和独立 mask 等控制方式,也应先确认所用 API 与部署版本是否支持。

下面直接对前面生成的图片做一次编辑:把参考图作为 image_url 分片传进 /v1/chat/completions,让模型在保留原图结构的基础上只改指定内容。

curl -s http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API_KEY>" \
  -d '{
    "model": "qwen-image-2.1",
    "messages": [
      {
        "role": "user",
        "content": [
          {"type": "text", "text": "把参考图桌上那杯咖啡换成一摞书"},
          {"type": "image_url", "image_url": {"url": "data:image/png;base64,<IMG_B64>"}}
        ]
      }
    ],
    "modalities": ["image"],
    "extra_body": {
      "size": "1024x1024",
      "num_inference_steps": 40,
      "true_cfg_scale": 1.0,
      "seed": 42
    }
  }'

返回图片位于 choices[0].message.content[0].image_url.url。如果该字段是 data URI,可提取其中的 Base64 内容并解码为 edited.png。较大的参考图片请使用 /v1/images/edits 文件上传接口,避免 data URI 超过大小限制。

fig6

3. 原生透明图

透明通道是在 latent 空间里直接生成的,不是后期抠图。这意味着输出的 PNG 拿去做信息图、分镜、贴纸、Logo 时,不需要再串一个背景移除 / 分割模型。同一套能力也能反向用:把普通照片里的主体提取成透明图层,或者只改透明图层里的文字而保住背景。

把已有图片作为 image_url 分片传进 /v1/chat/completions,让模型把主体抠成透明图层。请先确认当前服务配置会以 RGBA 格式输出;模型具备透明通道能力,不代表所有服务配置都会默认保留 Alpha 通道。

curl -s http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API_KEY>" \
  -d '{
    "model": "qwen-image-2.1",
    "messages": [
      {
        "role": "user",
        "content": [
          {"type": "text", "text": "把参考图中的主体提取为透明背景图层"},
          {"type": "image_url", "image_url": {"url": "data:image/png;base64,<IMG_B64>"}}
        ]
      }
    ],
    "modalities": ["image"],
    "extra_body": {
      "size": "1024x1024",
      "num_inference_steps": 40,
      "true_cfg_scale": 1.0,
      "seed": 42
    }
  }'

返回图片位于 choices[0].message.content[0].image_url.url。解码后可得到带 Alpha 通道的 PNG;请检查实际输出文件确实保留透明通道。

fig7

三、需要注意的事项

  1. 许可证不是 Apache-2.0。Qwen-Image-2.1 使用 Qwen Research License,授权范围为非商业研究或评估用途。商业用途需先取得单独授权,并应以许可证原文为准。

  2. 榜单分数受评测方法影响。引用 Qwen-Image-Bench 时,建议注明评测版本、数据日期和来源,并说明该榜单由 Qwen 团队发布;不能将其结果等同于第三方独立评测。

  3. 社区体验不等于统一结论。编辑、多图参考合成和透明图是官方重点展示的能力;写实效果、伪影和多人一致性等表现会随提示词、分辨率及推理配置而变化。引用社区反馈时建议补充具体来源和测试条件。

资料来源

总结

Qwen-Image-2.1 做的事情很清晰:把上一代 20.4B 的 DiT 压到 7B,把文生图、图像编辑、透明图三条原本分散的产线合并进一个 checkpoint,再用 Qwen3-VL 统一文本与条件图的编码路径。配合 Block-Causal 注意力带来的 prefix KV 复用,多图编辑场景的推理开销被明显压下来。

借助 GPUStack 可插拔的 vLLM 后端,可以先配置包含 Qwen-Image-2.1 适配代码的 vLLM-Omni 镜像,再选择 ModelScope 仓库 Qwen/Qwen-Image-2.1,并确认启动命令包含 --omni。镜像需与所用 vLLM-Omni 代码版本匹配;图像生成和编辑接口的参数、输入格式及参考图数量也应以该版本的官方配方为准。

实测参考环境:NVIDIA A800-SXM4-80GB | 驱动版本:570.172.08 | CUDA 版本:12.8 | GPUStack v2.2.2