两张 2017 年的显卡,一个约 7 GB 的镜像,一分钱硬件预算没花。就这样,Qwen-Image-2.1 跑起来了——文生图、改图、透明底、LoRA,全都能用。
这篇不讲复杂命令,只讲方案怎么想、路怎么走、坑在哪里。
目录
- 先算笔账:老卡还能不能打
- 一个入口,两张卡:双卡分段与三段式接入
- 从“0”到上线:经历 5 大阶段
- 一句话出图:定制 Skills 技能
- 最后说点实话
1. 先算笔账:这两张卡还能不能打
手上是两张 Tesla V100,单卡 32 GB 显存,2017 年的 Volta 架构。按现在的标准,这属于“电子古董”。此前这两张 V100 已经本地部署过 Qwen3.8-27B-FP8,还集成了 DFlash2,用来进一步压榨 Token 性能。
这次想继续挖掘两张老卡的潜力,目标是 Qwen-Image-2.1:一个 7B 级图像生成模型。官方介绍如下:
千问图像系列当前兼顾生成效果、推理效率与使用成本。Qwen-Image-2.1 将文生图与图像编辑整合在同一模型中,视觉生成部分仅有 7B 参数,并原生支持透明图像的生成与编辑。

本次更新的主要特色包括四个方面:
- 轻量结构,在生成质量与计算成本间取得平衡;
- 原生支持普通图像与透明图像的生成、编辑;
- 支持最多 10 张参考图的多图保全编辑;
- 提升文字排版与人物质感。
目标也很明确:文生图、图生图、RGBA 透明通道、OpenAI 兼容接口、LoRA 加载,一个都不能少。
第一反应当然是“这卡得换”。但看过 GPU 报价以后,问题变成了:这两张老卡还能不能榨出剩余价值?
答案是能。最终算下来,成本几乎全花在工程上,硬件一分没动。
2. 先看结果:一个入口,两张卡
在 WorkBuddy 上按 API 接口开发了一个 Skills 技能,文生图、改图等指令由技能直接下发给 Qwen-Image-2.1。测试覆盖了以下能力:
- 文生图:1472 × 832,40 步,CFG 2.6;
- RGBA:透明像素约 58.5%,Alpha 校验通过;
- 图改图:保留构图与标题文字;
- LoRA:8 步出图即可用;
- 对照组:无 LoRA,40 步,光效更饱满、面部更精致。

调用方拿一把 API Key 打到网关,网关按路由转给自定义后端,后端按镜像拉起容器。容器里是自研服务:对外提供 OpenAI 兼容接口,对内自行管理 LoRA。
两张卡的分工如下:
- 卡 0:常驻去噪主干和 VAE;
- 卡 1:常驻文本编码器。

整套方案有三个贯穿始终的取舍:GPUStack 当底座、两张卡分工、平台只当门卫。
3. 从“0”到上线:经历 5 大阶段
上线过程可以拆成五个阶段:环境检查、构建镜像、平台接入、实例上线、就绪验证。

如果不想手动配置所有内容,可以先给自动化助手一条完整提示词:
我要在 192.168.xxx 上把 Qwen-Image-2.1 装到这台 V100 服务器。
请使用公用 Base 镜像构建 Qwen-Image-2.1 的 Docker 镜像,镜像需要通过
GPUStack 平台提供 OpenAI API 兼容接口,并支持文生图、改图、生成 RGBA
以及 LoRA 模型加载。构建镜像期间不得停止当前环境中的 vLLM,也不能影响
现有系统稳定性。
3.1 动手前:三件事必须确认
第一件,也是唯一不能谈判的一件:V100 不支持 bfloat16。 这是 Volta 架构的硬伤。精度选错后,权重可能直接加载失败,或者生成大量 NaN 图。全链路必须使用 fp16;这不是调优项,而是动手前就要定死的基础条件。
第二件,确认三项环境条件:
- 容器内 GPU 直通;
- 平台镜像缓存目录;
- 网关密钥。
它们决定后续路径怎么填,任何一项发现得太晚,都可能导致返工。
第三件,准备国内软件源。不配置时,下载速度可能只有零点几 MB/s;合适的源可以达到约 37 MB/s,Docker Hub 的大层也不容易卡死。应提前规划“用哪个源拉什么”:慢源只留给绕不开的包,其余尽量走国内源。
3.2 从源码构建 Diffusers
Qwen-Image-2.1 所需的 QwenImage21Pipeline 只存在于 Diffusers 的开发版本(0.41.0.dev0),PyPI 正式版中没有。可以把开发版导出成目录,随构建上下文一起复制进镜像,使构建过程不依赖外网 GitHub。
git clone https://github.com/huggingface/diffusers.git
cd diffusers
git checkout v0.41.0.dev0 # 或包含 QwenImage21Pipeline 的对应提交
git archive --format=tar --output=.diffusers-src.tar HEAD
mkdir diffusers-src && tar -xf .diffusers-src.tar -C diffusers-src
不必把整个仓库照搬进镜像。使用 git archive 导出以后,可以删除 docs/、examples/、tests/ 等无关目录,只保留 src/diffusers 和打包元数据,例如 pyproject.toml、setup.py、LICENSE、MANIFEST.in 等。
3.3 不提前内置 CUDA,构建容器镜像
基础镜像选择朴素的 python:3.12-slim,CUDA 运行时交给 pip 依赖自带。现在的 PyTorch 会把 cuDNN、cuBLAS 等组件一并安装,容器镜像本身不必提前内置 CUDA。
图像生成对组件版本极其敏感,所有依赖都应来自已经实测跑通的组合。裸装非常容易翻车,最典型的情况是图像处理依赖把 PyTorch 连带升级到要求更新 CUDA 的版本。
LoRA 加载还需要一个额外的适配器库。缺少它时,加载过程会直接报告后端缺失。最终目标是得到一个只需构建一次、后续可以重复使用的 Docker 镜像。
3.4 选择平台,把模型跑起来
镜像构建完成后,用 GPUStack 管理网关、模型路由和生命周期,对外只暴露一个入口。接入严格分为三段,顺序不能颠倒。
① 推理后端:定义“使用什么镜像、如何启动”
选择 GPUStack 的关键原因是支持自定义后端。需要在推理后端中设置健康检查路径、默认启动命令、镜像、版本以及环境变量等信息。
双卡分段模式设置:
QWEN_IMAGE_MODE=split

② 模型:定义“权重在哪里、使用几张卡、部署几个副本”
权重使用平台的固定缓存路径,不必自行维护副本。两张 V100 全部选中,副本数设置为 1。
单张 32 GB V100 也能运行,但需要把权重放到 CPU 内存,使用卸载模式:
QWEN_IMAGE_MODE=offload

③ 模型路由:把模型挂到网关路径上
自定义后端必须手动建立路由,否则访问网关时会得到 404。

为什么需要自定义后端?因为 GPUStack 的部分能力只对特定推理引擎生效。例如 LoRA 挂载目前仅支持 vLLM、SGLang、Ascend MindIE;配置其他后端时,这项设置可能被忽略。因此,这里的自定义服务需要自行管理 LoRA,同时通过模型路由暴露统一的网关入口。
3.5 上线与就绪验证
副本数设为 1 后启动实例。实例需要完成模型重建、权重加载和双卡分段,再进行就绪判定与冒烟测试。
建议至少验证以下项目:
- 文生图;
- 图像编辑;
- RGBA 透明图;
- LoRA 加载和生成;
- OpenAI 兼容接口;
- 网关路由和鉴权。
4. 一句话出图:定制 Skills 技能
要实现“一句话出图”,还需要由前端应用下达指令。技能开发提示词可以写成:
基于 OpenAI API 接口开发 Skills 技能。技能应在 GPUStack 地址变更时提示
用户输入新的 API 地址,并在首次获取后更新到技能记忆。技能需要支持文生图、
改图、生成 RGBA 图像,并支持通过提示自动导入、安装 LoRA;文生图过程中应
询问用户是否选择 LoRA,并列出当前已有的 LoRA。
为保障安全,禁止使用 SSH,不得存储任何账号密码或 API Key。
技能打包后的标准结构如下:
qwen-image-21-api/
├── SKILL.md
└── scripts/
├── qwen21.py # 主客户端,包含 lora-install 等能力
└── qwen21_openai.py # OpenAI 兼容端点
随后只需一句话下发创作指令,即可一次测试文生图、图改图、RGBA 和 LoRA,并把输出自动排成一张海报。

5. 最后说点实话
老卡能不能用,从来不只看卡的年龄,更看软件栈愿不愿意为它低头:基座能不能换、运行时能不能外挂、显存能不能分段、平台能不能灵活配置。每让一步,同一对卡能承担的事情就多一件。
但边界也必须说清楚:这套方案不优雅、不官方,而且依赖自行维护。它适合内部试点、预算紧张并且愿意折腾的团队;如果要求低延迟、高并发和长期免维护,新卡仍然更稳,不要被“省钱”带偏。
它不完美,但能算账;它虽然不快,但是能用。
许可证提醒: 当前 Qwen-Image-2.1 的授权不是 Apache 2.0。截图所述版本于 2026-09-20 发布,许可证为 Qwen Research License Agreement,发布方为 Hangzhou Tongyi Laboratory Technology Co., Ltd. 如需商用,请通过官方途径确认并取得相应授权。
你手里有吃灰的老卡吗?你愿意花一个周末把它们拉回牌桌,还是直接租云?
本文详细阐述如何利用两张2017年的Tesla V100 GPU(Volta架构,不支持bfloat16),通过GPUStack平台完成Qwen-Image-2.1模型的端到端部署。方案涵盖Diffusers源码构建、CUDA轻量容器镜像制作、双卡分段(文本编码器与去噪主干/VAE分离)、LoRA动态加载、RGBA透明图生成及OpenAI兼容API封装。全程零硬件新增投入,强调工程适配而非硬件升级。
395

被折叠的 条评论
为什么被折叠?



