PyTorch 与 PaddlePaddle GPU 冲突导致 `_CudaDeviceProperties is already registered` 问题解决方案

发布时间:2026/7/31 8:56:40
PyTorch 与 PaddlePaddle GPU 冲突导致 `_CudaDeviceProperties is already registered` 问题解决方案 一、问题背景在开发工业视觉检测软件过程中项目集成了多个 AI 模块YOLO目标检测OCR文字识别OpenCV图像处理PySide6界面框架项目架构工业视觉软件 | | AlgorithmEngine | ┌──────┴────────┐ | | YOLO检测 OCR识别 | | PyTorch PaddleOCR GPU GPU/CPU启动程序时出现异常RuntimeError: generic_type: type _CudaDeviceProperties is already registered!导致fromultralyticsimportYOLO无法正常导入程序启动失败。二、错误现象完整错误packages\ultralytics\utils\__init__.py, line 26, in module import torch File C:\Users\admin\miniconda3\envs\pyside6\lib\site-packages\torch\__init__.py, line 218, in module from torch._C import * RuntimeError: generic_type: type _CudaDeviceProperties is already registered!调用流程main.py | | MainFunction.py | | AiTrain_Win.py | | from ultralytics import YOLO | | import torch | | torch._C加载失败 | | 程序异常退出三、运行环境Python版本Python 3.9显卡环境GPU: Tesla P4 Driver: 560.94 CUDA: 12.6注意nvidia-smi显示的CUDA版本代表驱动支持版本并不代表Python环境实际使用的CUDA版本。PyTorch环境torch 1.13.1cu116 torchvision 0.14.1cu116 torchaudio 0.13.1cu116CUDACUDA 11.6YOLO环境ultralytics 8.4.95OCR环境PaddleOCR PaddlePaddle GPU四、问题分析1. 错误表象错误发生位置fromultralyticsimportYOLO看起来像YOLO版本问题PyTorch安装问题模型文件问题但是实际并不是。2. 深层原因项目同时使用PyTorch GPU和PaddlePaddle GPU两个框架都会加载CUDA Runtime cuDNN CUDA相关动态库加载关系CUDA Runtime | ┌─────────┴─────────┐ | | PyTorch PaddlePaddle | | torch._C paddle CUDA模块 | | _CudaDeviceProperties注册Windows环境下多个CUDA框架同时初始化时可能发生冲突。最终导致_CudaDeviceProperties重复注册。错误generic_type: type _CudaDeviceProperties is already registered本质CUDA运行环境初始化冲突而不是YOLO代码错误。五、问题排查过程1. 检查PyTorch执行pip list|findstr torch结果torch 1.13.1cu116 torchvision 0.14.1cu116 torchaudio 0.13.1cu116PyTorch安装正常。2. 检查YOLO版本执行pip show ultralytics结果Version: 8.4.95Ultralytics安装正常。3. 尝试降低Ultralytics版本尝试ultralytics 8.4.x ↓ ultralytics 8.3.x ↓ ultralytics 8.0.x但是问题仍然存在。说明问题不是单纯Ultralytics版本导致。4. 检查Paddle环境发现同时安装paddlepaddle-gpu和torch CUDA两个GPU框架同时占用CUDA。最终定位PaddlePaddle GPU PyTorch GPU ↓ CUDA初始化冲突六、解决方案方案PaddlePaddle改CPU版本项目实际情况YOLO检测频率高计算量大需要GPUOCR调用频率低单次识别耗时可接受因此调整YOLO ↓ PyTorch GPU OCR ↓ PaddleOCR CPU七、具体操作1. 卸载Paddle GPU执行pip uninstall paddlepaddle-gpu-y检查pip list|findstr paddle不要存在paddlepaddle-gpu2. 安装CPU版本Paddle执行pipinstallpaddlepaddle2.6.1验证importpaddleprint(paddle.__version__)print(paddle.device.get_device())输出2.6.1 cpu八、最终稳定环境Python 3.10 PyTorch torch 1.13.1cu116 torchvision 0.14.1cu116 torchaudio 0.13.1cu116 YOLO ultralytics 8.4.95 OCR paddleocr 2.7.3 paddlepaddle 2.6.1 CPU OpenCV opencv-python九、最终运行架构工业视觉软件 | AlgorithmEngine / \ YOLO检测 OCR识别 | | PyTorch PaddleOCR | | CUDA GPU CPU | | 高性能检测 稳定识别十、总结错误RuntimeError: generic_type: type _CudaDeviceProperties is already registered原因不是YOLO模型错误torch版本错误ultralytics代码错误真正原因PyTorch GPU 与 PaddlePaddle GPU 在Windows环境下同时初始化CUDA组件产生冲突。解决方法保留主要计算框架GPU辅助算法使用CPU避免多个深度学习框架同时占用CUDA Runtime对于工业视觉项目YOLO GPU OCR CPU是一种更加稳定、更容易部署和维护的方案。