菜单

文本编码器

相关源文件

ComfyUI 中的文本编码器将自然语言提示转换为数值嵌入,以指导扩散模型的生成。该系统支持多种编码器架构,包括 CLIP、T5、BERT 和 LLAMA 模型,并为 Stable Diffusion、SDXL、SD3、Flux 等模型系列提供了专门的实现。

有关处理文本编码器权重的模型加载和管理系统的信息,请参阅模型修补和 LoRA。有关这些嵌入在采样过程中如何使用的详细信息,请参阅条件和引导

架构概述

文本编码器系统遵循分层设计,基础类提供通用功能,专门实现提供不同模型架构的功能。

来源:comfy/sd1_clip.py81-287 comfy/sdxl_clip.py5-96 comfy/text_encoders/sd3_clip.py10-167 comfy/text_encoders/flux.py33-71

核心组件

基础文本编码器模型

SDClipModel 类提供了 ComfyUI 中所有文本编码器的基础实现。

该模型通过 layer 参数支持不同的输出层

层类型描述用途
"last"最终层输出大多数模型的默认设置
"hidden"中间层layer_idx 指定
"pooled"池化表示用于分类任务
"all"所有层输出高级应用

来源:comfy/sd1_clip.py81-147 comfy/sd1_clip.py154-169

分词系统

标记化系统处理文本预处理、嵌入注入和标记权重计算。

来源:comfy/sd1_clip.py293-457 comfy/sd1_clip.py522-619

编码器类型和实现

CLIP 编码器

CLIP(对比语言-图像预训练)编码器是 ComfyUI 中最常见的文本编码器,具有不同的尺寸和配置。

SD1 CLIP

Stable Diffusion 1.x 模型的基本 CLIP 实现

  • 上下文长度:77 个标记
  • 嵌入维度:768
  • 特殊标记:start (49406), end (49407), pad (49407)

SDXL 双 CLIP 系统

SDXL 使用两个 CLIP 编码器协同工作

来源:comfy/sdxl_clip.py41-69

T5 编码器

T5(文本到文本传递 Transformer)编码器为高级模型提供了增强的文本理解能力。

T5XXL 实现

用于 SD3、Flux 和其他现代架构

  • 上下文长度:可变(最多 99M 标记)
  • 嵌入维度:4096
  • 注意力掩码:支持
  • 特殊标记:end (1), pad (0)

来源:comfy/text_encoders/sd3_clip.py10-32 comfy/text_encoders/flux.py9-13

专用编码器

LLAMA 用于视频模型

LLAMA 编码器用于 Hunyuan Video 等视频生成模型

LLAMA 模板包括详细的视频描述说明,并从完整输出中提取相关部分。

来源:comfy/text_encoders/hunyuan_video.py44-143

BERT 支持多语言

BERT 编码器处理 HyDiT 等模型中的中文和其他语言

  • 词汇表:针对目标语言进行了优化
  • 上下文长度:512 个标记
  • 注意力掩码:必需
  • 层提取:可配置

来源:comfy/text_encoders/hydit.py9-25

多编码器系统

现代扩散模型通常结合使用多个文本编码器来利用它们各自的优势。

SD3 三重编码器系统

SD3 结合了三个编码器以实现全面的文本理解

来源:comfy/text_encoders/sd3_clip.py101-149

Flux 双编码器系统

Flux 使用 CLIP-L 和 T5XXL 进行高效文本处理

组件角色输出
CLIP-L语义理解池化表示
T5XXL详细文本分析序列嵌入

来源:comfy/text_encoders/flux.py49-55

标记处理和加权

权重语法

ComfyUI 支持通过括号语法修改注意力权重

语法效果权重值
(text)增加注意力1.1×
((text))进一步增加1.21×
(text:1.2)显式权重1.2×
[text]减少注意力0.9×

来源:comfy/sd1_clip.py321-339 comfy/sd1_clip.py56-79

嵌入集成

可以加载自定义嵌入并将其集成到标记化过程中

来源:comfy/sd1_clip.py388-457 comfy/sd1_clip.py546-561

模型配置和选项

文本编码器支持通过选项系统进行运行时配置

选项系统允许在不重新加载模型的情况下动态重新配置,以支持同一会话中的不同生成需求。

来源:comfy/sd1_clip.py154-169 comfy/text_encoders/sd3_clip.py85-99