X-AnyLabeling_CUDA13_安装使用笔记
X-AnyLabeling 安装与 CUDA 13 GPU 环境配置笔记1. 目标在 Windows 11 Conda 环境中安装并运行 X-AnyLabeling使其可以使用NVIDIA GPUONNX Runtime CUDA Execution ProviderTensorRT Execution Provider可选CUDA 13cuDNNGroundingDINO、SAM2 等自动标注模型本文记录一次已经实际安装成功的配置过程以及过程中遇到的典型问题。2. 最终环境本次成功运行的主要环境如下操作系统Windows 11 Python3.12 Conda 环境x-anylabeling-cu13 CUDA Toolkit13.3 ONNX Runtime1.27.0 ONNX Runtime Providers - TensorrtExecutionProvider - CUDAExecutionProvider - CPUExecutionProvider验证结果ORT: 1.27.0 Providers: [TensorrtExecutionProvider, CUDAExecutionProvider, CPUExecutionProvider]创建 ONNX Runtime Session 后CUDA Provider 可以正常加载。3. 创建 Conda 环境建议单独创建一个环境避免 PyTorch、ONNX Runtime、CUDA DLL 和其他项目互相污染。conda create -n x-anylabeling-cu13 python3.10 -y conda activate x-anylabeling-cu13升级基础安装工具python -m pip install --upgrade pip setuptools wheel检查 Python 和 pip 是否属于当前环境where python where pip python --version python -m pip --version正常路径应该类似C:\Users\XXX\AppData\Local\miniconda3\envs\x-anylabeling-cu13\python.exe4. 安装 X-AnyLabeling4.1 直接pip安装pip install -U uv uv pip install x-anylabeling-cvhub[gpu-cu13]4.2 源码安装pip install -U uv git clone https://github.com/CVHub520/X-AnyLabeling.git cd X-AnyLabeling uv pip install -e .[gpu-cu13]启动x-anylabeling具体启动模块可能随项目版本变化可以在项目根目录检查dir以及python -m pip show x-anylabeling5. 安装 ONNX Runtime GPU安装 GPU 版 ONNX Runtimepython -m pip uninstall -y onnxruntime onnxruntime-gpu python -m pip install onnxruntime-gpu检查版本和 Providerpython -c import onnxruntime as ort; print(ORT:, ort.__version__); print(Device:, ort.get_device()); print(Providers:, ort.get_available_providers())期望输出类似ORT: 1.27.0 Device: GPU Providers: [TensorrtExecutionProvider, CUDAExecutionProvider, CPUExecutionProvider]需要注意仅仅看到CUDAExecutionProvider出现在列表中并不等于 CUDA DLL 已经能正确加载。真正的验证方式是创建一个 ONNX Runtime Session。6. 安装 NVIDIA Python Package Index6.1 首次安装可能出现的问题执行pip install nvidia-pyindex可能出现ModuleNotFoundError: No module named pip原因是nvidia-pyindex是一个较老的包其构建脚本和新版 pip 的隔离构建机制兼容性较差。可尝试关闭隔离构建python -m pip install nvidia-pyindex --no-build-isolation如果继续出现ModuleNotFoundError: No module named appdirs先安装python -m pip install appdirs然后重新执行python -m pip install nvidia-pyindex --no-build-isolation最终验证python -m pip show nvidia-pyindex成功时可看到Name: nvidia-pyindex Version: 1.0.97. 安装 cuDNN7.1 不要安装错误的占位包下面这个命令可能失败pip install nvidia-cudnn报错类似The package you are trying to install is only a placeholder project on PyPI.org repository.原因是nvidia-cudnn只是一个占位包不是实际的 CUDA 运行库。7.2 CUDA 13 对应包CUDA 13 应安装python -m pip install nvidia-cudnn-cu13 --extra-index-url https://pypi.nvidia.com如果稳定版本没有合适的包可以尝试python -m pip install --pre nvidia-cudnn-cu13 --extra-index-url https://pypi.nvidia.com验证python -m pip show nvidia-cudnn-cu13检查 DLLdir %CONDA_PREFIX%\Lib\site-packages\nvidia\cudnn /s /b常见 DLL 路径类似%CONDA_PREFIX%\Lib\site-packages\nvidia\cudnn\bin\cudnn64_9.dll8. 添加 NVIDIA DLL 搜索路径通过 pip 安装的 NVIDIA 库通常位于%CONDA_PREFIX%\Lib\site-packages\nvidia但 Windows 不一定会自动将这些目录加入 DLL 搜索路径。当前终端临时添加set PATH%CONDA_PREFIX%\Lib\site-packages\nvidia\cudnn\bin;%PATH% set PATH%CONDA_PREFIX%\Lib\site-packages\nvidia\cublas\bin;%PATH% set PATH%CONDA_PREFIX%\Lib\site-packages\nvidia\cuda_runtime\bin;%PATH%检查当前环境下所有 NVIDIA DLLdir %CONDA_PREFIX%\Lib\site-packages\nvidia /s /b | findstr /i \.dll$也可以分别检查where cudnn64_*.dll where cublas64_*.dll where cublasLt64_*.dll where cudart64_*.dll9. 使用 Python 自动加载 NVIDIA DLL 目录相比每次手动修改 PATH更稳定的方式是在 Python 启动阶段调用importos nvidia_rootos.path.join(os.environ[CONDA_PREFIX],Lib,site-packages,nvidia,)dll_dirs[os.path.join(nvidia_root,cudnn,bin),os.path.join(nvidia_root,cublas,bin),os.path.join(nvidia_root,cuda_runtime,bin),]fordll_dirindll_dirs:ifos.path.isdir(dll_dir):os.add_dll_directory(dll_dir)然后再导入 ONNX Runtimeimportonnxruntimeasort完整测试脚本importos nvidia_rootos.path.join(os.environ[CONDA_PREFIX],Lib,site-packages,nvidia,)dll_dirs[os.path.join(nvidia_root,cudnn,bin),os.path.join(nvidia_root,cublas,bin),os.path.join(nvidia_root,cuda_runtime,bin),]fordll_dirindll_dirs:ifos.path.isdir(dll_dir):os.add_dll_directory(dll_dir)print(fAdd DLL directory:{dll_dir})importonnxruntimeasortprint(ORT:,ort.__version__)print(Device:,ort.get_device())print(Providers:,ort.get_available_providers())10. 验证 ONNX Runtime CUDA Session仅检查 Provider 列表不够必须真正加载模型。测试模型python -c import onnxruntime as ort; print(ort.get_device()); print(ort.InferenceSession(rC:\Users\Lenovo\xanylabeling_data\models\groundingdino_swint_sam2_large-r20240806\groundingdino_swint_ogc_quant.onnx, providers[CUDAExecutionProvider,CPUExecutionProvider]).get_providers())成功输出应类似GPU [CUDAExecutionProvider, CPUExecutionProvider]也可以使用独立脚本importosimportonnxruntimeasort model_path(rC:\Users\XXX\xanylabeling_data\modelsr\groundingdino_swint_sam2_large-r20240806r\groundingdino_swint_ogc_quant.onnx)providers[CUDAExecutionProvider,CPUExecutionProvider,]sessionort.InferenceSession(model_path,providersproviders,)print(ORT version:,ort.__version__)print(Available providers:,ort.get_available_providers())print(Session providers:,session.get_providers())11. 常见报错分析11.1Error loading onnxruntime_providers_cuda.dll典型日志Error loading onnxruntime_providers_cuda.dll含义不是该 DLL 文件本身一定缺失而是它依赖的某个 DLL 加载失败。常见缺失项cudnn64_*.dll cublas64_*.dll cublasLt64_*.dll cudart64_*.dll解决思路检查 CUDA Runtime 是否存在。检查 cuDNN 是否存在。检查 cuBLAS 是否存在。确认 DLL 目录已进入 PATH。确认 ONNX Runtime、CUDA、cuDNN 主版本匹配。11.2 Provider 列表有 CUDA但推理仍然失败例如Providers: [TensorrtExecutionProvider, CUDAExecutionProvider, CPUExecutionProvider]但创建 Session 失败。原因get_available_providers()只说明 ONNX Runtime 包中注册了 CUDA Provider不代表其动态依赖已经完整加载。必须使用ort.InferenceSession(...)进行实际验证。11.3No module named pip报错来源nvidia-pyindex解决python -m pip install --upgrade pip setuptools wheel python -m pip install nvidia-pyindex --no-build-isolation11.4No module named appdirs解决python -m pip install appdirs python -m pip install nvidia-pyindex --no-build-isolation11.5nvidia-cudnn是 placeholder错误命令pip install nvidia-cudnn正确的 CUDA 13 包pip install nvidia-cudnn-cu1311.6 CUDA、cuDNN 与 ONNX Runtime 不匹配ONNX Runtime 对 cuDNN 主版本有严格要求。例如使用 cuDNN 8 构建的 ORT不能直接使用 cuDNN 9。 使用 cuDNN 9 构建的 ORT也不能使用 cuDNN 8。检查 ONNX Runtime 构建信息python -c import onnxruntime as ort; print(ort.get_build_info())检查已安装包python -m pip list | findstr /i onnxruntime nvidia cuda cudnn cublas tensorrt12. 推荐的最终安装顺序以下是本次环境的推荐流程。conda create -n x-anylabeling-cu13 python3.12 -y conda activate x-anylabeling-cu13 python -m pip install --upgrade pip setuptools wheel python -m pip install appdirs python -m pip install nvidia-pyindex --no-build-isolation python -m pip config set global.extra-index-url https://pypi.nvidia.com python -m pip install onnxruntime-gpu python -m pip install nvidia-cudnn-cu13 python -m pip install x-anylabeling为当前终端添加 DLL 路径set PATH%CONDA_PREFIX%\Lib\site-packages\nvidia\cudnn\bin;%PATH% set PATH%CONDA_PREFIX%\Lib\site-packages\nvidia\cublas\bin;%PATH% set PATH%CONDA_PREFIX%\Lib\site-packages\nvidia\cuda_runtime\bin;%PATH%验证python -c import onnxruntime as ort; print(ORT:, ort.__version__); print(Device:, ort.get_device()); print(Providers:, ort.get_available_providers())启动x-anylabeling