快速结论:Kohya SS 训练时如果输出目录(output dir)留空,GUI 会把 per-run TOML 配置写成根目录绝对路径并触发 PermissionError,导致训练直接失败、日志里只有 Gradio traceback。优先排查输出目录是否填写且可写。
适用环境:Issue 中确认的环境为 Kohya SS(kohya_gui),Python 3.10(venv 路径显示 python3.10),涉及 Textual Inversion 训练标签页;Linux 环境(路径为 Unix 风格,出现 Permission denied)。其余 CUDA、PyTorch、显卡信息 Issue 未提供。
最快修复方案:暂无确认的一步修复方案。Issue 描述的是增强需求,尚未包含已验证的修复提交;在输出目录为空时先手动填写一个存在且可写的目录,可绕过该报错。
注意事项:Issue 指出空白输出目录当前被“可选”校验放过,因此报错并非操作失误导致。其他训练标签页(LoRA、DreamBooth、finetune 等)也会写入同类型的 config_<mode>-{timestamp}.toml,存在同样风险。修复尚未合并,Issue 仅作为计划与验收标准。
问题场景
用户在 Kohya SS GUI 中启动 Textual Inversion 训练,但忘记(或未被告知需要)填写输出目录。训练入口在写出本次运行的 TOML 配置文件时,因为输出目录为空而失败,Gradio 队列中抛出的异常只以完整 traceback 形式写进日志,界面上没有明确提示,用户只能从日志里“扒”原因。
报错原文
22:03:47-718569 INFO Start training TI...
...
22:03:47-726346 INFO lr_warmup_steps = 40
Traceback (most recent call last):
File ".../gradio/queueing.py", line 536, in process_events
response = await route_utils.call_process_api(
...
File ".../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'
原因分析
根据 Issue 讨论,原因为:共享的目录路径校验把空路径视为合法(因为该字段被当作可选)。训练标签页会把本次运行的 TOML 配置写到输出目录下,路径由字符串拼接得到:{output_dir}/config_<mode>-{timestamp}.toml。当输出目录为空时,拼接结果变成文件系统根目录下的绝对路径(Unix 上例如 /config_textual_inversion-….toml),普通用户对该路径没有写权限,于是 open() 抛出 PermissionError。该异常在训练准备阶段没有被捕获,因此直接冒泡到 Gradio,日志里只有 traceback,界面没有简短可操作的提示。
可能的扩展影响:同样的 TOML 写入模式存在于 LoRA、DreamBooth、finetune 等其他训练模式,因此这些入口也可能出现同样的问题。
环境排查
- 确认 Python 版本与虚拟环境(Issue 中为 Python 3.10 的 venv)。
- 确认操作系统为 Linux/Unix 系(路径拼接为根绝对路径的行为与平台相关)。
- 确认当前运行用户在目标输出目录下是否具有写权限。
- 检查使用的训练标签页(Textual Inversion、LoRA、DreamBooth、finetune 等)是否都使用同一套输出目录与 TOML 写入逻辑。
- 确认是否处于 print-only / dry-run 模式:该模式下不应启动训练进程。
解决步骤
- 在 GUI 对应训练标签页中,确认“输出目录(output dir / output folder)”字段已填写,且指向一个存在、当前用户可写的目录,例如用户家目录下的某个子目录。
- 避免把输出目录留空;也不要填写根目录等无写权限路径。
- 若输出目录非空但仍报
PermissionError,检查该目录的属主与权限,确认运行 Kohya SS 的用户可在其中创建config_<mode>-{timestamp}.toml。 - 提交训练前,先查看日志中是否已开始写 TOML,确认路径落在你填写的输出目录内,而不是根目录下。
- 如需从根上修复,可关注 Issue 中提到的增强:对空白输出目录做必填校验、改用 join 语义拼接路径、捕获写入异常并弹出用户可见提示;同时覆盖 Textual Inversion 之外的训练入口。该修复尚未在 Issue 中确认落地,可优先尝试跟踪对应 PR/提交。
验证方法
填好可写输出目录后重新启动训练,确认:1)日志中 TOML 路径为 <output_dir>/config_<mode>-{timestamp}.toml,不再出现根目录下的 /config_….toml;2)不再抛出 PermissionError;3)训练进程正常启动。若界面在训练失败后卡在运行状态,可参照 Issue 中“早期失败应恢复 Start/Stop 按钮状态”的验收标准进行核对。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


![RuntimeError: Triton Error [CUDA]: an illegal memory access was encountered](https://www.chat-gpts.plus/wp-content/uploads/2026/09/1347-e7ce5eed-768x403.jpg)