You need to enable JavaScript to run this app. Colab跑PyTorch训练找不到ipykernel_launcher.py仍报nonzero弃用警告致卡顿
优惠活动
大模型
产品
解决方案
定价
更多

Colab跑PyTorch训练找不到ipykernel_launcher.py仍报nonzero弃用警告致卡顿

问题根因
  • ipykernel_launcher.py是Colab Jupyter内核的系统级启动脚本,存放在系统Python的site-packages目录下,不属于用户工作目录,检索不到属于正常情况,无需修改该文件。
  • 警告堆栈显示该文件第7行触发问题,是Python警告的上下文归并机制导致的误报:实际触发源是代码(或依赖库)中调用了PyTorch无参版nonzero()方法,该重载已在PyTorch 1.9+版本中弃用。
  • 该警告本身为UserWarning,不会直接导致训练停滞;训练卡顿通常是触发该旧API的代码逻辑(如正样本匹配、NMS过滤、mAP计算)在Colab旧环境(Python3.6 + 低版本PyTorch)下存在兼容问题,包括GPU/CPU张量反复同步、内存泄漏、逻辑死循环等。
解决步骤

1. 过滤误导性警告

在所有代码最开头(导入PyTorch前)添加过滤规则,避免被错误堆栈干扰:

import warnings
warnings.filterwarnings("ignore", category=UserWarning, module="torch")

2. 修复弃用API

全局检索自定义代码、工具函数(如map_eval、损失函数的正样本匹配逻辑)中的.nonzero()调用,替换为显式参数写法:

  • 旧写法(触发警告):mask.nonzero()
  • 新写法(兼容全版本PyTorch):mask.nonzero(as_tuple=False) 或 torch.nonzero(mask, as_tuple=False)
    如果是torchvision等第三方库旧版本触发,执行版本升级:
!pip install torchvision==0.13.0

3. 排查训练停滞的真实诱因

  • 对触发nonzero调用的步骤单独打印张量的设备、形状,确认不存在GPU张量强制转CPU numpy的同步阻塞问题。
  • 调整数据加载器参数,减少数据加载等待时间:
# 替换原有数据加载器初始化代码
train_loader = DataLoader(
    train_dataset,
    batch_size=BATCH_SIZE,
    shuffle=True,
    num_workers=2,
    pin_memory=True
)

4. 适配Colab运行环境

Colab默认的Python3.6已停止维护,可切换高版本环境或安装兼容的PyTorch版本:

!pip install torch==1.12.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 22:36:03