You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DeepCAD-RT在Windows下GPU未利用及多进程报错求助

问题解决:DeepCAD-RT在Windows下GPU未利用及多进程报错处理

问题背景

我正在使用预训练的图像/视频去噪深度学习模型DeepCAD-RT,该模型本应借助CUDA利用GPU运行,但在Windows系统(官方未明确支持)上运行时出现多类报错,且GPU使用率仅约0.7%,主要占用RAM(40%)。具体报错及操作如下:

  • 首次运行:报numpy.core._exceptions._ArrayMemoryError(无法分配12.5GiB内存)
  • 第二次未修改代码:报RuntimeError(多进程启动时机错误)
  • 第三次添加multiprocessing.freeze_support()后:报UnpicklingError

设备配置:Windows系统,Intel核显+NVIDIA CUDA 11.1 GPU


一、GPU未正常利用问题排查与修复

1. 强制指定CUDA设备

Windows下可能默认调用Intel核显,需在代码开头显式指定使用NVIDIA GPU:

import torch
# 强制使用第0块GPU,多GPU环境可按需调整序号
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
# 将模型和输入数据都迁移到GPU
model = model.to(device)
input_data = input_data.to(device)

同时检查环境变量:确保CUDA_PATH指向11.1版本安装目录,且系统PATH包含CUDA_PATH\bin和CUDA_PATH\libnvvp。

2. 降低数据负载解决内存不足

首次报错的内存溢出,是因为输入数据量过大导致RAM过载,且模型未加载到GPU。调整测试代码:

  • 修改demo_test_pipeline.py中的batch_size参数,从默认值改为1或更小
  • 对输入图像/视频进行降采样,减少单帧数据量:
import cv2
# 将输入帧缩小至原尺寸的50%,可按需调整比例
frame = cv2.resize(frame, (frame.shape[1]//2, frame.shape[0]//2))

3. 验证CUDA与PyTorch兼容性

在代码开头添加验证逻辑,确认PyTorch是否正确识别CUDA:

print("CUDA可用状态:", torch.cuda.is_available())
print("GPU名称:", torch.cuda.get_device_name(0) if torch.cuda.is_available() else "未检测到GPU")

若输出CUDA可用状态: False,需重新安装对应CUDA版本的PyTorch(CUDA 11.1适配PyTorch 1.8.0~1.10.0版本,执行以下命令安装):

pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html

二、多进程报错修复

1. 规范多进程启动逻辑

Windows系统多进程启动机制与Linux不同,需严格按以下结构修改demo_test_pipeline.py:

import multiprocessing
# 必须放在所有导入和业务逻辑之前
multiprocessing.freeze_support()

import torch
import cv2
# 其他依赖导入...

def main():
    # 原有的模型加载、数据处理等主逻辑
    pass

if __name__ == '__main__':
    main()

2. 替换多进程为多线程(临时兼容方案)

若多进程问题仍无法解决,可将模型中的多进程逻辑替换为多线程(Windows下多线程稳定性更高):

# 用线程池替换多进程池
from multiprocessing.pool import ThreadPool
# 线程数根据CPU核心数调整,避免过载
pool = ThreadPool(processes=4)
# 后续调用逻辑保持不变

3. 解决UnpicklingError报错

该错误源于多进程间无法正确序列化模型或数据,可尝试两种方案:

  • 确保模型在主进程中加载完成后,再传入子进程处理,而非在子进程内加载模型
  • 启用PyTorch多进程共享内存:
torch.multiprocessing.set_start_method('spawn', force=True)

三、Windows系统适配补充

由于官方未明确支持Windows,可尝试额外调整:

  • 临时禁用Windows Defender实时保护,避免其拦截进程通信
  • 以管理员身份运行Python脚本,确保进程有足够权限调用GPU资源
  • 检查NVIDIA驱动版本,确保与CUDA 11.1兼容(推荐驱动版本455.23及以上)

内容的提问来源于stack exchange,提问作者Victor Sonego

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:52:34