【debug】mmseg工程训练报错:CUDA kernel errors might be asynchronously reported at some other API call ...

🚀Debug专栏

        其他debug记录请参考上方【debug专栏】


目录

🚀Debug专栏

🍀🍀背景

🔔🔔详细报错

🍭🍭原因分析

🌻🌻解决步骤

1.报错详细信息定位

2.可能报错1:num_class设置不对

3.可能报错2:模型输出尺寸不对

🌷🌷总结

整理不易,欢迎一键三连!!!

送你们一条美丽的--分割线--


🍀🍀背景

        训练mmesg工程,报错CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.

🔔🔔详细报错

CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.

🍭🍭原因分析

        报错说是CUDA 内核错误,翻译过来是:可能会在其他一些 API 调用中异步报告,因此下面的堆栈跟踪可能不正确。

🌻🌻解决步骤

        那既然是报错说CUDA在其他地方有被占用的情况,那就先关闭其他程序中的cuda占用,再执行。

1.报错详细信息定位

        首先这种模糊的报错信息难以定位到是什么具体的报错代码位置,所以我们要打印更详细的报错说明,找到报错的代码位置。给代码开始位置添加一下两行:

import os
os.environ['CUDA_LAUNCH_BLOCKING'] = '1'

        这时候报错会定位到实际位置,大家对症下药解决即可。

2.可能报错1:num_class设置不对

        检查自己的数据集label对应的值是否有超过num_class的值,比如num_class=3的数据集,label应该为[0,1,2],不应该出现除这三个值以外的值。 

3.可能报错2:模型输出尺寸不对

        通常模型的输入尺寸为3是不会变的,但是输出尺寸的channel应该为num_class的大小,因此,此处是最容易忘记改的,本人就是。。。

        记得将模型的out_channel改为num_class!!!

🌷🌷总结

        一般python代码的报错还是比较人性化,翻译过来就能知道大概的报错原因,如果报错原因比较模糊,难以定位的话,可以尝试通过在主函数第一行增加代码os.environ['CUDA_LAUNCH_BLOCKING'] = '1'来打印详细的报错信息,然后再根据详细报错进行定位代码修改。

        这次的经验告诉我们CUDA kernel errors的报错大概率是因为out_channel和num_class不对应

整理不易,欢迎一键三连!!!

送你们一条美丽的--分割线--


🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷

  • 28
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zy_destiny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值