当前位置: 首页 > news >正文

Torch MMCV 深度学习模型报错原因及解决方法汇总(长期更新)

本人做的研究基于Pytorch和MMCV,由于深度学习模型的复杂性,在研究过程中经常会遇到各种各样的报错,有时候一个笔误就有可能导致一长串错误,对本人的学习和研究造成很大困扰。因此,我在这里列出自己遇到过的报错以及它们的解决方法,方便自己查阅,也希望能帮到大家。

前言

深度学习模型涉及到的依赖和包非常多,报错经常会是一大串,因此,在查看错误信息的时候一定要冷静。我的建议是,直接翻到最上方,查看第一个报错的位置,那里通常是错误的根源(后续会举个例子)。

1. Assertion `srcIndex < srcSelectDimSize` failed

C:\w\b\windows\pytorch\aten\src\ATen\native\cuda\Indexing.cu:646: block: [0,0,0], thread: [64,0,0] Assertion `srcIndex < srcSelectDimSize` failed. C:\w\b\windows\pytorch\aten\src\ATen\native\cuda\Indexing.cu:646: block: [0,0,0], thread: [65,0,0] Assertion `srcIndex < srcSelectDimSize` failed. C:\w\b\windows\pytorch\aten\src\ATen\native\cuda\Indexing.cu:646: block: [0,0,0], thread: [66,0,0] Assertion `srcIndex < srcSelectDimSize` failed. C:\w\b\windows\pytorch\aten\src\ATen\native\cuda\Indexing.cu:646: block: [0,0,0], thread: [67,0,0] Assertion `srcIndex < srcSelectDimSize` failed. C:\w\b\windows\pytorch\aten\src\ATen\native\cuda\Indexing.cu:646: block: [0,0,0], thread: [68,0,0] Assertion `srcIndex < srcSelectDimSize` failed. C:\w\b\windows\pytorch\aten\src\ATen\native\cuda\Indexing.cu:646: block: [0,0,0], thread: [69,0,0] Assertion `srcIndex < srcSelectDimSize` failed.

我在运行基于mmcv的目标检测模型中遇到了这个错误,错误的原因是使用自己的数据集训练模型时未更改类别数,导致模型运行时的类别数和标签给出的类别数不匹配。解决方法也很简单,修改配置文件:

num_classes = 20

2. 分布式训练中的 torch.distributed.elastic.multiprocessing. errors.ChildFailedError 问题

第一次尝试分布式训练,确实很快,也很容易遇到问题,报错信息如下:

RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one. This error indicates that your module has parameters that were not used in producing loss. You can enable unused parameter detection by passing the keyword argument `find_unused_parameters=True` to `torch.nn.parallel.DistributedDataParallel`, and by making sure all `forward` function outputs participate in calculating loss. If you already have done the above, then the distributed data parallel module wasn't able to locate the output tensors in the return value of your module's `forward` function. Please include the loss function and the structure of the return value of `forward` of your module when reporting this issue (e.g. list, dict, iterable).

错误的原因是在模型中创建的网络层没有被用到,导致没有参与参数更新,解决方法是,在执行命令前加上 TORCH_DISTRIBUTED_DEBUG=INFO ,例如:

TORCH_DISTRIBUTED_DEBUG=INFO bash tools/dist_train.sh

用这样的命令执行之后,仍然会报错,但同时会打印出没有参与更新的网络层参数:

Parameters which did not receive grad for rank 1: rpn_head.density_scorer.weight, rpn_head.density_scorer.bias, rpn_head.CCM.conv1.weight, rpn_head.CCM.conv1.bias, rpn_head.CCM.ccm.0.weight, rpn_head.CCM.ccm.0.bias, rpn_head.CCM.ccm.2.weight, rpn_head.CCM.ccm.2.bias, rpn_head.CCM.ccm.4.weight, rpn_head.CCM.ccm.4.bias, rpn_head.CCM.ccm.6.weight, rpn_head.CCM.ccm.6.bias, rpn_head.CCM.ccm.8.weight, rpn_head.CCM.ccm.8.bias, rpn_head.CCM.ccm.10.weight, rpn_head.CCM.ccm.10.bias, rpn_head.CCM.linear.weight, rpn_head.CCM.linear.bias

照着参数找到对应的代码行,直接删掉或者注释掉即可。

http://www.jsqmd.com/news/696750/

相关文章:

  • 实战部署:在云服务器上快速搭建与运行主流大模型
  • WeDLM-7B-Base算力优化案例:单卡24GB实现32K上下文稳定推理的配置
  • Java转Agent,我替你踩所有坑
  • 企业微信智能机器人一键对接OpenClaw教程
  • WrenAI:基于语义层的自然语言数据查询引擎设计与实践
  • 研发leader如何增强自身在外部就业市场的竞争力
  • NiCE5340 SoM模块:高集成度嵌入式系统开发解析
  • GVHMR
  • 如何快速实现手机号码地理位置定位:ASP.NET解决方案实战指南
  • YOLOv11改进系列 | 原创C3k2_ConvFormerCGLU模块,SepConv Token混合叠加卷积门控FFN,特征表达更强
  • 阿里二面:RAG 检索优化策略有哪些?
  • 告别卡顿!用这个Vue3+TS移动端Table组件,轻松渲染1000条数据
  • Phi-3.5-Mini-Instruct 工业视觉应用:与传统OpenCV算法结合实践
  • linux: 银河麒麟v10安装mysql8
  • NotaGen快速部署:一键启动WebUI,5分钟开始音乐创作之旅
  • 【SQL】SQL同环比计算的多种实现方式
  • Ostrakon-VL 扫描终端 C 语言接口封装实践:为传统应用注入视觉 AI 能力
  • 别再乱加120Ω电阻了!手把手教你根据通信距离和速度,为RS485/CAN总线配置正确的端接
  • 2026年3月真空浸糖机生产厂家推荐,毛辊清洗机/重量分选机/清洗蒸煮杀青设备/真空油炸机,真空浸糖机厂商哪家好 - 品牌推荐师
  • linux: 麒麟v10 yum安装php
  • Nordic nRF7001 WiFi 6伴生芯片解析与低功耗IoT应用
  • 基于eBPF的容器运行时安全监控:Foniod实战部署与策略指南
  • C语言中指针的重要性及其知识梳理
  • 告别截图!手把手教你用Mermaid.js在个人博客里画可交互流程图(附国内CDN)
  • 量子计算演进:从NISQ到FTQC的技术挑战与突破
  • flask:sqlalchemy:upgrade报错:Invalid use of NULL value
  • linux:银河麒麟服务器版安装python
  • PyQt5 QThread实战:告别界面卡顿,构建响应式GUI应用
  • LSTM在多元时间序列预测中的实战应用
  • 炉石传说终极插件指南:HsMod 完全配置手册