zcf0508/qwen-image-2.1-hqv3-sdcpp-fixed
Qwen-Image-2.1 HQv3 GGUF,修正 sd.cpp 兼容性
本仓库是 realrebelai/Qwen-Image-2.1_GGUFs 的量化文件的元数据修正版,使其能被 stable-diffusion.cpp 加载。量化本身由 realrebelai 完成, 本仓库未改动任何量化参数。
改了什么
仅改动每个文件中 img_in.weight 这一个张量的形状声明,由 [256, 1024] 改回 [64, 4096]。
原因:该文件由 ComfyUI-GGUF 转换器导出,转换器把 img_in.weight 从 [64, 4096] 重排为 [256, 1024],并把原始形状记在元数据 comfy.gguf.orig_shape.img_in.weight 里。ComfyUI 会读取该记录 自行还原,所以没有影响;但 stable-diffusion.cpp 恰好用这个张量的形状推断整个网络的规模:
if (auto w = find("img_in.weight")) {
config.in_channels = w->ne[0];
config.hidden_size = w->ne[1];
}于是它把 7B 网络按 hidden_size = 1024 建立,与文件中 4096 维的张量全部不符,加载时报 model metadata validation failed 并拒绝继续。
两个形状的元素总数相同(64 × 4096 = 256 × 1024 = 262144),因此这只是标签改写: 实测每个文件只有 3 个字节发生变化,张量数据一格未移动,文件大小与张量表自洽性均不变。
文件
Qwen-Image-2.1-Q4-sd.cpp.gguf
命名规则:原文件名 + -sd.cpp。例如 Qwen-Image-2.1-Q4-sd.cpp.gguf 对应作者仓库的 Qwen-Image-2.1-Q4.gguf。
验证范围
Qwen-Image-2.1-Q4-sd.cpp.gguf:已在 stable-diffusion.cpp master-889(commit c678dfe)、 RTX 4070 12GB 上端到端跑通,1024×1024 / 40 步 / cfg 1.0 正常出图,画质与未重排的普通 Q4KM 一致。- 其余量化档:仅做结构性校验(元素总数不变、张量表自洽、形状回读正确),未逐档实测出图。
自行施加修正
如果你已经下载了作者仓库的原文件,也可以不改用本仓库,直接对本地文件打补丁:
uv run --no-project patchggufimg_in.py <模型路径>
脚本在本仓库根目录,纯标准库,无第三方依赖,可重复执行。
许可与致谢
- 基座模型:Qwen/Qwen-Image-2.1, 适用 Qwen Research License,本仓库沿用同一许可,见 LICENSE 链接。
- 量化:realrebelai,见其原始仓库。
- 问题定位、修正与测试:由本仓库维护者完成,详细诊断过程见作者仓库的 Discussion。
