TextGenerate – memory pinned first run, long first-run time (aimdo vizualizations included)

用户在 ComfyUI 中使用 TextGenerate 自定义节点(基于 aimdo visualizations 的调试信息),加载 Qwen 3.5_4B 或 Gemma 3 模型时,首次运行耗时长达 110~219 秒,但第二次及后续运行仅需 8~23 秒。同时 GPU 显存占用和功耗异常—

TextGenerate – memory pinned first run, long first-run time (aimdo vizualizations included)

快速结论:这个报错通常发生在 ComfyUI + TextGenerate 自定义节点的首次模型加载时,表现为首次生成极慢(GPU 显存占用异常低、功耗仅 100W 左右),后续运行时恢复正常。优先排查是否存在显存残留导致的内存碎片或模型重新加载开销。

问题场景

用户在 ComfyUI 中使用 TextGenerate 自定义节点(基于 aimdo visualizations 的调试信息),加载 Qwen 3.5_4B 或 Gemma 3 模型时,首次运行耗时长达 110~219 秒,但第二次及后续运行仅需 8~23 秒。同时 GPU 显存占用和功耗异常——5090 显卡显示 100% 占用但功耗仅约 100W,且显存未完全加载。

报错原文

log, showing a img>text runs then switch of model

> [INFO] Model Qwen35TEModel_ prepared for dynamic VRAM loading. 8657MB Staged. 0 patches attached. Force pre-loaded 203 weights: 535 KB.
> Generating tokens:   6%|█████▍ | 132/2048 [01:46 [INFO] Prompt executed in 110.06 seconds

> [INFO] Model Qwen35TEModel_ prepared for dynamic VRAM loading. 8657MB Staged. 0 patches attached. Force pre-loaded 203 weights: 535 KB.
> Generating tokens:  16%|█████████████▋ | 333/2048 [00:20 [INFO] Prompt executed in 21.00 seconds

> [INFO] Requested to load Gemma3_12BModel_
> [INFO] Model Gemma3_12BModel_ prepared for dynamic VRAM loading. 12579MB Staged. 0 patches attached. Force pre-loaded 400 weights: 1745 KB.
> Generating tokens:   9%|███████▍ | 181/2048 [03:35 [INFO] Prompt executed in 219.17 seconds

> [INFO] Model Gemma3_12BModel_ prepared for dynamic VRAM loading. 12579MB Staged. 0 patches attached. Force pre-loaded 400 weights: 1745 KB.
> Generating tokens:   9%|███████▉ | 194/2048 [00:22 [INFO] Prompt executed in 23.37 seconds

原因分析

可能原因是首次运行时 ComfyUI 的显存分配器(如 aimdo 的 VRAM 管理模块)需要从零分配模型内存,同时 CUDA 内核首次加载、模型权重从磁盘 mmap 进显存等操作叠加,导致生成速度极慢。从 –verbose 日志可以看到:首次加载时 cuda_budget_deficit 显示大量显存被释放(deficit_sync 为 -31128 MB),但第二次运行时显存分配稳定。同时系统监视器显示首次运行前没有大面积显存残留,因此可以排除“清理前一工作流”的影响。

另一个可能原因:TextGenerate 节点内部对模型的量化和预加载策略在首次运行时有额外的编译或缓存步骤,导致 token 生成速度从 ~1.23 it/s 到后续的 ~16 it/s 的巨大差异。

环境排查

  • Python 版本(建议 3.10 以上)
  • CUDA 版本(推荐 12.x)
  • PyTorch 版本(推荐 2.x)
  • 显卡型号:NVIDIA RTX 5090,显存 24GB 以上
  • ComfyUI 版本(最新稳定版)
  • TextGenerate 自定义节点版本
  • aimdo visualization 相关依赖(如 aimdo-allocator)
  • Clip 模型和 LLM 模型文件(Qwen 3.5_4B / Gemma 3 12B)

解决步骤

  1. 确认 ComfyUI 完全重启:在运行 TextGenerate 之前,确保 ComfyUI 是从完全干净的状态启动(无其他工作流残留),并且系统监视器显示显存几乎为空(例如:31454 MB / 32086 MB Free)。
  2. 使用 --verbose 启动 ComfyUI:在命令行以 comfy --verbose 启动,观察首次运行时的 cuda_budget_deficitvbar_allocate 日志。如果日志显示 deficit_sync 值过大(如 -31128 MB),说明显存分配可能存在碎片或 bug。
  3. 禁用其他自定义节点:按照 ComfyUI 官方文档关闭所有非必要的自定义节点,仅保留 TextGenerate,排除其他节点对显存的干扰。
  4. 测试相同模型在第二次运行的表现:如果首次极慢但第二次恢复正常,则问题为首次加载优化;如果每次都很慢,则需要检查模型文件或 GPU 驱动。
  5. 尝试更换模型或量化方式:报告用户仅测试了 Qwen 3.5_4B 和 Gemma 3 12B,可优先尝试同一模型的不同量化版本,或使用更小的模型(如 Qwen 2B)观察首次运行时间是否缩短。
  6. 检查 GPU 功耗与利用率:如果 GPU 利用率 100% 但功耗仅 100W,说明显卡并未满载运行。可能的原因为:CPU 瓶颈、磁盘 I/O 瓶颈、或 PyTorch 未正确利用 Tensor Core。请使用 nvidia-sminvidia-smi dmon 监视实时功耗和内存带宽。

验证方法

使用完全重启后的 ComfyUI,加载 TextGenerate 节点并运行同一提示词,检查首次运行的 Prompt executed in 时间。如果首次运行时长从 110+ 秒降低到 30 秒以内,且 GPU 功耗上升到正常范围(如 5090 满载时 300W+),则问题解决。建议多次重启测试,确认问题不再复现。

参考来源

Comfy-Org/ComfyUI #14378

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 9045

发表回复

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