RuntimeError: CUDA error: device-side assert triggered

简介: 我在运行PyG和transformers代码时两次遇到了这一问题,在此加以记录。

1. 运行PyG时遇到的错误


运行环境,报错信息和查找到的错误内容:

Linux系统

Python 3.8(使用anaconda管理的虚拟环境)

PyTorch 1.11+cudatoolkit 10.2(通过anaconda下载)

torch-scatter 2.0.9

torch-sparse 0.6.14

pyg-nightly 2.1.0.dev20220815


报错形式是重复多行(其中具体数字可能会产生改变):


/opt/conda/conda-bld/pytorch_1646755853042/work/aten/src/ATen/native/cuda/Indexing.cu:703: indexSelectLargeIndex: block: [279,0,0], thread: [118,0,0] Assertion `srcIndex < srcSelectDimSize` failed.


最后给出的报错信息:


Traceback (most recent call last):
  File "try1.py", line 128, in <module>
    print(model(train_data.x_dict,train_data.edge_index_dict))
  File "env_path/lib/python3.8/site-packages/torch/fx/graph_module.py", line 630, in wrapped_call
    raise e.with_traceback(None)
RuntimeError: CUDA error: device-side assert triggered
1


这他娘的谁看得懂!


第一步的解决方案是把数据和模型从GPU上放到CPU上,然后再重新运行代码,就会给出正常的报错信息(而不是莫名其妙的信息)了。比如我的问题就是邻接矩阵(edge_index)中由于之前代码撰写的错误,出现了比节点数-1更大的索引:


Traceback (most recent call last):
  File "try1.py", line 146, in <module>
    print(model(train_data.x_dict,train_data.edge_index_dict))
  File "env_path/lib/python3.8/site-packages/torch/fx/graph_module.py", line 630, in wrapped_call
    raise e.with_traceback(None)
IndexError: index out of range in self


2. 运行transformers时遇到的错误


运行环境,报错信息和查找到的错误内容:

Linux系统

Python 3.8(使用anaconda管理的虚拟环境)

PyTorch 1.11+cudatoolkit 10.2(通过anaconda下载)

transformers 4.21.1


我是在使用AutoModelForSequenceClassification类,初始化的时候定义num_labels失误,导致数据中标签取值达到了这个数字,因此报错。

解决方式就是把num_labels改成正确的值。


报错信息:


Traceback (most recent call last):
  File "c1bert.py", line 109, in <module>
    optimizer.step()
  File "env_path/lib/python3.8/site-packages/torch/optim/lr_scheduler.py", line 65, in wrapper
    return wrapped(*args, **kwargs)
  File "env_path/lib/python3.8/site-packages/torch/optim/optimizer.py", line 88, in wrapper
    return func(*args, **kwargs)
  File "env_path/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "env_path/lib/python3.8/site-packages/torch/optim/adamw.py", line 145, in step
    F.adamw(params_with_grad,
  File "env_path/lib/python3.8/site-packages/torch/optim/_functional.py", line 155, in adamw
    param.addcdiv_(exp_avg, denom, value=-step_size)
RuntimeError: CUDA error: device-side assert triggered
CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
/opt/conda/conda-bld/pytorch_1646755853042/work/aten/src/ATen/native/cuda/Loss.cu:257: nll_loss_forward_reduce_cuda_kernel_2d: block: [0,0,0], thread: [4,0,0] Assertion `t >= 0 && t < n_classes` failed.


相关文章
|
IDE PyTorch 网络安全
|
1月前
|
机器学习/深度学习 并行计算 PyTorch
【已解决】RuntimeError: CUDA error: device-side assert triggeredCUDA kernel errors might be asynchronous
【已解决】RuntimeError: CUDA error: device-side assert triggeredCUDA kernel errors might be asynchronous
|
1月前
|
并行计算 PyTorch 算法框架/工具
【已解决】RuntimeError: CuDA error: no kernel image is available for execution on the device
【已解决】RuntimeError: CuDA error: no kernel image is available for execution on the device
|
1月前
|
Ubuntu iOS开发 MacOS
Could not enumerate video devices (or none found).解决办法
Could not enumerate video devices (or none found).解决办法
46 0
|
并行计算 PyTorch 算法框架/工具
RuntimeError: CUDA error (10): invalid device ordinal
造成这个错误的原因主要是本地只有一个 GPU (GPU:0),而程序中使用 GPUs:1。
336 0
|
机器学习/深度学习 PyTorch 算法框架/工具
解决RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cp
对应两种保存模型的方式,pytorch也有两种加载模型的方式。对应第一种保存方式,加载模型时通过torch.load(‘.pth’)直接初始化新的神经网络对象;对应第二种保存方式,需要首先导入对应的网络,再通过net.load_state_dict(torch.load(‘.pth’))完成模型参数的加载。
971 0
解决 RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR
解决 RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR
239 0
|
机器学习/深度学习 Windows
raise RuntimeError(‘Error(s) in loading state_dict for {}:\n\t{}‘.format( RuntimeError: Error(s)..报错
即load_state_dict(fsd,strict=False) 属性strict;当strict=True,要求预训练练权重层数的键值与新构建的模型中的权重层数名称完全吻合;
1305 0
|
计算机视觉
【在虚拟环境下完美解决】1698: error: (-215:Assertion failed) empty() in function cv::CascadeClassifier
首先我们要找到那个分类器所在的路径,我们可以在Cmd中直接输入【若是虚拟环境的话,则需要切换到对于虚拟环境中,再去查找对应的opencv版本与位置信息】
304 0
|
计算机视觉
【opencv】cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function ‘imshow‘
【opencv】cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function ‘imshow‘
687 0
【opencv】cv2.error: OpenCV(4.5.5) :-1: error: (-5:Bad argument) in function ‘imshow‘