report errors from training log (e.g., missing output directory)

用户在 Kohya SS 的 Textual Inversion、LoRA、DreamBooth、finetune 等训练标签页中启动训练时,因未指定输出目录(或指定了不可写目录),系统在生成训练配置文件时报错。错误以 Gradio 跟踪栈形式出现在日志中,UI 未显示明确提示。

report errors from training log (e.g., missing output directory)

report errors from training log (e.g., missing output directory)

快速结论:此报错通常发生在用户未填写或填错“输出目录”(Output Directory)时,导致系统尝试在根目录下写入配置文件(如 /config_xxx.toml)而引发权限错误。优先排查是否遗漏了输出目录,或该路径是否不可写。

问题场景

用户在 Kohya SS 的 Textual Inversion、LoRA、DreamBooth、finetune 等训练标签页中启动训练时,因未指定输出目录(或指定了不可写目录),系统在生成训练配置文件时报错。错误以 Gradio 跟踪栈形式出现在日志中,UI 未显示明确提示。

报错原文

22:03:47-718569 INFO     Start training TI...                                   
...
22:03:47-726346 INFO     lr_warmup_steps = 40                                   
Traceback (most recent call last):
  File "/home/tomohara/programs/python/kohya_ss/venv/lib/python3.10/site-packages/gradio/queueing.py", line 536, in process_events
    response = await route_utils.call_process_api(
...
  File "/tpo/misc/programs/python/kohya_ss/kohya_gui/textual_inversion_gui.py", line 890, in train_model
    with open(tmpfilename, "w", encoding="utf-8") as toml_file:
PermissionError: [Errno 13] Permission denied: '/config_textual_inversion-20250326-220347.toml'

原因分析

UI 的目录选择框允许空字符串(认为可选),但训练流程会根据输出目录拼接配置文件名,例如:{output_dir}/config_TextualInversion-{timestamp}.toml。当输出目录为空时,在 Unix 系统上拼接结果成为根目录下的绝对路径(如 /config_xxx.toml),普通用户无权写入,触发 PermissionError。该异常未被训练入口捕获,因而未向用户呈现可操作的错误消息。

环境排查

  • Kohya SS 版本(重点检查是否包含 #3134 的修复)
  • 操作系统(Windows/Linux/macOS)——路径拼接行为在 Unix 上影响更严重
  • 输出目录是否为空白或不可写

解决步骤

  1. 确保输出目录非空且可写:在训练标签页中,明确指定一个有写入权限的目录(如 ./output 或绝对路径)。
  2. 升级软件或手动修补:本项目已针对该问题设计修复方案,需将对应修改添加到 kohya_gui/textual_inversion_gui.py 及其它类似标签页的学习入口(如 LoRA、DreamBooth、finetune)。如果你使用自定义分支,请确保包含以下改动:
    • 在写入配置 TOML 文件前,检查输出目录是否为空;若为空则拒绝训练并返回用户可读消息。
    • 使用安全路径拼接(如 os.path.join,确保空输出目录不会导致根目录写法)。
    • 捕获 PermissionError 等文件写入异常,将简要提示送到 UI,完整细节留给日志。
    • 按钮状态在失败后恢复正常(Start 可点击、Stop 隐藏)。
  3. 优先尝试手动校验:如果还没有对应修复补丁,可在启动训练前先手动检查输出目录是否为空且可写,这是最快速的临时方案。

验证方法

启动训练,观察:

  • 如果输出目录为空,UI 应直接弹出明确错误消息(如 “Output directory is required”),训练不启动,Start 按钮保持可用。
  • 如果输出目录非空但不可写,UI 应显示权限失败提示,日志保留完整异常栈。
  • 如果输出目录正常且可写,训练应照常进行,不产生根目录下的 TOML 文件。

参考来源

bmaltais/kohya_ss #3134

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 12936

发表回复

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