TE keys missing

用户使用 Kohya SS 的 LoRA 训练功能训练 SDXL 模型时,训练日志一切正常,但生成的 safetensors 文件中缺少 TE 键值(TE keys),导致训练出的 LoRA 模型无法保留人物身份特征,面部变得千篇一律,细节丢失。该问题在 Linux、Windows 以及 Docke

TE keys missing

TE keys missing

快速结论:该报错通常发生在 Kohya SS 的 LoRA 训练中,原因是 v25 版本将文本编码器学习率(Text Encoder learning rate)的默认值从 v24 的 0.0001 改为了 0,导致训练默认仅针对 UNet,LoRA 输出文件不含 TE 键值。优先排查并确认 Text Encoder 学习率是否为非零值。

问题场景

用户使用 Kohya SS 的 LoRA 训练功能训练 SDXL 模型时,训练日志一切正常,但生成的 safetensors 文件中缺少 TE 键值(TE keys),导致训练出的 LoRA 模型无法保留人物身份特征,面部变得千篇一律,细节丢失。该问题在 Linux、Windows 以及 Docker 环境下均有复现,影响既有默认分支。

报错原文

TE keys missing

(注意:该报错并非显式错误提示,而是用户对比新旧 LoRA 文件内容后发现的差异现象)

原因分析

根本原因在于 Kohya SS v25.0.0+ 版本中,LoRA 训练选项卡的 Text Encoder learning rate 默认值发生了无声变更:

  • v24.x 版本默认值为 0.0001(与 UNet 学习率一致),训练时会同时训练 UNet 和文本编码器的 LoRA 模块。
  • v25.0.0+ 版本默认值改为 0,而 UNet learning rate 仍保持 0.0001

训练程序根据学习率值自动推导训练模式:

  • 当 TE LR 为 0 且 UNet LR 非零时 → 推导为 network_train_unet_only(仅训练 UNet)
  • 当 TE LR 非零且 UNet LR 为 0 时 → 推导为 network_train_text_encoder_only(仅训练文本编码器)

因此,使用默认配置的每次新 LoRA 训练实际上都是 UNet-only 模式,输出的 safetensors 文件中不含任何 TE 键值。训练日志不会报错,用户难以察觉模式变更。

注意:这个 bug 的核心问题不在于 UNet-only 模式本身(某些 SDXL 流程确实推荐此模式),而在于:

  • 模式变更没有被明确告知用户
  • 默认值在两个大版本之间发生了无声翻转
  • 用户得不到任何关于“TE LoRA 不会被训练/写入”的明确提示

环境排查

  • 确认 Kohya SS 版本号:是否从 v24.x 升级到了 v25.0.0+。
  • 确认 LoRA 训练选项卡中 Text Encoder learning rate 的设置值是否为 0
  • 对比新旧 LoRA 文件:检查 safetensors 文件中是否包含文本编码器相关的键值(TE keys)。
  • 确认训练日志中是否出现 network_train_unet_only 标志。
  • 确认配置文件中 network_train_unet_onlynetwork_train_text_encoder_only 的推导逻辑。

解决步骤

  1. 可优先尝试:将 Text Encoder learning rate 从默认的 0 修改为非零值(例如恢复为 v24 默认值 0.0001),使训练模式变为同时训练 UNet 和文本编码器。
  2. 检查并确保 UNet learning rate 保持为非零值(例如 0.0001),避免因两者同时为 0 导致其他问题。
  3. 如果希望保持 UNet-only 模式,请在 UI 中显式确认:将 Text Encoder learning rate 设置为 0,同时确认 UNet learning rate 为非零值,并在训练前查看日志或界面提示,确认你理解此模式将导致输出文件中不含 TE 键值。
  4. 建议开发者在 UI 字段中添加提示信息,说明将 TE LR 设为 0 且 UNet LR 非零时,将进入 UNet-only 模式,输出的 safetensors 文件中不包含 TE 键值。
  5. 建议在训练启动时的日志行中明确输出当前有效的训练模式(例如 “Training mode: UNet-only (no TE keys will be saved)”)。
  6. 检查是否与其他 Issue #3430 相关(配置除了 text_encoder_lr 不同外完全一致),确认 TE LR 设回 0.0001 后质量恢复。

验证方法

训练完成后,检查生成的 safetensors 文件中是否包含 TE 键值(可通过代码或工具查看文件内容)。同时对比新旧 LoRA 在 SDXL 推理时的效果:确保人物特征保持,面部细节丰富不泛化。若使用 v24 相同配置(text_encoder_lr = 0.0001)训练后 TE 键值正常出现且效果恢复,则问题已解决。

参考来源

bmaltais/kohya_ss #3388 – TE keys missing

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 12636

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注