5060 8GB laptop跑 Qwen-Image 2.1:权重放内存、按块搬进显存。1K 方图 172.6 秒,竖版海报 151.4 秒。采样本身只要几秒,时间几乎都花在搬运权重上。
为什么不是常驻显存
Qwen-Image 2.1 的视觉部分是 7B 单流 DiT,文本编码器是 Qwen3-VL 8B。官方给 ComfyUI 的 INT8 主模型大约 7.3GB,再加一个完整精度或 INT8 的 8B 编码器,8GB 显存装不下常驻权重。
改成 stable-diffusion.cpp:三个文件都留在内存里,计算到哪一块再搬进显存,用完释放。
实际用的权重
NVFP4 是 Blackwell 的原生 4-bit 格式,但这套推理程序吃的是 GGUF,没有对应的 NVFP4 文本编码器可用。文本编码器改成同规格的 Q4_K_M,并且用了社区的 Heretic 消融版:它改的是拒绝方向,不是再压一次精度。原作者在有害问题集上测到 5/100 拒绝,相对原版的 KL 散度是 0.022。
组件 | 规格 | 磁盘 | 加载后 |
DiT | Q4_K_M GGUF | 4.0 GB | 4005 MB |
文本编码器 | Heretic Q4_K_M GGUF | 4.7 GB | 4302 MB |
VAE | BF16 safetensors | 645 MB | 644 MB |
合计 | 约 9.3 GB | 8952 MB,全部在内存 |
程序报的显存占用是 0。权重在 CUDA host 上,峰值大约 8.8GB,分成 72 块按需送进 GPU。
环境
- GPU:RTX 5060 Laptop,驱动报告可用显存 7774 MiB,计算能力 12.0
- 内存:32GB,跑的时候空闲大约 15GB
- 推理:stable-diffusion.cpp,当时 master 的
42ab1c1,本机 CUDA 13.4 编,架构120a
- 发行版没有 Linux CUDA 包,只有 Windows CUDA 12 包,所以是源码编译
- Web UI 子模块没拉全,前端目标关掉,只编了命令行
编译时宿主编译器用 GCC 15。NCCL 没装,单卡不影响。
参数
两张图用同一组参数,只改了分辨率和提示词:
- Euler,CFG 6.0,扩散侧 Flash Attention 打开
--offload-to-cpu,VAE tiling 打开
qwen_image_2_1_prefix_cache=false。8GB 上前缀 KV 缓存不划算,FP16 前缀就要大约 2GB
- 种子都是默认的 42,没有开 EasyCache,也没有加速 LoRA
两次出图
1024×1024 | 768×1280 | |
总耗时 | 172.6 秒 | 151.4 秒 |
文本编码 | 3.6 秒 | 3.0 秒 |
去噪步数 | 请求 25,实际跑了 49 步 | 请求 25,实际跑了 45 步 |
去噪速度 | 第一步 13.0 秒,之后约 6.2 秒/步 | 第一步 9.9 秒,之后约 5.3 秒/步 |
VAE 解码 | 7.9 秒 | 7.1 秒 |
请求的是 25 步,进度条却走到 49 和 45。日志里正负两条条件分开走,CFG 6 不是 1,所以步数大约翻倍。竖图的 token 更少(潜空间边长按 16 压缩,768×1280 比 1024×1024 少),所以单步更快,总时间也更短。
172 秒里,文本编码加解码大约 11 秒。剩下的 160 秒里,真正的矩阵计算只占一部分,另一部分是每步把 100MB 左右的权重块从内存搬进显存。这和那篇记录里“耗时大头在搬运权重”一致。他们开了 EasyCache 之后 1K 大约 70 秒;这次没开,25 步的方图是 173 秒。
最后一次出的图,768×1280,151.4 秒。提示词里的标题没有写出来。

竖图那次的占用
采样从进入去噪后开始,每 5 秒一次,26 个点,覆盖最后 134 秒。开头大约 17 秒没采到。
平均 | 峰值 | |
进程内存 | 5.4 GB | 9.2 GB |
显存 | 6912 MiB | 7178 / 7774 MiB |
GPU 占用 | 94% | 100% |
功耗 | 109 W | 116 W |
竖图去噪中途的整机监控。用户名和内网地址已抹掉,功耗和显存数字留着。这一帧是 114W、显存 7.3/8.0GB,和表里的峰值同一段。

显存在去噪阶段一直贴着 7.1GB,GPU 接近满载。进程内存从 9.2GB 掉到 1GB 以下,是用完的权重组被释放。功耗计时冲过了这张卡标称的 100W 上限,平均仍在 109W。进程退出后,显存回到桌面自己的 3GB 出头。
踩到的坑
- Hugging Face 的 Xet 下载开了几十条连接,带宽占用很高,但目标文件几分钟停在 0 字节,内存却涨到 700MB。环境变量压不住并发。改成单连接 curl 之后稳定在 3.2MB/s,4.7GB 下了 25 分钟,中途没有断。
- 下载客户端留下的锁文件会挡住下一次启动。旧进程还活着时不要再开一个,两个会抢同一把锁。
- 前端子模块是空目录时,整次编译会在装前端依赖那一步失败。只要命令行的话,把前端目标关掉即可。
- 文本编码器的 GGUF 没有带视觉塔,日志会写
vision disabled。文生图不影响。要做参考图编辑,还得另下 mmproj,用单独的参数传进去。
结论
8GB 显存能跑 Qwen-Image 2.1,代价是 1K 图大约 3 分钟,而且显存在去噪时基本占满。加速应该先减搬运:EasyCache,或者步数更少的加速 LoRA。加显存解决的是另一件事,这次的墙主要不在算力。

![[2026.9.27] 8GB 显存跑 Qwen-Image 2.1:部署复盘与占用](https://www.notion.so/image/attachment%3A699d77eb-8e2e-4ff2-9423-1f4702a6ec77%3A%E5%9B%BE%E7%89%87.png?table=block&id=3e8ca147-5df8-81f0-b7d1-e167591b8d7a&t=3e8ca147-5df8-81f0-b7d1-e167591b8d7a)