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.


相关文章
|
机器学习/深度学习 测试技术 定位技术
YOLOPoint开源 | 新年YOLO依然坚挺,通过结合YOLOv5&SuperPoint,成就多任务SOTA
YOLOPoint开源 | 新年YOLO依然坚挺,通过结合YOLOv5&SuperPoint,成就多任务SOTA
368 0
|
算法 数据库 计算机视觉
Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
YOLOv5改进 | Neck篇 | 2024.1最新MFDS-DETR的HS-FPN改进特征融合层(轻量化Neck、全网独家首发)
YOLOv5改进 | Neck篇 | 2024.1最新MFDS-DETR的HS-FPN改进特征融合层(轻量化Neck、全网独家首发)
957 4
|
7月前
|
人工智能 监控 安全
管理和调度Dify工作流
Dify是一款开源的大模型应用开发平台,支持通过可视化界面快速构建AI Agent和工作流。然而,Dify本身缺乏定时调度与监控报警功能,且执行记录过多可能影响性能。为解决这些问题,可采用Dify Schedule或XXL-JOB集成Dify工作流。Dify Schedule基于GitHub Actions实现定时调度,但仅支持公网部署、调度延时较大且配置复杂。相比之下,XXL-JOB提供秒级调度、内网安全防护、限流控制及企业级报警等优势,更适合大规模、高精度的调度需求。两者对比显示,XXL-JOB在功能性和易用性上更具竞争力。
2422 63
管理和调度Dify工作流
|
机器学习/深度学习 并行计算 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
10557 2
|
Android开发
AS错误:Duplicate class kotlin.xxx.jdk8.DurationConversionsJDK8Kt found in modules kotlin-stdlib-1.8.22
本文描述了Android Studio中遇到的"Duplicate class found in modules"错误的解决方法,通过在`app/build.gradle`文件中使用`constraints`来排除过时的kotlin-stdlib-jdk7和kotlin-stdlib-jdk8依赖,解决了依赖冲突问题。
1215 1
|
机器学习/深度学习 人工智能 自然语言处理
首家!瓴羊完成信通院“基于大模型的智能客服”评估!
首家!瓴羊完成信通院“基于大模型的智能客服”评估!
631 1
|
人工智能 自然语言处理 物联网
llama factory 从数据集起步 跑通 qwen系列开源生成式大模型 微调
`dataset_info.json` 文件用于管理 llama factory 中的所有数据集,支持 `alpaca` 和 `sharegpt` 格式。通过配置此文件,可以轻松添加自定义数据集。数据集的相关参数包括数据源地址、数据集格式、样本数量等,支持 Hugging Face 和 ModelScope 两个平台的数据集仓库。针对不同格式的数据集,提供了详细的配置示例,如 `alpaca` 格式的指令监督微调数据集、偏好数据集等,以及 `sharegpt` 格式的多模态数据集等。今天我们通过自定义数据集的方式来进行qwen2.5_14B_instruct模型进行微调
6038 7
|
机器学习/深度学习 人工智能 搜索推荐
"从万能钥匙到私人定制:揭秘大模型私有化垂直技术如何引领各行各业走向专属智能新时代"
【10月更文挑战第17天】随着AI技术的发展,大型语言模型在各领域的应用日益广泛,但面对特定行业需求时,通用模型常显不足。大模型私有化垂直技术通过在私有环境中部署并结合行业数据,实现模型定制化,提升服务精准度与效率。例如,“健康守护者”利用该技术提供个性化健康管理,“金融智囊团”则提供定制化投资建议。未来,私有化大模型将在更多领域发挥关键作用。
257 2