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

训练自定义数据集YOLOv5报错:无有效cuDNN卷积运行算法

报错触发原因
  • 显存不足:当前命令设置输入分辨率640、batch size为16,若显卡显存≤6G,剩余显存无法支撑cuDNN完成卷积算法预校验与运算,就会抛出该错误,是该报错最高发的诱因。
  • 版本适配错位:PyTorch 1.11官方预编译版本最高适配CUDA 11.3,本地安装的CUDA 11.7与当前PyTorch版本不匹配,会导致cuDNN接口调用异常。
  • 数据/配置冲突:YOLOv5默认开启cudnn.benchmark模式,启动时会遍历所有可用卷积算法筛选最优执行方案,若自定义数据集中存在损坏、长宽比极端异常的图片,或自动锚框计算环节出错,会导致算法遍历流程中断触发报错。
解决方法(按优先级从高到低尝试)
  • 第一步:排查显存问题
    将训练命令中的--batch 16下调为--batch 4甚至--batch 2,优先跑通训练流程验证是否为显存导致。如果调低batch后可以正常启动,后续可根据显卡显存余量逐步上调batch数值,也可追加--cache ram参数将数据缓存到内存,降低显存占用。
    调整后的参考命令:
    python train.py --img 640 --batch 4 --epochs 3 --data D:\custom\data.yaml --weights yolov5s.pt
    
  • 第二步:修复版本适配问题
    二选一调整环境即可:
    • 将PyTorch升级到1.13及以上版本,匹配本地CUDA 11.7版本
    • 将本地CUDA版本降级到11.3,匹配当前安装的PyTorch 1.11版本
      保证PyTorch编译时依赖的CUDA版本和本地系统安装的CUDA大版本一致,即可解决接口不匹配问题。
  • 第三步:排查数据集与配置问题
    打开YOLOv5代码目录下的utils/torch_utils.py文件,找到cudnn.benchmark = True配置项,修改为cudnn.benchmark = False,同时在训练命令中追加--noautoanchor参数先跑1个epoch。如果可以正常启动,说明自定义数据集中存在损坏、格式异常的图片,逐张排查剔除异常文件后再恢复默认配置训练即可。
  • 兜底临时方案
    如果以上操作都无法解决,可以在训练脚本train.py的最开头添加两行代码临时禁用cuDNN:
    import torch
    torch.backends.cudnn.enabled = False
    
    注意:该方案会导致训练速度下降30%左右,仅适合临时验证流程使用,不建议正式长时间训练时开启。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:09:14