[BUG] Overwrite confirmation blocks SSH training when no –headless flag is provided

用户在远程机器上通过 SSH 运行 Kohya SS GUI(使用命令 python kohya_gui.py 未加 --headless 参数),当训练 LoRA、Dreambooth 等模型时,如果 --output_name 指定的输出名称已经存在, easygui.ynbox() 会弹出一个

[BUG] Overwrite confirmation blocks SSH training when no --headless flag is provided

[BUG] Overwrite confirmation blocks SSH training when no –headless flag is provided

快速结论:该报错发生在通过 SSH 远程运行 Kohya SS 但未使用 --headless 参数时。优先排查是否在 SSH 会话中使用了 --headless 参数启动 GUI,这是官方推荐的远程运行方式。

问题场景

用户在远程机器上通过 SSH 运行 Kohya SS GUI(使用命令 python kohya_gui.py 未加 --headless 参数),当训练 LoRA、Dreambooth 等模型时,如果 --output_name 指定的输出名称已经存在,easygui.ynbox() 会弹出一个阻塞的 GUI 确认对话框,该对话框在 SSH 会话中无法交互,导致训练进程永久挂起。

报错原文

# 不会产生 Python 错误栈,表现为进程阻塞卡死
# 关键代码路径:kohya_gui/common_gui.py -> check_if_model_exist() -> easygui.ynbox()
# 错误本质:GUI 模态对话框在无显示服务器的 SSH 环境中阻塞等待用户输入

原因分析

可能原因:用户通过 SSH 启动 Kohya SS GUI 时未传递 --headless 参数。当输出文件已存在时,check_if_model_exist() 函数会调用 easygui.ynbox() 弹出覆盖确认弹窗。该弹窗是服务器端的原生 GUI 对话框,在纯 SSH 终端环境中无法显示和交互,导致进程永久阻塞。注意:commit 60d99ec 恢复使用了 easygui,但 headless 模式下的跳过逻辑(直接返回 False)仍然是正确的。

环境排查

  • 确认是否通过 SSH 或其他无图形显示器的远程方式运行
  • 确认启动命令中是否包含 --headless 参数
  • 确认 Kohya SS 版本是否为包含 commit 60d99ec 的版本(2025-07-13 之后)
  • 确认 output_name 对应的文件是否已存在于输出目录中

解决步骤

  1. (可优先尝试)使用 --headless 参数启动:将启动命令改为 python kohya_gui.py --listen 0.0.0.0 --server_port <端口号> --headless。headless 模式下 check_if_model_exist() 会跳过 easygui.ynbox() 弹窗,自动覆盖已存在的模型文件。
  2. 通过浏览器访问:使用 --headless 启动后,通过浏览器访问 http://你的服务器IP:指定端口 来操作 GUI。
  3. 更改输出名称:如果不想覆盖已有模型,可以在 GUI 的训练参数中修改 output_name 为一个不存在的名称。
  4. 删除已有文件:手动删除输出目录中对应 output_name 的模型文件(如 .safetensors),然后重新运行训练。

验证方法

确认使用 --headless 参数启动后,训练可以正常开始,不会出现进程挂起的情况。如果不使用 --headless,当需要覆盖已存在模型时,进程应能立即出现覆盖警告并通过浏览器进行操作(如果浏览器可用且 easygui 被替换为 Gradio 通知)。

参考来源

bmaltais/kohya_ss #3570

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 12328

发表回复

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