Krea2: text sequence is not truncated/padded to the reference 512-token layout — long prompts correlate with probabilistic NaN latents

用户在 ComfyUI 中使用 Krea2 模型进行批量推理,特别是使用 RTX 4090 (sm89)、torch 2.6.0+cu124、xformers 0.0.29.post3 栈时。当输入提示词超过一定长度(例如超过 5000 字符,对应约 1100+ tokens),生成结果概率性地出现

Krea2: text sequence is not truncated/padded to the reference 512-token layout — long prompts correlate with probabilistic NaN latents

Krea2: text sequence is not truncated/padded to the reference 512-token layout — long prompts correlate with probabilistic NaN latents

快速结论:该报错通常出现在使用 ComfyUI 运行 Krea2 模型进行文本到图像生成时,使用了超长提示词(导致 token 数超过 512)。优先排查 ComfyUI 中 Krea2 的文本编码器是否对提示词进行了正确的截断或填充至固定 512 token 长度。

问题场景

用户在 ComfyUI 中使用 Krea2 模型进行批量推理,特别是使用 RTX 4090 (sm89)、torch 2.6.0+cu124、xformers 0.0.29.post3 栈时。当输入提示词超过一定长度(例如超过 5000 字符,对应约 1100+ tokens),生成结果概率性地出现全 NaN 潜变量,导致输出黑图或损坏图像。

报错原文

text sequence is not truncated/padded to the reference 512-token layout — long prompts correlate with probabilistic NaN latents

此报错为用户根据观测现象总结的描述性报错。在 ComfyUI 日志中,具体现象为采样器输出全为非有限浮点数(NaN),在无内部 NaN 检测的默认情况下,最终输出为黑图或损坏图像。

原因分析

可能原因:官方 Krea2 实现(krea-ai/krea-2 及 Diffusers Pipeline)在编码文本时,明确使用 truncation=True, padding='max_length',将文本序列固定为 512 tokens。ComfyUI 的 Krea2Tokenizer 继承了 Qwen3-VL 的分词器设置,其中 max_length=99999999pad_to_max_length=False,导致模型接收到的文本序列长度可变(实测可达 1096 tokens)。Krea2 的 txtfusion/attention 模块可能从未在训练时见过超过 512 token 的序列长度,因此超长序列处于分布外(out-of-distribution),可能在某些条件下导致数值不稳定,产生 NaN。

此外,该问题的出现是概率性的,与算力后端的架构相关:RTX 5090 (sm120) + SDPA 路径未见此问题。

环境排查

  • 确认 ComfyUI 版本及加载的 Krea2 节点(Issue 基于 #14589 后的版本)
  • 确认 Python 版本
  • 确认 PyTorch 版本(问题环境为 torch 2.6.0+cu124)
  • 确认 CUDA 版本
  • 确认显卡架构(如 sm89 vs sm120)
  • 确认注意力后端:xformers 0.0.29.post3 vs SDPA
  • 检查 Krea2 使用的文本编码器:是否使用了 qwen3vl_4b_fp8_scaled 且计算精度为 bf16
  • 确认输入提示词长度(字符数),特别是是否显著长于约 4000-5000 字符

解决步骤

  1. 文本编码器对齐官方实现(根据 Issue 分析,可优先尝试):修改 ComfyUI 中 comfy/text_encoders/krea2.pyKrea2Tokenizer,在 tokenize 时固定序列长度为 512,并对超长序列进行截断,对短序列进行填充。
  2. 排查注意力后端:如第一步无法解决,可尝试切换到 SDPA 后端(不使用 xformers),因为 Issue 报告 RTX 5090 + SDPA 路径未复现此问题。
  3. 排除因自定义 embedding 导致的分词器崩溃:参考相关 PR #14713,确认环境中是否存在自定义 embedding 导致的分词器异常。
  4. 检查是否存在重复 Issue:Issue 评论中标记了 #14782 为可能重复的 Issue,可以进行交叉参考。

验证方法

使用原本触发 NaN 的超长提示词(建议 4000-5000 字符以上),在修改文本编码器后,多次重复运行(10 次以上),确认不再出现全 NaN 潜变量或黑图输出。同时可对比修改前后文本编码器实际传给模型的 token 数量,确认每次都为固定的 512 tokens。

参考来源

Comfy-Org/ComfyUI #14849

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 13139

发表回复

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