☰
fp16 下 VAE 解码爆 NaN?texture-fix-vae-for-qwen-image-2.1 两步修复方案彻底解决溢出难题
2026/10/22 1:17:50 网站建设 项目流程
  • 人工智能
  • 大模型
  • 计算机视觉
  • 媒体生成
  • 微调

【免费下载链接】texture-fix-vae-for-qwen-image-2.1

项目地址:https://ai.gitcode.com/hf_mirrors/madebyollin/texture-fix-vae-for-qwen-image-2.1
点击查看免费下载

在 fp16 精度下运行 Qwen-Image-2.1 的 VAE 解码器时,输出图片出现大片品红色的 NaN 花屏?texture-fix-vae-for-qwen-image-2.1 是一个针对该问题的微调修复版 VAE:它不仅通过"两步走"方案彻底消除了 fp16 溢出导致的 NaN,还顺带治好了原 VAE 的棋盘格伪影,让纹理细节更干净自然。本文将带你快速理解问题根源、修复原理,以及两步替换的完整上手流程。

为什么 fp16 下会爆 NaN?

先说清楚问题的本质。fp16 的数值上限只有约 65504,一旦中间激活值超过这个范围,就会直接溢出为 inf / NaN,最终污染整张解码图(README 中的演示甚至用 fp16_demo.py 专门把坏像素染成品红色来可视化)。

实测数据显示,原版 Qwen-Image-2.1-VAE 解码器在 fp16 下的最大激活值高达约350 万,远超上限;185 个压力测试输入中甚至有 75 个直接产出 NaN。官方推荐因此只能退回更吃显存的 bf16,而 bf16 在不少消费级显卡上效率不高。

texture-fix-vae 的修复版则把最大激活值压到约 1300,185 个测试输入全部 0 NaN——fp16 下可以安心跑解码了。

两步修复方案:解码器微调 + 权重缩放

步骤做法效果
第 1 步:微调解码器权重参考 SDXL-VAE-FP16-Fix 的思路,微调每层卷积的 scale / bias 和 RMSNorm 增益(约 6.1 万参数),保持输出不变的同时压低激活幅度,并加入大量透明区域训练切片消除 fp16 下的 NaN 溢出
第 2 步:手动缩放权重按精确的 2 的幂次手动缩小特定权重(解码器 ÷512,编码器 ÷8),进一步压缩残差流的数值规模;由于每个残差分支都带 RMSNorm,输出结果不变预留出 fp16 数值头room,彻底杜绝溢出

顺带一提,编码器权重只是按 2 的幂缩放,计算函数与原模型完全一致,可以放心替换。

附带福利:棋盘格伪影也被治好了

除了 NaN 问题,原版 Qwen-Image-2.1-VAE 在高细节照片风格图像上还容易出现棋盘格伪影。这个项目用 TAESD 的对抗式训练配方对最高分辨率的解码块做了微调,rFID 感知质量指标从 3.38 提升到 2.07(fp16 下甚至 2.06),PSNR / LPIPS 仅轻微下降——肉眼观感更干净,是更划算的取舍。

下面是同一 latent 解码出的细节对比:左图为原版 VAE(带轻微棋盘格噪点感),右图为 texture-fix-vae(花丛细节更清晰、噪点更少)。

再看另一处岩石与花草的局部对比,右侧修复版的块状伪影明显减少:

快速上手:两步替换 VAE

方式一:ComfyUI 一键替换

  1. 将权重文件 texture_fix_vae_for_qwen_image_2.1_bf16.safetensors 下载后放入ComfyUI/models/vae/目录;
  2. 在Load VAE节点中选择该文件,替换原来的qwen_image_2.1_vae_bf16.safetensors;
  3. 完成。开启--fp16-vae参数时同样可以正常工作,这正是本修复版的核心卖点。

方式二:Diffusers 代码加载

如果你使用 🧨 Diffusers 框架,只需两行代码即可换入修复版 VAE:

vae = AutoencoderKLQwenImage21.from_pretrained("madebyollin/texture-fix-vae-for-qwen-image-2.1", torch_dtype=torch.bfloat16) pipe = QwenImage21Pipeline.from_pretrained("Qwen/Qwen-Image-2.1", vae=vae, torch_dtype=torch.bfloat16).to("cuda")

如需离线使用,也可以先 clone 仓库再本地加载:

git clone https://gitcode.com/hf_mirrors/madebyollin/texture-fix-vae-for-qwen-image-2.1

文件速查与许可说明

文件说明
texture_fix_vae_for_qwen_image_2.1_bf16.safetensorsComfyUI 用 bf16 权重,放入models/vae/即可
diffusion_pytorch_model.safetensorsDiffusers 默认加载路径的权重文件
config.jsonVAE 配置,包含 64 通道 latent 的均值与标准差(latents_mean / latents_std)
fp16_demo.py复现 fp16 NaN 对比演示脚本,可直观看到品红色坏像素区域
NOTICE归属说明:基于 Qwen-Image-2.1 修改,仅限非商业 / 研究用途

⚠️注意:本项目基于 Qwen 研究许可(详见 LICENSE),仅允许非商业和研究用途,商用前请务必确认许可条款。

常见问题

Q:替换后生成结果会变吗?bf16 下纹理会略微更干净(rFID 更好),像素级精度(PSNR)略有下降;编码器功能与原模型完全一致,不影响已有 latent 的复用。

Q:为什么 fp16 下原版 VAE 的 NaN 常出现在透明区域?原版解码器在处理全透明区域时激活幅度最大,NaN 从透明区域产生后还会"渗"进周围正常内容,所以整张图都会受影响。修复版通过压低激活幅度根治了这一问题。

Q:显存不够时优先用哪种精度?消费级显卡优先选 fp16 跑修复版 VAE——既省显存又无 NaN;支持 bf16 的专业卡两种都可以,推荐直接上 bf16 权重。

  • 人工智能
  • 大模型
  • 计算机视觉
  • 媒体生成
  • 微调

【免费下载链接】texture-fix-vae-for-qwen-image-2.1

项目地址:https://ai.gitcode.com/hf_mirrors/madebyollin/texture-fix-vae-for-qwen-image-2.1
点击查看免费下载

相关推荐

上一篇:VUDA 项目使用教程
下一篇:从R1到R2:Granite-Embedding-97M-Multilingual-R2的14.5分性能提升背后的技术秘密

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询