RuntimeError: D:\a\_work\1\s\onnxruntime\python\onnxruntime_pybind_state.cc:857 onnxruntime::python::CreateExecutionProviderInstance CUDA_PATH is set but CUDA wasnt able to be loaded. Please ins

该报错通常出现在 sd3-flux.1 分支使用 WD14 Tagger(ONNX 后端)生成标注时,原因是该分支的 PyTorch 走 CUDA 12,但依赖里保留的 onnxruntime-gpu 仍按 CUDA 11 编译,导致 CUDA Execution Provider 加载失败。优先排

快速结论:该报错通常出现在 sd3-flux.1 分支使用 WD14 Tagger(ONNX 后端)生成标注时,原因是该分支的 PyTorch 走 CUDA 12,但依赖里保留的 onnxruntime-gpu 仍按 CUDA 11 编译,导致 CUDA Execution Provider 加载失败。优先排查 onnxruntime-gpu 版本与 CUDA 版本是否匹配。

适用环境:已确认环境为 Windows,Kohya SS 的 sd3-flux.1 分支,使用 WD14 Tagger(onnx 模式),模型为 SmilingWolf/wd-convnext-tagger-v3;仓库依赖中 onnxruntime-gpu 版本为 1.17.1。其余 Python、CUDA、显卡型号 Issue 未明确给出。

最快修复方案:将 requirements_windows.txt 中的 onnxruntime-gpu==1.17.1 改为 onnxruntime-gpu==1.19.2,随后重装该依赖再运行 WD14 Tagger。Issue 中该做法被用户回复确认“Worked”,维护者也已在后续提交中更新依赖版本。

注意事项:Issue 中该修复针对当时 sd3-flux.1 分支的 CUDA 11/12 混用问题;该分支现已相对 master 过时,官方已在默认 Windows/Linux CUDA 安装路径的 requirements_windows.txt 与 pyproject.toml 中将 onnxruntime 升级到 1.19.2。若你仍在使用 sd3-flux.1,建议按上述方式手动改版本;若使用当前 master,应确认依赖已经是新版本,无需再手动降级或改动。

问题场景

用户在 Kohya SS 的 sd3-flux.1 分支上使用 WD14 Tagger 给训练集图片生成标注文件(caption)。训练 LoRA 本身可以正常进行,但调用标注功能时失败,需要另外切到 master 分支才能完成打标。触发操作是在 GUI 中以 ONNX 模式运行 WD14 Tagger,处理指定的训练图片目录。

报错原文

*************** EP Error ***************
EP Error D:\a\_work\1\s\onnxruntime\python\onnxruntime_pybind_state.cc:857 onnxruntime::python::CreateExecutionProviderInstance CUDA_PATH is set but CUDA wasnt able to be loaded. Please install the correct version of CUDA andcuDNN as mentioned in the GPU requirements page  (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements),  make sure they're in the PATH, and that your GPU is supported.
 when using ['CUDAExecutionProvider']
Falling back to ['CUDAExecutionProvider', 'CPUExecutionProvider'] and retrying.
****************************************

相关前置报错:

2024-10-28 14:26:22.3626443 [E:onnxruntime:Default, provider_bridge_ort.cc:1548 onnxruntime::TryGetProviderInfo_CUDA] D:\a\_work\1\s\onnxruntime\core\session\provider_bridge_ort.cc:1209 onnxruntime::ProviderLibrary::Get [ONNXRuntimeError] : 1 : FAIL : LoadLibrary failed with error 126 "" when trying to load "C:\SD\kohya_ss_flux.1\venv\lib\site-packages\onnxruntime\capi\onnxruntime_providers_cuda.dll"

原因分析

Issue 评论给出的判断是:sd3-flux.1 分支因为 PyTorch 的原因使用 CUDA 12,但依赖文件中保留的 onnxruntime-gpu 版本较旧(1.17.1),该版本按 CUDA 11 编译,与当前 CUDA 12 环境不匹配。因此 onnxruntime 尝试加载 CUDA Execution Provider 时无法载入 onnxruntime_providers_cuda.dll,只能回退到 CUDA + CPU 并重试,WD14 打标随之失败。另一种可能原因是 onnxruntime 需要找到对应版本的 CUDA/cuDNN,且相关 DLL 需要在 PATH 中。

环境排查

  • 确认当前使用的 Kohya SS 分支:sd3-flux.1 还是 master。
  • 确认 venv 中安装的 onnxruntime-gpu 版本,检查是否为 1.17.1。
  • 确认 PyTorch 对应的 CUDA 版本(Issue 中 sd3-flux.1 分支为 CUDA 12)。
  • 确认 CUDA / cuDNN 是否已安装、版本是否与 onnxruntime 要求匹配,以及相关 DLL 是否在 PATH 中。
  • 确认 requirements_windows.txt 中 onnxruntime-gpu 的版本行。

解决步骤

  1. 打开 Kohya SS 目录下的 requirements_windows.txt。
  2. 找到 onnxruntime-gpu==1.17.1 这一行。
  3. 将其修改为 onnxruntime-gpu==1.19.2(该版本可在 CUDA 12 下运行)。
  4. 在对应 venv 中重新安装/更新该依赖,使 onnxruntime-gpu 1.19.2 生效。
  5. 重新运行 WD14 Tagger 打标任务,观察是否仍出现 CUDA Execution Provider 加载失败的 EP Error。
  6. 如果已使用当前 master 而非 sd3-flux.1,可直接使用仓库中已更新后的依赖版本,无需再手动改这一行。

验证方法

重新运行 WD14 Tagger 生成标注。若修复有效,日志中不再出现 LoadLibrary failed with error 126 与 CUDA_PATH is set but CUDA wasnt able to be loaded 的 EP Error,且能正常完成打标并生成 .txt 标注文件。Issue 中原提问者回复该方法“Worked!!!!”,可作为验证参考。

参考来源

bmaltais/kohya_ss #2936

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 25869

发表回复

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