第一个Kolors文生图工作流:ComfyUI-Kolors-MZ从零到出图,12个节点逐个讲透
【免费下载链接】ComfyUI-Kolors-MZKolors的ComfyUI原生采样器实现(Kolors ComfyUI Native Sampler Implementation)项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Kolors-MZ
这篇文章带你用ComfyUI-Kolors-MZ(Kolors 的 ComfyUI 原生采样器插件)完成第一个Kolors 文生图工作流:从插件安装、模型下载到 12 个节点逐个拆解、KSampler 参数调优,全程无需写代码,跟着做就能在 ComfyUI 里稳定出 Kolors 的图。
🧩 Kolors是什么?ComfyUI-Kolors-MZ解决了什么问题
Kolors 是快手可灵开源的文生图大模型,基于 SDXL 架构,但用ChatGLM3作为中文文本编码器,对中文提示词的理解能力远超原生 SDXL。
问题在于:ComfyUI 原生无法识别 Kolors 的模型结构。ComfyUI-Kolors-MZ 通过钩子机制(hook_comfyui_kolors_v2.py)把 Kolors 的 UNet 配置注入 ComfyUI 的模型检测流程,让 Kolors直接走 ComfyUI 原生采样管线——不需要自定义采样器代码,工作流里用的全是标准节点。
✅ 插件的核心能力一览:
- 原生采样:KSampler 直接可用,不用 wrapper 节点
- 中文编码器:内置 ChatGLM3 加载与编码节点,支持 4bit/8bit 量化
- 生态扩展:配套 ControlNet、局部重绘、IPAdapter/FaceID 全套节点
📥 安装步骤:3分钟装好 ComfyUI-Kolors-MZ 插件
打开终端,进入 ComfyUI 的自定义节点目录执行(仅此处涉及仓库地址):
cd ComfyUI/custom_nodes git clone https://gitcode.com/gh_mirrors/co/ComfyUI-Kolors-MZ python main.py然后重启 ComfyUI。之后在节点搜索栏输入MinusZone,就能看到本插件的全部节点,它们统一归类在MinusZone - Kolors分类下(节点注册见init.py)。
🗂 模型下载:3类Kolors模型该放哪个文件夹
Kolors 文生图需要 3 个文件,存放位置非常关键:
| 模型 | 存放位置 | 作用 |
|---|---|---|
Kolors UNet(diffusion_pytorch_model.fp16.safetensors) | models/unet/ | 文生图主模型 |
ChatGLM3(chatglm3-fp16.safetensors) | models/LLM/ | 中文文本编码器 |
| SDXL VAE | models/vae/ | 潜空间解码成图片 |
💡UNet 放错位置的坑:Kolors 的 UNet 有两种用法——放在
models/unet/就用MZ_KolorsUNETLoaderV2加载;放在models/checkpoints/则用MZ_KolorsCheckpointLoaderSimple加载。不确定就两种都试一下(官方 FAQ 原话)。
🖼 工作流总览:第一个Kolors文生图的12个节点
基础文生图工作流如下图(工作流 JSON 就嵌在 PNG 里,直接把这张图拖进 ComfyUI 画布即可导入整条工作流):
在基础 9 节点之上,加上 3 个可选的进阶开关节点,就是完整的12 节点版Kolors 文生图工作流:
| 阶段 | 节点 | 作用 |
|---|---|---|
| ① 加载模型 | 1-3:UNET加载 / VAE加载 / ChatGLM3加载 | 把3个模型送进内存 |
| ② 文本编码 | 4-6:正向/负向 TextEncodeV2 / Embeds2Conditioning | 中文提示词 → 条件向量 |
| ③ 进阶开关 | 7-8:ApplyCUDAGenerator / ApplySDXLSamplingSettings | 种子复现、调度器微调 |
| ④ 生成出图 | 9-12:空Latent / K采样器 / VAE解码 / 预览图像 | 噪声 → 图片 |
🔌 阶段一:节点1~3,把三类模型加载进来
节点1:MinusZone - KolorsUNETLoaderV2(Kolors主模型加载器)
从models/unet/加载 Kolors 主模型。它和普通 UNET Loader 的区别在于:内部会临时套用 Kolors 专用配置(context_dim: 2048、adm_in_channels: 5632等),并在 UNet 中注入encoder_hid_proj线性层,把 ChatGLM3 的 4096 维编码压缩到 2048 维供注意力层使用,实现逻辑见 mz_kolors_core.py 与 hook_comfyui_kolors_v2.py。
节点2:VAE Loader(ComfyUI标准节点)
选择models/vae/下的SDXL VAE。Kolors 沿用 SDXL 的 VAE,这一步和普通 SDXL 工作流完全一样。
节点3:MinusZone - ChatGLM3Loader(中文文本编码器)
从models/LLM/加载 ChatGLM3 的 safetensors 文件,配置来自 configs/text_encoder_config.json,模型实现内置在 chatglm3/ 目录中。
- 显存紧张?选4bit/8bit 量化版(文件名含
4bit/8bit会自动触发量化加载,4bit 需额外pip install cpm_kernels) - 报
RuntimeError: Only Tensors of floating point dtype...?换 fp16 版本
✍️ 阶段二:节点4~6,把中文提示词变成模型能懂的"条件"
节点4 & 5:MinusZone - ChatGLM3TextEncodeV2(正向 + 负向)
同一节点用两次:一次接正向提示词(比如"画着樱花的女孩,红色外套,城市夜景"),一次接负向提示词(比如"低质量,变形,模糊")。输出标准的 CONDITIONING 条件,直接喂给 KSampler。
V2 相比旧版ChatGLM3TextEncode的改进:不再需要单独拉一根hid_proj线(旧版见 mz_kolors_legacy.py),投影逻辑已并入 UNet,连线更干净。
🎲 小技巧:提示词里写{选项A|选项B}会每次随机二选一,方便批量探索构图(随机逻辑见 mz_kolors_core.py)。
节点6(可选):MinusZone - ChatGLM3Embeds2Conditioning
面向2048 高分辨率场景:一次输出 positive/negative 两路条件,并携带width / height / crop_w / crop_h / target_width / target_height尺寸信息,让模型更准确地理解目标比例。普通 1024 出图可以跳过这个节点。
🎛 阶段三:节点7~8,两个进阶开关(可选但推荐)
节点7:MinusZone - ApplyCUDAGenerator(同种子=同图)
Kolors 官方实现与 ComfyUI 默认的 CPU 噪声生成有细微差异,会导致"同种子不同图"。这个节点把噪声生成切换到 CUDA 生成器,实现跨实现种子级复现(原理见 mz_kolors_core.py)。做对比测试、风格微调时非常有用。
节点8:MinusZone - ApplySDXLSamplingSettings(调度器微调)
把采样调度器参数切回 SDXL 官方设定(linear beta、1000 步标度)。默认 Kolors 参数(1100 步标度)下效果就不错,此节点属于口味级调节,不接也不会出错。
下图是官方同种子对比测试工作流(含 MZ-V2 完整 12 节点布局与 Wrapper 方案对照),可拖入画布直接体验:
🚀 阶段四:节点9~12,一键出图
节点9:Empty Latent(空潜空间)
决定画面尺寸。推荐 1024×1024(方形)或 960×1280(竖版),批次大小 1。注意:这里的分辨率会参与 Kolors 的尺寸条件编码,比例别偏离 1:1 / 3:4 / 4:3 太远。
节点10:KSampler(K采样器)——出图核心
所有条件在此汇合:正向/负向条件 + 模型 + Latent,执行去噪采样。
节点11:VAE Decode(VAE解码)
把去噪后的 Latent 解码成像素图像。
节点12:Preview Image(预览图像)
在画布上实时预览出图结果。
📋 Kolors文生图KSampler参数速查表
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 随机种子 | 固定或随机 | 配合节点7可跨端复现 |
| 步数 | 20~25 | 20 步已足够,25 步细节更稳 |
| CFG | 4~7(5~6 为佳) | 偏低更自然,偏高更"听话"但易过饱和 |
| 采样器 | ddimpp_2m_sde_gpu/ddim_uniform | 官方工作流默认搭配 |
| 调度器 | karras | 与上面采样器搭配 |
| 降噪 | 1.00 | 文生图固定 1.0 |
🛠 常见问题:5个报错及快速修复
| 报错/现象 | 快速修复 |
|---|---|
| 模型加载失败、类型检测不到 | UNet 在unet/目录用 V2 加载器,在checkpoints/用MZ_KolorsCheckpointLoaderSimple |
name 'round_up' is not defined | 执行pip install -U cpm_kernels |
module 'comfy.model_detection' has no attribute... | 把 ComfyUI 本体更新到最新版 |
Only Tensors of floating point dtype... | ChatGLM3 换 fp16 版本 |
'ChatGLMModel' object has no attribute 'transformer' | 检查models/LLM/里模型文件是否下载完整 |
📈 进阶方向:出图之后的三大扩展
跑通基础文生图后,ComfyUI-Kolors-MZ 还为 Kolors 补全了整条创作链路,示例工作流同样内嵌在 PNG 里,拖入画布即可使用:
① ControlNet 结构控制(深度/Canny/姿态):用MZ_KolorsControlNetLoader加载官方 Kolors ControlNet,再接MZ_KolorsControlNetPatch注入 Kolors 专用的编码器投影,即可控制构图和姿势:
② 局部重绘 Inpainting:加载 Kolors-Inpainting 模型到models/unet/,配合 VAE 编码与蒙版即可精准修改局部(如换衣服、换背景),出图时采样器换ddim_uniform效果更好:
③ IPAdapter / FaceID 参考生图:借助 ComfyUI_IPAdapter_plus 的 Kolors 适配节点,实现以图生图、参考构图甚至人脸一致:
🎯 小结
- ComfyUI-Kolors-MZ 让 Kolors 以原生采样方式接入 ComfyUI,12 个节点即可从零出图
- 记住三步:装插件 → 模型放对文件夹(
unet/、LLM/、vae/)→ 拖入工作流图 - KSampler 记住20~25 步 + CFG 5~6 + karras,基本不会翻车
- 出图只是起点:ControlNet、局部重绘、IPAdapter/FaceID 工作流都在 examples/ 目录中,拖图即用
【免费下载链接】ComfyUI-Kolors-MZKolors的ComfyUI原生采样器实现(Kolors ComfyUI Native Sampler Implementation)项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Kolors-MZ
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考