RuntimeError: upsample_nearest_nhwc only supports output tensors with less than INT_MAX elements when decoding latents

这个报错通常发生在 Stable Diffusion 管线中,当 batch size(如 num_images_per_prompt )过大导致 VAE 解码 latent 时输出张量元素数量超过 INT_MAX 上限时触发。优先排查 batch size 是否过大,或尝试升级 xformers。

快速结论:这个报错通常发生在 Stable Diffusion 管线中,当 batch size(如 num_images_per_prompt)过大导致 VAE 解码 latent 时输出张量元素数量超过 INT_MAX 上限时触发。优先排查 batch size 是否过大,或尝试升级 xformers。

适用环境:根据 Issue 确认的环境包括:Diffusers(StableDiffusionPipeline)、PyTorch(Python 3.8)、CUDA、NVIDIA GPU,使用 DreamShaper 模型,并启用了 enable_xformers_memory_efficient_attention()

最快修复方案:暂无确认的一步修复方案,但 Issue 中用户通过“减少 batch size(例如从 8 减小到 2 或 4)”成功解决了问题。

注意事项:升级 xformers(pip install --upgrade xformers)是维护者建议的方向,但 Issue 中未确认该方案对 VAE 解码报错一定有效;升级后若仍触发,需继续降低 batch size。

问题场景

用户使用 StableDiffusionPipelineLykon/DreamShaper 模型加载 Stable Diffusion,通过增加 num_images_per_prompt(如设置为 8)批量生成 1024×1024 图像时,管线在“解码 latents”步骤(decode_latentsvae.decode)崩溃。

报错原文

RuntimeError: upsample_nearest_nhwc only supports output tensors with less than INT_MAX elements when decoding latents

原因分析

可能原因:当 batch size 较大且图像分辨率较高(如 1024×1024)时,VAE 解码器输出的张量元素总数(batch_size × 通道数 × 高度 × 宽度,放大后可能达到 4× 或 8×)超过了 INT_MAX(2,147,483,647),触发 PyTorch 的 upsample_nearest_nhwc 操作的限制。这种限制与硬件显存无关,而是一个软件层面的元素数量上限。

环境排查

  • 确认 Python 版本:Issue 中为 3.8,其他版本可能行为一致但需自行验证。
  • 确认 PyTorch 版本:建议升级到较新版本(Issue 中未明确指定,但维护者提及“next version ends up being pytorch 2.0”)。
  • 确认 Diffusers 版本:确保使用的是最新版本,避免已修复的旧版缺陷。
  • 确认 xformers 版本:如未安装或版本过旧,升级可能缓解问题(pip install --upgrade xformers)。
  • 确认 GPU 型号与显存:虽然此报错与显存无关,但 batch size 过大会造成显存溢出,需一并排查。

解决步骤

  1. 降低 num_images_per_prompt将 batch size 从 8 减小到 4 或 2,直到不再触发报错(Issue 中用户确认此方法有效)。
  2. 尝试升级 xformers:执行 pip install --upgrade xformers,然后重启 Python 内核并重新运行脚本(维护者建议,但未在 Issue 中直接确认解决 VAE 报错)。
  3. 升级依赖:如条件允许,将 PyTorch 和 Diffusers 升级到最新稳定版,然后重新测试。
  4. 分批次生成图像:若业务需要一次性输出多张图,可在 Python 循环中多次调用 pipe()(每次 batch size 较小),最后拼接结果。

验证方法

重新运行之前崩溃的生成代码(保持相同的模型、分辨率和负数提示),观察是否还能稳定输出 batch size 为 8 的图像。若不再抛出 RuntimeError 且图像正常生成,即表示问题已解决或规避。

参考来源

huggingface/diffusers #3643

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 19630

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注