Kohya_SS学习率自动填充异常?3步快速定位并修复的完整指南
2026/9/14 6:30:27 网站建设 项目流程

Kohya_SS学习率自动填充异常?3步快速定位并修复的完整指南

【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss

用 Kohya_SS 训练 LoRA 时,点「加载预设」后学习率输入框要么空着、要么还是旧值,是不是让你怀疑人生?不解决它,要么只能盲填数值、训练效果打折,要么每次开新任务都要手工抄一遍参数。这篇文章带你从界面现象一路追到配置文件,把 Kohya_SS 学习率自动填充的问题彻底搞清楚。

先看你卡在哪:学习率自动填充的三类典型现象

Kohya_SS 的学习率输入框(Learning rate / Learning rate TE)初值来自两个地方:启动时读取的config.toml,以及你手动加载的预设 JSON。GUI 控件初始化逻辑在 kohya_gui/class_basic_training.py,预设加载逻辑在 kohya_gui/class_configuration_file.py。按「现象 → 指向 → 检查位置」对号入座:

现象指向原因检查位置
所有输入框都是同一默认值(如 1e-6),不随预设变化config.toml未创建或[basic]段缺learning_rate根目录 config example.toml 复制为config.toml并检查
选了预设、学习率却不更新只改了下拉框没点加载按钮;或config_dir指向了空目录GUI 顶部「Load/Save Config file」下拉框旁的↩️按钮;config.toml[configuration] config_dir
预设列表下拉是空的预设目录里没有.json文件,或路径含空格被截断presets/ 下的lora/finetune/子目录
勾选/取消 SDXL 后 TE 学习率框消失或错位这是正常行为,见下文说明kohya_gui/class_basic_training.py 中的update_learning_rate_te
保存配置后重开界面,学习率丢失保存按钮没点,或保存到了别的目录config.toml[configuration] config_dir

其中第 4 行新手最容易误判:LoRA 模式只有一个 Learning rate 框;FineTune / DreamBooth 模式会多出 TE(文本编码器)学习率框;而 SDXL 模型的文本编码器是 TE1/TE2 两个,勾选 SDXL 后原来的 TE 框会被隐藏、换成 TE1/TE2。所以「切换模型类型后学习率框变了」本身不是 bug——框换了、值没跟上才是问题。

修复路径:按依赖顺序三步走

第一步:先把 config.toml 落地(一切默认值的来源)

做什么:把根目录的 config example.toml 复制一份,改名为config.toml(文件名必须精确,GUI 默认只读这个路径),确认里面[basic]段有这几行:

  • learning_rate = 0.0001(Unet 学习率)
  • learning_rate_te = 0.0001(TE 学习率)
  • learning_rate_te1/learning_rate_te2(SDXL 的 TE1/TE2)
  • [configuration] config_dir = "./presets"(预设的加载/保存目录)

为什么:GUI 启动时每个学习率框的初值都是config.get("basic.learning_rate", 默认值)——配置里没有这一项,框里就是你看到的写死默认值,加载预设前它不会变。

做完后应该看到:重新打开 GUI,学习率框显示config.toml里的数值,而不是千篇一律的 1e-6。

第二步:确认预设文件在位,并真正触发加载

做什么

  1. 进入 presets/,确认lora/finetune/dreambooth/子目录里.json文件齐全(比如presets/lora/SDXL - LoRA AI_characters standard v1.0.json里就有learning_ratetext_encoder_lrunet_lr三个字段)。
  2. 如果目录缺失或文件不全,重新获取完整仓库:git clone https://gitcode.com/GitHub_Trending/ko/kohya_ss,把presets/下缺失的子目录补回去。
  3. 回到 GUI:在下拉框选预设后,务必点右侧↩️按钮(加载),旁边还有 📂(打开目录)和 💾(保存)。选完下拉框不点按钮,界面不会刷新任何数值。

为什么:下拉框的选项列表由list_files扫描config_dir下的.json生成;扫描到文件 ≠ 文件被加载。

做完后应该看到:点↩️后,Learning rate、TE 等输入框数值立即变成预设里的值,LR warmup、optimizer 等字段也会联动变化。

第三步:兜底——手动设置学习率

前两步做完仍然异常时,直接手工填值也能立刻开训。参考值(LoRA 训练):

模型Unet 学习率TE 学习率
SDXL2e-5 左右2e-5 左右
SD 1.51e-4 左右1e-4 左右

官方文档 docs/LoRA/top_level.md 给出的 SDXL + Adafactor 示例是learning_rate = 4e-7;docs/LoRA/options.md 和各预设 JSON 可作为不同优化器下的对照。填好后点 💾 保存成自己的预设,下次就不用再手敲了。

进阶调优:学习率配对了才算调到位

  • 学习率与优化器强绑定:AdamW8bit 对 LoRA 友好,数值可以给高一点;Adafactor 自适应,配 4e-7 这种小值更稳;Lion / Prodigy 又是另一套量级。换预设时学习率、优化器、调度器要一起换,只抄学习率是最常见的翻车点。
  • 调度器决定学习率的「曲线」cosine先高后低,适合大多数 LoRA;constant配 warmup 适合短训练。注意 GUI 里选了constant后 warmup 会被自动清零——这不是失效,是设计如此。
  • 常见误区
    • 以为「学习率越大收敛越快」——过大直接炸图、出糊图,LoRA 尤其敏感;
    • 批次翻倍时把学习率也翻倍——梯度累积(gradient_accumulation_steps)等效放大的是批次,不一定需要动学习率;
    • FineTune 模式把 TE 学习率设得和 Unet 一样高——文本编码器通常要更保守,很多社区做法是训练后期用「Stop TE」滑杆直接停掉 TE 训练。

高频疑问

Q:下拉框里能看到预设,为什么点 ↩️ 后数值没变?A:检查config.toml[configuration] config_dir是否和实际预设所在目录一致(默认./presets)。路径指向空目录时,下拉能留旧选项但加载读不到文件。

Q:LoRA 界面怎么只有 Learning rate 一个框,没有 TE?A:正常。单框模式是 LoRA 训练;FineTune / DreamBooth 才会出现 TE / TE1 / TE2 框,SDXL 勾选后还会切换成 TE1+TE2。

Q:我改了学习率,为什么下次开 GUI 又变回 0.0001?A:你改的是界面值,没点 💾 保存。保存后数值会写进预设 JSON;想改的是「启动默认值」,则应改config.toml[basic]段。

Q:预设文件里 learning_rate 是 2e-05,GUI 显示 2e-05 算正常吗?A:正常。科学计数法等价于 0.00002,GUI 直接按文件里的数值显示。

写在最后

配置落地、预设在位、加载触发,三步走完,学习率自动填充基本不会再出问题。如果还有异常,对照 docs/train_db_README.md 和相关 README,或在 Kohya_SS 社区论坛发一下你的config.toml和截图,通常很快有人帮你定位。

【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询