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

Google Compute Engine中Flask表格检测API的CUDA运行时错误求助

解决CUDA Runtime Error (48):算子不兼容问题

这个cuda runtime error (48)本质是编译好的CUDA自定义算子(比如你这里的roi_align)不支持当前GPU的计算架构,再加上你环境里的CUDA版本、PyTorch绑定的CUDA版本存在不一致,导致问题持续存在。咱们一步步来解决:

1. 统一PyTorch与CUDA环境版本

你当前的环境存在版本错位:

  • Docker容器基于nvidia/cuda:10.0-devel,但容器内的nvcc版本是10.1.243,而PyTorch是1.4.0+cu100(绑定CUDA 10.0)。这种错位会导致算子编译时用了高版本nvcc,却适配低版本CUDA的PyTorch,出现兼容问题。

解决方式二选一:

  • 方案A:对齐到CUDA 10.0:卸载容器内的nvcc 10.1,安装CUDA 10.0的nvcc工具包,保证nvcc --version输出10.0.x,和PyTorch的cu100匹配。
  • 方案B:切换到CUDA 10.1容器:把Docker基础镜像换成nvidia/cuda:10.1-devel,然后卸载当前PyTorch,安装对应CUDA 10.1版本的torch:
    pip uninstall torch torchvision -y
    pip install torch==1.4.0+cu101 torchvision==0.5.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
    

2. 重新编译MMDetection的自定义CUDA算子

错误里的roi_align_kernel.cu是MMDetection的自定义算子,这类算子是编译时绑定当前GPU架构的——你之前在Tesla K80(计算能力3.7)环境下编译的算子,换到Tesla T4(计算能力7.5)后完全不兼容。必须重新编译:

  • 先卸载现有MMDetection:
    pip uninstall mmdet -y
    
  • 进入MMDetection源码目录,指定T4的计算架构(sm_75)重新编译安装:
    CUDA_ARCH_LIST=7.5 pip install -e .
    
    这里的CUDA_ARCH_LIST=7.5会强制算子针对T4的架构编译,避免预编译包只兼容旧GPU的问题。

3. 验证环境一致性

完成上述步骤后,运行一段Python代码验证环境是否正确:

import torch
import mmdet

print("PyTorch CUDA版本:", torch.version.cuda)
print("NVCC版本:", torch.backends.cudnn.version())
print("GPU是否可用:", torch.cuda.is_available())
print("当前GPU:", torch.cuda.get_device_name(0))

确保输出的PyTorch CUDA版本和nvcc版本一致,且GPU显示为Tesla T4。

4. 检查Docker运行配置

最后确认你是用NVIDIA Docker运行容器的,命令应该类似:

nvidia-docker run -d --name your-api-container your-image
# 或者Docker 19.03+用
docker run -d --gpus all --name your-api-container your-image

如果没加--gpus all或者用普通docker命令运行,容器内无法正确访问GPU,也会触发类似的CUDA错误。

内容的提问来源于stack exchange,提问作者Wessel Ottevanger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:12:42