PyTorch 与 PaddlePaddle GPU 冲突导致 `_CudaDeviceProperties is already registered` 问题解决方案
2026/7/31 8:56:10 网站建设 项目流程

一、问题背景

在开发工业视觉检测软件过程中,项目集成了多个 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.1+cu116 torchvision 0.14.1+cu116 torchaudio 0.13.1+cu116

CUDA:

CUDA 11.6

YOLO环境

ultralytics 8.4.95

OCR环境

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.1+cu116 torchvision 0.14.1+cu116 torchaudio 0.13.1+cu116

PyTorch安装正常。


2. 检查YOLO版本

执行:

pip show ultralytics

结果:

Version: 8.4.95

Ultralytics安装正常。


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:

  • 检测频率高
  • 计算量大
  • 需要GPU

OCR:

  • 调用频率低
  • 单次识别耗时可接受

因此调整:

YOLO ↓ PyTorch GPU OCR ↓ PaddleOCR CPU

七、具体操作

1. 卸载Paddle GPU

执行:

pip uninstall paddlepaddle-gpu-y

检查:

pip list|findstr paddle

不要存在:

paddlepaddle-gpu

2. 安装CPU版本Paddle

执行:

pipinstallpaddlepaddle==2.6.1

验证:

importpaddleprint(paddle.__version__)print(paddle.device.get_device())

输出:

2.6.1 cpu

八、最终稳定环境

Python 3.10 PyTorch torch 1.13.1+cu116 torchvision 0.14.1+cu116 torchaudio 0.13.1+cu116 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组件产生冲突。

解决方法:

  1. 保留主要计算框架GPU
  2. 辅助算法使用CPU
  3. 避免多个深度学习框架同时占用CUDA Runtime

对于工业视觉项目:

YOLO GPU + OCR CPU

是一种更加稳定、更容易部署和维护的方案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询