明明有onnxruntime_providers_cuda.dll还是报error 126错误!

最近在打包一个Python项目,本地配置好,准备搬运到其他电脑。却一直出现一个错误。

错误提示如下:

2025-01-15 20:32:56.4062784 [E:onnxruntime:Default, provider_bridge_ort.cc:1744 onnxruntime::TryGetProviderInfo_CUDA] C:\a\_work\1\s\onnxruntime\core\session\provider_bridge_ort.cc:1426 onnxruntime::ProviderLibrary::Get [ONNXRuntimeError] : 1 : FAIL : LoadLibrary failed with error 126 "" when trying to load "D:\tonyhub-CosyVoiceApp\env\lib\site-packages\onnxruntime\capi\onnxruntime_providers_cuda.dll"

按理说,这个问题就是由于缺少onnxruntime_providers_cuda.dll才导致的。但是当你去指定路径查看的时候,发现并没有缺这个文件,而且路径也没错。

这么依赖,就有点束手无策了。

其实,我对这这错误的理解有误。他说的是并不是onnxruntime_providers_cuda.dll本身有问题,而是这个DLL本身依赖的一些DLL缺失了。

那么,如何知道具体的缺失文件呢?

这个时候一个很神奇的工具就要出场了。这个 工具的名字叫dependencies。

只要把DLL文件拖动到这个软件上面,他就自动检查所有依赖,正确显示依赖文件的路径。同时可以看到缺少的依赖文件。

知道了缺少什么依赖之后,只要把这些依赖文件添加到环境变量里就可以了。

ffmpeg已安装,将自动为视频添加音频 ================================================== 环境检查: CUDA 版本: CUDA 6.5 cuDNN 版本: cuDNN 9.10.2 ONNX Runtime GPU 支持: 支持GPU: True, 但初始化失败: [ONNXRuntimeError] : 1 : FAIL : Load model from D:\Personal\Temp\tmpa584yr5l.onnx failed:system error number 13 ================================================== 尝试使用 CUDAExecutionProvider 进行GPU加速 2025-06-11 23:48:37.7860629 [E:onnxruntime:Default, provider_bridge_ort.cc:1992 onnxruntime::TryGetProviderInfo_CUDA] D:\a\_work\1\s\onnxruntime\core\session\provider_bridge_ort.cc:1637 onnxruntime::ProviderLibrary::Get [ONNXRuntimeError] : 1 : FAIL : LoadLibrary failed with error 126 "" when trying to load "D:\Program Files\python39\lib\site-packages\onnxruntime\capi\onnxruntime_providers_cuda.dll" 2025-06-11 23:48:37.7967453 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:965 onnxruntime::python::CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*, and the latest MSVC runtime. Please install all dependencies 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. ONNX Runtime 使用的提供程序: ['CPUExecutionProvider'] 模型输入信息: Name: AnimeGANv3_input:0, Shape: [1, 'unk__1822', 'unk__1823', 3], Type: tensor(float) 模型输出信息: Name: generator_1/main/out_layer:0, Shape: ['unk__1824', 'unk__1825', 'unk__1826', 3], Type: tensor(float) 处理视频: 切片法区测试.mp4 使用FFmpeg进行视频编码
最新发布
06-12
<think>好的,我现在需要解决用户在Windows系统上遇到的ONNX Runtime初始化提供程序桥失败的问题,以及加载配置文件的相关问题。用户提到了错误信息“init provider bridge failed”和“loading config file issue”,可能还涉及LabelMerc工具。我需要结合自己的知识和引用内容来找到解决方案。 首先,我应该回顾ONNX Runtime的基本结构。ONNX Runtime支持通过提供程序(Providers)来调用不同的执行后端,比如CPU、CUDA、TensorRT等。初始化提供程序桥失败可能发生在切换或配置这些提供程序时。可能的原因包括依赖项缺失、路径错误或配置不正确。 用户提到的引用内容[1]提到UnrealBuildTool中显式构建RuntimeDependency已被弃用,建议将路径字符串添加到运行时依赖项列表。这可能与项目的构建配置有关,特别是在使用C++或其他需要链接依赖项的环境下。如果ONNX Runtime的依赖项没有被正确包含或路径未正确设置,可能导致提供程序初始化失败。 接下来,处理加载配置文件的问题。配置文件的路径错误、权限问题或格式错误都可能导致加载失败。需要检查配置文件是否存在,路径是否正确,以及文件内容是否符合预期格式。 针对这两个问题,我应该分步骤给出解决方案: 1. **检查运行时依赖项路径**:确保所有相关的DLL和依赖项路径正确添加到系统环境变量或项目配置中。特别是检查ONNX Runtime的库路径是否正确,以及是否有任何缺失的依赖项。 2. **验证提供程序配置**:在代码中初始化ONNX Runtime时,确认是否正确配置了所需的提供程序(如CUDA、DirectML)。可能需要显式添加提供程序或检查GPU驱动是否更新。 3. **配置文件路径和权限**:确认配置文件的绝对路径是否正确,是否有读取权限。在Windows上,路径分隔符应使用双反斜杠或原始字符串。同时检查文件内容是否符合JSON或其他指定格式,避免语法错误。 4. **更新ONNX Runtime版本**:如果使用的是旧版本,可能存在已知的bug。建议升级到最新稳定版,查看官方文档或GitHub的Issue是否有类似问题的解决方案。 5. **调试和日志**:启用ONNX Runtime的详细日志记录,帮助定位具体错误位置。通过日志分析初始化过程中哪一步出现了问题。 此外,用户提到LabelMerc,可能是一个特定应用或工具。需要确认该工具是否与当前使用的ONNX Runtime版本兼容,或者是否需要额外的配置步骤。 可能的解决方案步骤包括: - 确保所有依赖项正确安装,路径配置正确。 - 检查代码中提供程序的初始化顺序和配置。 - 使用绝对路径加载配置文件,并验证文件内容。 - 更新或重新安装ONNX Runtime。 - 查看官方文档和社区讨论,寻找类似问题的解决方法。 需要确保用户按照步骤操作,并提供具体的命令或代码示例,如设置环境变量、修改代码初始化部分等。同时,提醒用户检查错误日志的详细信息,以便更精准地定位问题。</think>### 逐步解决方案:ONNX Runtime初始化提供程序桥失败及配置文件加载问题 #### 1. 检查运行时依赖项路径 - **问题背景**:ONNX Runtime需要特定动态链接库(如`onnxruntime.dll`、CUDA相关DLL)才能正确初始化提供程序桥。若路径未正确配置,会导致初始化失败。 - **操作步骤**: 1. 确认ONNX Runtime的安装路径已添加到系统环境变量`PATH`中。例如,若使用Python包,检查`site-packages/onnxruntime`目录是否包含必要的DLL。 2. 若通过C++项目调用,需在构建配置(如`.build.cs`)中显式声明依赖项路径。参考引用[1],避免直接构造`RuntimeDependency`,改用如下方式: ```csharp PublicRuntimeLibraryPaths.Add("path/to/onnxruntime/lib"); ``` 3. 使用工具(如`Dependency Walker`)检查EXE/DLL的依赖项是否完整。 #### 2. 验证提供程序配置 - **问题背景**:初始化提供程序桥失败可能与后端执行引擎(如CUDA、DirectML)的配置错误有关。 - **操作步骤**: 1. **显式指定提供程序**:在代码中优先加载所需提供程序。例如,Python中初始化会话时指定CUDA: ```python import onnxruntime as ort sess_options = ort.SessionOptions() providers = ['CUDAExecutionProvider', 'CPUExecutionProvider'] # 确保顺序正确 session = ort.InferenceSession("model.onnx", sess_options, providers=providers) ``` 2. **检查GPU驱动**:确保已安装对应版本的CUDA/cuDNN或DirectML驱动,并与ONNX Runtime版本兼容。 3. **回退测试**:尝试仅使用CPU提供程序(`CPUExecutionProvider`),确认是否为GPU相关依赖问题。 #### 3. 解决配置文件加载问题 - **问题背景**:配置文件路径错误或格式错误会导致加载失败,常见于工具链(如LabelMerc)调用ONNX Runtime时。 - **操作步骤**: 1. **绝对路径替代相对路径**:在代码或配置文件中使用绝对路径,避免工作目录不一致导致的问题。例如: ```python config_path = r"C:\Users\Project\config.json" # Windows路径使用原始字符串或双反斜杠 ``` 2. **检查文件权限**:右键配置文件 → 属性 → 安全 → 确认当前用户有读取权限。 3. **验证文件格式**:若配置文件为JSON,使用在线校验工具(如JSONLint)检查语法。例如: ```json { "model_path": "model.onnx", "providers": ["CUDAExecutionProvider"] } ``` #### 4. 更新或重新安装ONNX Runtime - **操作步骤**: 1. 升级到最新稳定版本: ```bash pip install onnxruntime-gpu --upgrade # GPU版本 # 或 pip install onnxruntime --upgrade # CPU版本 ``` 2. 若问题仍存在,彻底卸载后重新安装: ```bash pip uninstall onnxruntime onnxruntime-gpu -y pip cache purge pip install onnxruntime-gpu ``` #### 5. 启用日志调试 - **操作步骤**: 1. 设置环境变量启用ONNX Runtime日志: ```bash set ONNXRUNTIME_LOG_LEVEL=4 # Windows命令行 ``` 2. 运行程序,检查生成的日志文件(如`onnxruntime_log_xxx`),定位具体错误位置(如缺失符号、权限拒绝等)。 #### 6. 兼容性检查(针对LabelMerc) - **操作步骤**: 1. 查阅LabelMerc文档,确认其支持的ONNX Runtime版本。 2. 若需降级ONNX Runtime,使用指定版本安装: ```bash pip install onnxruntime==1.10.0 ``` ### 示例代码:显式初始化提供程序 ```python import onnxruntime as ort try: # 启用详细日志 ort.set_default_logger_severity(3) # 0:Verbose, 3:Error # 显式配置提供程序并加载模型 providers = [('CUDAExecutionProvider', {'device_id': 0}), 'CPUExecutionProvider'] session = ort.InferenceSession("model.onnx", providers=providers) print("Provider桥初始化成功!使用设备:", session.get_providers()) except Exception as e: print(f"初始化失败: {e}") # 检查CUDA是否可用 if 'CUDAExecutionProvider' not in ort.get_available_providers(): print("CUDA提供程序不可用,请检查驱动和安装版本。") ``` ### 关键排查点总结 | 问题类型 | 可能原因 | 解决措施 | |-------------------------|---------------------------|-----------------------------------| | 提供程序桥初始化失败 | 依赖项缺失/路径错误 | 检查环境变量,更新GPU驱动 | | 配置文件加载失败 | 路径错误/权限不足 | 使用绝对路径,验证文件权限 | | 兼容性问题 | ONNX Runtime版本不匹配 | 降级或升级版本,查阅工具链文档 | ### 引用 [^1]: UnrealBuildTool提示,显式声明运行时依赖项路径时需避免直接构造`RuntimeDependency`对象,而应通过路径列表添加,这可能影响ONNX Runtime在C++项目中的依赖加载方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值