Klein 9B 的四个参数坑和 denoise=0.85 红线

针对从 SDXL 迁移到 FLUX.2 Klein 9B 的用户,拆解四个最常见参数翻车点,并专门解释 denoise=0.85 硬红线背后的蒸馏模型机制,所有参数基于 122 节点 All-in-One 工作流可直接复用。

从 SDXL 或经典 SD 迁移过来的用户,有很大概率在第一次跑 Klein 9B 时翻车——不是显存不够,是把 SD 那套肌肉记忆照搬了过来。CFG 设 7、Steps 设 20、denoise 随手填个 0.5,结果出来的图要么糊成一团,要么满屏伪影。
Klein 9B 是 4 步蒸馏模型(distilled)——训练时已经把引导信息内化,采样路径被大幅压缩,只需 4 步就完成传统模型二三十步的过程。底层假设和 SDXL 截然不同,用旧参数跑它就像拿汽车油门控制电动车——物理上能踩,但逻辑完全错了。
这篇文章以 Reddit 用户 u/official_geoahmed 发布的 FLUX.2 Klein 9B All-in-One 工作流 v2.1(122 节点 / 19 分组 / 5 条管线)为基础,把最容易踩的四个坑说清楚。1

先看这个工作流有什么

五条管线,按用途分:
  • F1:文生图(Text-to-Image)——最基础,调参实验从这里开始
  • F2:KV 编辑(Key-Value Edit)——图转图,但机制完全不同于传统 img2img,后面会专门说
  • F3:人脸 + 姿态替换——Identity + ControlNet 联动
  • F4:修补(Inpaint)
  • F5:混合(Blend)
模型加载节点对应关系如下,必须按这套来,错一个都会报类型不匹配:
节点加载内容
UNETLoaderKlein 9B 主模型(safetensors 或 FP8)
CLIPLoaderQwen 3 8B 文本编码器,type 设 flux2
VAELoaderflux2-vae.safetensors
显存不到 16GB?用 UnetLoaderGGUF 替换 UNETLoader,量化选 Q8_0(约省 50% 显存,质量损失不到 1%)或 Q4_K_S(省 75%,质量损失约 3-5%)。

四个参数坑

FLUX.2 Klein 9B ComfyUI 工作流节点全貌
FLUX.2 Klein 9B ComfyUI 工作流节点全貌

坑一:CFG 没设成 1

Klein 9B 是蒸馏模型,训练时已经把引导信息内化了。CFG 必须设 1。你设 7,它不会"更准确地遵循 prompt",只会破坏采样分布,输出失控。
传统 SD 的 CFG 5-10 范围在这里完全不适用。

坑二:Steps 搞错了

Klein 9B 是 4 步蒸馏模型,Steps 设 4。更多步数不会提升质量,只是在浪费算力。2
配套 Sampler = eulerScheduler = simple
这套参数和 Flux Dev(Steps=20、CFG=1)以及 SDXL(Steps=25、CFG=7、Sampler=dpmpp_2m、Scheduler=karras)都不同。迁移过来时要重置,不能套默认。

坑三:没加 klein_9b_enhancer_v2 LoRA

Klein 9B 原始输出偏平,肤色有塑料感。工作流内置的 klein_9b_enhancer_v2 LoRA 是修复这个问题的关键,强度设 0.7,必须始终激活,且放在 LoRA 链最后一个位置

坑四:负向提示词没效果

在蒸馏 Flux 模型上,标准 CFG 控制的负向提示词(negative prompt)会失效,因为 CFG=1 等于关掉了引导强度差值。
工作流通过三个 NAG(Negative-Aware Guidance)节点恢复这个能力。每个节点对应一条管线,scale 默认设 5.0。不要动这个节点,也不要在外部单独设负向提示词绕过它。

denoise=0.85 这条红线

这是整个工作流里最值得单独说的一个参数。
denoise 参数安全区间示意:0.85 是红线
denoise 参数安全区间示意:0.85 是红线
Refiner 增强管线里,denoise 控制「保留多少原始结构、增加多少新细节」。推荐区间是:
  • 0.85:保留大部分结构的同时显著增加细节,最佳平衡点
  • 0.5-0.7:微妙增强,幅度小
  • 低于 0.4:几乎只有颜色偏移,无效
但问题不在这里。问题在于你用什么节点作为 latent 输入
u/official_geoahmed 在工作流文档里写得很直接:
"If you're using EmptyLatentImage instead of VAEEncode for the latent input, NEVER go below 0.85 denoise."
「如果你用 EmptyLatentImage 而不是 VAEEncode 作为 latent 输入,denoise 绝对不能低于 0.85。」1
为什么?因为 EmptyLatentImage 输入的是纯随机噪声。Denoise 低于 0.85 时,模型会把这些噪声「当成结构」保留下来——最终图像里你看到的不是欠平滑,是从头就没有结构的随机伪影。这是 4 步蒸馏采样的根本行为限制,不是 bug,调其他参数弥补不了。
只有在用 VAEEncode 输入一张已有图像的 latent 时,denoise 才可以低于 0.85(此时模型在真实图像结构上做局部修改)。

F2 管线的 denoise 是另一回事

KV 编辑管线(F2)的 denoise 在逻辑上等同于 1.0,哪怕你看到节点里有这个参数。
原因是 F2 使用 EmptyLatentImage + ReferenceLatent 条件——模型通过注意力机制读取参考图,不是通过 latent 混合。
"The model reads your image through attention, NOT through the latent. This means it always generates a fresh image guided by your reference, it doesn't blend with existing noise."
「模型通过注意力机制读取图像,而不是通过 latent。每次生成的都是由参考图引导的全新图像,不会和现有噪声做混合。」1
这和传统 img2img 本质不同。F2 里你改 denoise 数值,看起来好像在控制「改动幅度」,实际控制的不是同一个东西。

写给 Klein 9B 的 Prompt 要换个写法

Klein 9B 背后的文本编码器是 Qwen 3 8B,不是 CLIP。它理解自然语言,不需要堆风格关键词。
忘掉这种写法:
portrait, young woman, soft light, bokeh, 8k, ultra-realistic, trending on artstation, masterpiece
换成这种:
A 30-year-old man in a navy overcoat standing on a rain-soaked Prague street at dusk,
tungsten streetlights casting warm shadows, shot on Canon R5 85mm f/1.4,
clean digital file, histogram equalization
像描述一张照片,而不是在给搜索引擎贴标签。光线描述单独花词数,意义比加「masterpiece」大得多。

长时间运行的一条注意事项

8GB 显存用户:每跑 30-40 次生成后重启 ComfyUI 一次,防止内存碎片化导致莫名其妙的 OOM。切换管线时用节点上的「Free Memory」(齿轮图标)手动释放。1
工作流 JSON 可以从 Civitai 下载:FLUX.2 Klein 9B All-in-One Workflow v2.1

参数速查表
参数Klein 9B 正确值SD/SDXL 常见值(不适用)
Steps420-30
CFG15-10
Samplereulerdpmpp_2m
Schedulersimplekarras
LoRAklein_9b_enhancer_v2, 强度 0.7
NAG scale5.0
Denoise(空 latent)≥ 0.85

Add more perspectives or context around this content.

  • Sign in to comment.