ComfyUI-ELLA 插件 - 超详细保姆级教程
1. 插件简介
插件地址: https://github.com/TencentQQGYLab/ComfyUI-ELLA
这个插件就像是给 ComfyUI 装了一个"超级理解大脑"!你知道平时我们用 ComfyUI 生成图片时,有时候写了很长很详细的描述,但生成出来的图片总是差点意思?就像你跟朋友描述一个复杂的场景,但朋友总是理解偏了一样。
ELLA 插件就是来解决这个问题的!它就像是一个"翻译专家",能够更准确地理解你写的复杂描述,然后告诉 AI 画师应该画什么。
能给我们带来什么效果?
- 🧠 更准确的理解:能更好地理解复杂的、长篇的描述文字
- 🎯 更精确的生成:生成的图片更符合你的描述
- 📝 支持长文本:可以写很长很详细的描述,不用担心 AI 理解不了
- 🔄 时间感知:在生成过程的不同阶段,会动态调整对文字的理解
- 🎨 兼容性强:可以和 ControlNet、LoRA 等其他功能一起使用
2. 如何安装
方法一:手动下载安装
- 打开你的 ComfyUI 文件夹
- 找到
custom_nodes文件夹(就像是插件的家) - 在
custom_nodes里新建一个文件夹,名字叫ComfyUI-ELLA - 把下载的插件文件都放进这个文件夹
- 安装依赖:在插件文件夹里运行
pip install -r requirements.txt - 重启 ComfyUI
方法二:Git 命令安装(推荐)
cd ComfyUI/custom_nodes
git clone https://github.com/TencentQQGYLab/ComfyUI-ELLA.git
cd ComfyUI-ELLA
pip install -r requirements.txt
模型文件准备
你还需要下载两个模型文件:
-
ELLA 模型:放在
ComfyUI/models/ella/文件夹里- 下载地址:https://huggingface.co/QQGYLab/ELLA
- 文件名:
ella-sd1.5-tsc-t5xl.safetensors
-
T5 文本编码器:放在
ComfyUI/models/ella_encoder/文件夹里
3. 节点详细解析
3.1 Load ELLA Model 节点 - ELLA 模型加载器
这个节点就像是"请来一位翻译专家",它负责加载 ELLA 模型,让这个翻译专家准备好工作。
3.2 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| name | name | 模型文件列表 | ella-sd1.5-tsc-t5xl.safetensors | 选择要使用的翻译专家,就像选择请哪位老师来帮忙 | 指定要加载的ELLA模型文件 | 从下拉列表中选择你下载的ELLA模型文件 |
3.3 Load T5 TextEncoder #ELLA 节点 - T5 文本编码器加载器
这个节点就像是"请来一位文字理解专家",专门负责理解和分析你写的文字描述。
3.4 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| name | name | 编码器路径列表 | models--google--flan-t5-xl--text_encoder | 选择文字理解专家的类型,就像选择用哪种字典 | 指定T5文本编码器的路径 | 选择你下载的T5编码器文件夹 |
| max_length | max_length | 0-128,步长16 | 0 | 文字长度限制,0表示不限制,就像告诉专家可以读多长的文章 | 设置文本的最大长度,0为灵活长度 | 0让AI自动处理,77是标准长度 |
| dtype | dtype | auto/FP32/FP16 | auto | 计算精度选择,就像选择用粗笔还是细笔写字 | 指定模型的数据类型精度 | auto让系统自动选择最合适的 |
3.5 Apply ELLA 节点 - ELLA 应用器
这个节点就像是"总指挥",它把翻译专家和文字理解专家的工作成果应用到图片生成过程中。
3.6 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 你的基础模型 | 基础的画师,就像选择用哪个画家来画画 | 输入的扩散模型 | 连接 Load Checkpoint 的输出 |
| ella | ella | ELLA类型 | ELLA模型 | 翻译专家,负责理解复杂描述 | ELLA模型实例 | 连接 Load ELLA Model 的输出 |
| positive | positive | ELLA_EMBEDS类型 | 正面描述 | 你想要的东西的描述,经过专家理解后的版本 | 正向ELLA嵌入 | 连接文本编码节点的输出 |
| negative | negative | ELLA_EMBEDS类型 | 负面描述 | 你不想要的东西的描述,经过专家理解后的版本 | 负向ELLA嵌入 | 连接文本编码节点的输出 |
| sigmas | sigmas | SIGMAS类型(可选) | 调度器输出 | 生成步骤的时间表,就像画画的节拍器 | 采样调度参数 | 连接 BasicScheduler 的输出 |
3.7 ELLA Encode 节点 - ELLA 编码器
这个节点就像是"专业翻译机",把理解好的文字转换成 AI 画师能懂的"画画指令"。
3.8 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| ella | ella | ELLA类型 | 设置好时间的ELLA | 带有时间信息的翻译专家,知道什么时候该重点理解什么 | 包含时间步信息的ELLA模型 | 连接 Set ELLA Timesteps 的输出 |
| embeds | embeds | ELLA_EMBEDS类型 | 文字嵌入 | 已经被理解的文字内容,就像翻译好的稿子 | ELLA文本嵌入数据 | 连接 T5 Text Encode 的输出 |
3.9 ELLA Text Encode 节点 - ELLA 文本编码器(一体化)
这个节点就像是"一站式服务台",把文字理解和翻译的工作一次性完成,还能同时处理普通的 CLIP 文字。
3.10 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| ella | ella | ELLA类型 | 设置好时间的ELLA | 带有时间信息的翻译专家 | 包含时间步信息的ELLA模型 | 连接 Set ELLA Timesteps 的输出 |
| text_encoder | text_encoder | T5_TEXT_ENCODER类型 | T5编码器 | 文字理解专家 | T5文本编码器实例 | 连接 Load T5 TextEncoder 的输出 |
| text | text | 字符串 | 你的描述文字 | 你想要生成的图片的详细描述 | 输入的提示词文本 | 写详细的图片描述,比如"一只可爱的小猫在花园里玩耍" |
| clip | clip | CLIP类型(可选) | CLIP模型 | 普通的文字理解器,用来处理简单描述 | CLIP文本编码器 | 连接 Load Checkpoint 的CLIP输出 |
| text_clip | text_clip | 字符串(可选) | CLIP描述文字 | 给普通理解器的简单描述 | CLIP提示词文本 | 写简单的关键词,比如"cat, garden, cute" |
3.11 T5 Text Encode #ELLA 节点 - T5 文本编码器
这个节点就像是"专业文字分析师",专门负责把你的文字描述转换成 ELLA 能理解的格式。
3.12 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| text | text | 字符串 | 你的描述文字 | 你想要生成的图片的详细描述 | 输入的提示词文本 | 写详细描述,支持很长的文字 |
| text_encoder | text_encoder | T5_TEXT_ENCODER类型 | T5编码器 | 文字理解专家 | T5文本编码器实例 | 连接 Load T5 TextEncoder 的输出 |
| embeds | embeds | ELLA_EMBEDS类型(可选) | 其他嵌入 | 其他已经处理好的文字内容,用来组合 | 可选的ELLA嵌入数据 | 用来和其他文字内容组合使用 |
3.13 ELLA Combine Embeds 节点 - ELLA 嵌入组合器
这个节点就像是"内容合并器",把不同来源的文字理解结果合并在一起。
3.14 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| embeds | embeds | ELLA_EMBEDS类型 | 主要嵌入 | 主要的文字理解结果,就像主菜 | 主要的ELLA嵌入数据 | 连接主要的文字编码结果 |
| embeds_add | embeds_add | ELLA_EMBEDS类型 | 附加嵌入 | 要添加的额外文字理解结果,就像配菜 | 要合并的额外ELLA嵌入数据 | 连接额外的文字编码结果 |
3.15 Combine CLIP & ELLA Embeds 节点 - CLIP 和 ELLA 嵌入组合器
这个节点就像是"双语翻译器",把普通的 CLIP 理解结果和 ELLA 的高级理解结果组合起来。
3.16 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| cond | cond | CONDITIONING类型 | CLIP条件 | 普通理解器的理解结果,就像基础翻译 | CLIP条件编码结果 | 连接 CLIP Text Encode 的输出 |
| embeds | embeds | ELLA_EMBEDS类型 | ELLA嵌入 | ELLA的高级理解结果,就像专业翻译 | ELLA嵌入数据 | 连接 ELLA 相关编码的输出 |
3.17 Set ELLA Timesteps 节点 - ELLA 时间步设置器
这个节点就像是"时间管理员",告诉 ELLA 在生成图片的不同阶段应该如何调整理解重点。
3.18 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 基础模型 | 基础的画师模型,用来获取时间信息 | 扩散模型实例 | 连接 Load Checkpoint 的输出 |
| ella | ella | ELLA类型 | ELLA模型 | 翻译专家 | ELLA模型实例 | 连接 Load ELLA Model 的输出 |
| scheduler | scheduler | 调度器名称列表 | normal | 时间安排方式,就像选择画画的节奏 | 采样调度器类型 | 选择和你的采样器相同的调度器 |
| steps | steps | 1-10000 | 20 | 总共要画多少步,就像素描要画多少笔 | 采样总步数 | 和你的采样器设置相同的步数 |
| denoise | denoise | 0.0-1.0,步长0.01 | 1.0 | 重画程度,1.0是完全重画 | 去噪强度 | 1.0用于从头生成,小于1.0用于修改 |
| sigmas | sigmas | SIGMAS类型(可选) | 外部调度器 | 外部提供的时间安排,就像别人制定的画画计划 | 外部采样调度参数 | 可以连接 BasicScheduler 的输出 |
3.19 Convert Condition to ELLA Embeds 节点 - 条件转换器(已弃用)
这个节点就像是"格式转换器",把普通的条件格式转换成 ELLA 能用的格式。注意:这个节点已经不推荐使用了,建议用 Combine CLIP & ELLA Embeds 代替。
3.20 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| cond | cond | CONDITIONING类型 | 条件数据 | 要转换的条件信息,就像要翻译的文档 | 输入的条件编码数据 | 连接 CLIP Text Encode 的输出 |
3.21 Concat Condition & ELLA Embeds 节点 - 条件连接器(已弃用)
这个节点用来连接条件和 ELLA 嵌入。注意:这个节点也已经不推荐使用了,建议用 Combine CLIP & ELLA Embeds 代替。
3.22 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| cond | cond | CONDITIONING类型 | 条件数据 | 普通的条件信息 | CLIP条件编码数据 | 连接 CLIP Text Encode 的输出 |
| embeds | embeds | ELLA_EMBEDS类型 | ELLA嵌入 | ELLA的理解结果 | ELLA嵌入数据 | 连接 ELLA 编码的输出 |
4. 使用技巧和建议
4.1 基础使用流程
- 加载模型:先用 Load ELLA Model 和 Load T5 TextEncoder 加载必要的模型
- 设置时间:用 Set ELLA Timesteps 设置时间步信息
- 编码文字:用 ELLA Text Encode 或分步编码你的描述
- 应用到模型:用 Apply ELLA 把 ELLA 应用到你的生成流程中
4.2 性能优化建议
- 显存管理:T5 编码器比较占显存,如果显存不够可以设置 dtype 为 FP16
- 文本长度:max_length 设为 0 可以获得更好的短文本质量
- 时间同步:确保 Set ELLA Timesteps 的参数和你的采样器设置完全一致
4.3 质量优化建议
- 详细描述:ELLA 擅长理解长而详细的描述,不要害怕写得很详细
- 组合使用:可以同时使用 ELLA 和 CLIP,获得更好的效果
- LoRA 兼容:使用 LoRA 时,记住 ELLA 条件要连到 Conditioning (Concat) 的 conditioning_to
4.4 常见搭配
- 基础搭配:ELLA + T5 编码器,适合追求高质量理解
- 混合搭配:ELLA + CLIP,兼顾理解质量和兼容性
- 高级搭配:配合 ControlNet、LoRA 等其他插件使用
5. 常见问题解答
Q1:为什么提示 "timesteps are required but not provided"?
A1:
- 你需要先使用 Set ELLA Timesteps 节点设置时间步信息
- 或者在 Apply ELLA 节点中连接 sigmas 输入
Q2:使用 LoRA 时效果不好怎么办?
A2:
- 确保使用了 CLIP 编码器处理 LoRA 的触发词
- ELLA 的条件要连接到 Conditioning (Concat) 的 conditioning_to 输入
- CLIP 的条件连接到 conditioning_from 输入
Q3:显存不够用怎么办?
A3:
- 在 Load T5 TextEncoder 中设置 dtype 为 FP16
- 减少 max_length 的值
- 关闭其他占显存的功能
Q4:生成的图片很暗怎么办?
A4:
- 检查 SamplerCustom 的 add_noise 是否启用
- 降低 SamplerCustom 的 cfg 值
- 这通常在使用 AYS 调度器时出现
Q5:什么时候用 Apply ELLA,什么时候用 ELLA Encode?
A5:
- Apply ELLA:一站式解决方案,适合简单使用
- ELLA Encode:需要更精细控制时使用,可以分别处理正负条件
6. 实际应用示例
示例1:基础 ELLA 使用
流程:
Load Checkpoint → Load ELLA Model → Load T5 TextEncoder
→ Set ELLA Timesteps → ELLA Text Encode → KSampler
示例2:ELLA + CLIP 混合使用
流程:
Load Checkpoint → Load ELLA Model → Load T5 TextEncoder
→ Set ELLA Timesteps → ELLA Text Encode (带CLIP输入)
→ KSampler
示例3:ELLA + LoRA 使用
流程:
Load Checkpoint → Load ELLA Model → T5 Text Encode
→ CLIP Text Encode → Combine CLIP & ELLA Embeds
→ Apply ELLA → Conditioning (Concat) → KSampler
7. 总结
ELLA 插件就像是给 ComfyUI 装了一个"超级大脑",让它能够:
- 更好地理解复杂描述:不再害怕写长篇大论的提示词
- 时间感知能力:在生成过程中动态调整理解重点
- 完美兼容性:可以和现有的各种插件完美配合
- 灵活使用:既有简单的一体化节点,也有精细控制的分步节点
无论你是想要生成更精确的图片,还是想要使用复杂的长描述,ELLA 都能帮你实现。记住:详细的描述 + 正确的时间设置 = 更好的生成效果!
现在就去试试吧,用 ELLA 来让你的 AI 画师变得更聪明!🧠✨