ComfyUI-KJNodes:让 ComfyUI 更快更省心的完整教程
ComfyUI-KJNodes:让 ComfyUI 更快更省心的完整教程
【免费下载链接】ComfyUI-KJNodesVarious custom nodes for ComfyUI项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes
如果你用 ComfyUI 有一段时间,多半遇到过这些糟心事:批量处理上百张图很慢、显存(VRAM,即显卡显存)占用摸不着头脑、工作流越长线越乱、模型加载的参数散得找不着。ComfyUI-KJNodes 是 ComfyUI 的一个自定义节点包,把这些常见痛点做成了一个系列现成节点:批量图像处理、模型编译加速、注意力优化、显存监控、子图数据传递(Set/Get 节点)。装好之后直接在界面里拖出来就能用。这篇文章带你走一遍:装好它 → 跑通第一个小例子 → 调性能 → 避坑。
它到底能干什么:核心功能先扫一眼
装之前先看看"工具箱"里有什么:
- 批量图像处理:
ImageBatchMulti、ImageConcatFromBatch这类节点会把大批次图片自动拆开分批处理,适合数据集预处理和批量出图 - 模型加载与组件分离:
CheckpointLoaderKJ、DiffusionModelLoaderKJ支持 SDXL 多组件分离加载,有限显存下也能跑 - 模型编译加速:
TorchCompileModelFluxAdvancedV2、TorchCompileVAE、TorchCompileControlNet把模型的不同部分分别编译,支持多种编译后端 - 显存监控:
StartRecordCUDAMemoryHistory/EndRecordCUDAMemoryHistory/VisualizeCUDAMemoryHistory三件套可以录制并回放显存使用曲线;ModelMemoryUseReportPatch给你实时报告 - 注意力优化:SAGE 注意力(
PathchSageAttentionKJ)、NABLA 稀疏注意力(NABLA_AttentionKJ),主要面向长序列视频生成 - 工作流整理:2026 年 3 月重写的 Set/Get 节点系统支持跨子图边界取数,还带一批快捷键;
WidgetToString能把任意节点的参数值读成字符串,方便显示和传递
更完整的更新记录可以看项目根目录的 README.md,里面也有官方安装说明。
KJNodes 安装教程:3 步装完
安装过程本身很简单,三步:
- 把仓库克隆到 ComfyUI 的
custom_nodes目录 - 安装依赖
- 重启 ComfyUI,在节点菜单里搜 KJNodes 相关节点
命令行版:
git clone https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes ComfyUI/custom_nodes/ComfyUI-KJNodes pip install -r ComfyUI/custom_nodes/ComfyUI-KJNodes/requirements.txt如果你用的是 Windows 便携版,要改用自带 Python 装依赖:在 portable 目录里执行
python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI-KJNodes\requirements.txt。
3 分钟跑通第一个工作流
装完之后,先跑个最小例子确认环境没问题。
用 Get Model Name 读出模型信息
以加载 SDXL 模型为例。把加载节点的输出接到Get Model Name节点,就能拿到工作流里任意节点的 ID 和参数名(比如base_ckpt_name),再喂给 Show Text 显示出来。调试的时候特别好用:一眼看出当前实际生效的是哪个 checkpoint。
上图是 Eff. Loader SDXL 节点(左侧来自另一个插件)加载 SDXL 模型,基础模型、refiner、VAE 等参数一目了然;右侧Get Model Name按 ID(193)读出了 #193 节点的base_ckpt_name取值,Show Text 把结果直接打在画布上。
WidgetToString:把参数值变成字符串
WidgetToString解决更麻烦的场景:你想读的不是节点 ID,而是某个非字符串参数(比如下拉框选项)。填上目标节点的 id 和参数名(widget_name),输出就是一个 STRING,可以接到任意显示节点。
图中WidgetToString(id=2)读出 Load Checkpoint 节点的ckpt_name参数,Show Text 里直接显示 "1_5\photon_v1.safetensors"——核对加载的文件对不对,比反复点开参数框快得多。
Set/Get:长工作流的生命线
工作流一旦超过几十个节点,"线多到打架"就难免。KJNodes 的 Set/Get 系统就是干这个的:数据放进 Set 节点,从 Get 节点取出来,物理连线不用横穿全屏。2026 年 3 月的更新还支持跨子图边界——父图里 Set,子图里 Get。常用快捷键:
Ctrl+Shift+S:给选中节点添加 SetCtrl+Shift+G:在光标处添加 GetCtrl+Shift+L:临时显示全部虚拟连线- 双击 Get 节点:直接跳到对应的 Set 节点
显存不够时这样配:性能调优实战
这是 KJNodes 最能体现价值的部分。参考文章给出的测试环境是 RTX 4090、24GB 显存,几个有出处的数字:
- 图像批处理:处理 100 张 512×512 图片,速度快 42%,显存占用降 28%
- 视频生成:生成 30 秒 1080p 视频,推理时间少 35%,显存峰值低 31%
- 模型编译:首次编译比平时慢 15% 左右,之后的推理速度快 48%
三类优化的大致收益对比:
| 优化策略 | 显存降低 | 速度提升 | 最适合 |
|---|---|---|---|
| 模型编译 | 15–25% | 30–50% | 大规模批处理 |
| 注意力算法 | 20–35% | 25–40% | 长序列视频生成 |
| 内存管理 | 30–45% | 10–20% | 显存有限的环境 |
| 批量处理 | 25–40% | 40–60% | 数据集预处理 |
编译:后端选对才算数
TorchCompileModelFluxAdvancedV2支持多种编译后端,选择逻辑很简单:
- Inductor:NVIDIA RTX 系列用,性能最好
- NNC:AMD 和 Intel 显卡用,跨平台兼容性好
- AOT-Eager:调试和开发环境用
注意力算法:按任务挑
- SAGE 注意力:追求出图质量时用
- NABLA 稀疏注意力:长序列视频,显存占用明显更低
- Flash 注意力:实时场景,推理速度最快
先监控,再动手调
不确定显存在哪被吃掉时,先在待测段落前后各放一个StartRecordCUDAMemoryHistory和EndRecordCUDAMemoryHistory,再用VisualizeCUDAMemoryHistory回放曲线。视频类工作流还可以试试WanVideoTeaCacheKJ,它做时间缓存,跳过重复计算。
KJNodes 和原生节点的区别 + 常见坑
一句话总结区别:原生节点是"功能积木",KJNodes 是积木之上的"工程工具"——批量、编译、监控、工作流组织,这些在原生 ComfyUI 里点不出来。
容易踩的坑,提前说:
- 别把编译当瞬时的:第一次运行要做完整编译,比不编译还慢,后面的运行才快。别拿一次性测试下结论。
- 编译后端别选错:生产环境用 AOT-Eager、NVIDIA 卡上选 NNC,都是白亏性能。
- 批量节点不是万能加速:
ImageBatchMulti是分块处理的,批次越大收益越明显;只处理两张图,原生节点照样快。 - Set/Get 复制粘贴后注意命名:粘贴 Set+Get 对时 Get 节点会跟着 Set 的改名走(比如
MODEL变MODEL_0),避免重名冲突;想转回普通连线,右键 Set/Get 节点即可。 - 显存监控节点有开销:录制回放本身占一点资源,测完记得摘掉。
收尾:把要点带走
ComfyUI-KJNodes 解决三类事:大批量图跑得快、推理提速、长工作流可读。建议路径是:先装好,跑通一次模型信息读取的例子,再按你的硬件挑编译或监控节点。等工作流越长,Set/Get 和子图支持会成为你最高频的功能——这也是 KJNodes 和原生节点最大的差异所在。
【免费下载链接】ComfyUI-KJNodesVarious custom nodes for ComfyUI项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
