解决RuntimeError: CUDA error: an illegal memory access was encountered问题

在使用PyTorch进行深度学习,特别是多GPU训练transformers模型时,遇到RuntimeError: CUDA error: an illegal memory access was encountered。经过排查,发现不是tensor未分配到GPU导致,而是由于batchsize过大,内存占用过多引起的。减小batchsize可以避免该错误。
部署运行你感兴趣的模型镜像

用pytorch在多卡训练transformers的时候出现了以下问题:

RuntimeError: CUDA error: an illegal memory access was encountered
terminate called after throwing an instance of 'c10::Error'
  what():  CUDA error: an illegal memory access was encountered
Exception raised from create_event_internal at /pytorch/c10/cuda/CUDACachingAllocator.cpp:687 (most recent call first):
frame #0: c10::Error::Error(c10::SourceLocation, std::string) + 0x42 (0x7f7b645511e2 in /usr/local/lib/python3.6/dist-packages/torch/lib/libc10.so)
frame #1: c10::cuda::CUDACachingAllocator::raw_delete(void*) + 0xad2 (0x7f7b6479ff92 in /usr/local/lib/python3.6/dist-packages/torch/lib/libc10_cuda.so)
frame #2: c10::TensorImpl::release_resources() + 0x4d (0x7f7b6453f9cd in /usr/local/lib/python3.6/dist-packages/torch/lib/libc10.so)
frame #3: <unknown function> + 0x540ae2 (0x7f7bb00d7ae2 in /usr/local/lib/python3.6/dist-packages/torch/lib/libtorch_python.so)
frame #4: <unknown function> + 0x540b86 (0x7f7bb00d7b86 in /usr/local/lib/python3.6/dist-packages/torch/lib/libtorch_python.so)
frame #5: /usr/bin/python() [0x554316]
frame #6: /usr/bin/python() [0x585d2c]
frame #7: /usr/bin/python() [0x585d2c]
frame #8: /usr/bin/python() [0x573087]
frame #9: /usr/bin/python() [0x5542f2]
frame #10: /usr/bin/python() [0x586108]
frame #11: /usr/bin/python() [0x5aa838]
frame #12: /usr/bin/python() [0x5aa84e]
frame #13: /usr/bin/python() [0x5aa84e]
frame #14: /usr/bin/python() [0x56e336]
frame #15: PyDict_SetItemString + 0x156 (0x575256 in /usr/bin/python)
frame #16: PyImport_Cleanup + 0x76 (0x4ed566 in /usr/bin/python)
frame #17: Py_FinalizeEx + 0x5e (0x637efe in /usr/bin/python)
frame #18: Py_Main + 0x37e (0x638f5e in /usr/bin/python)
frame #19: main + 0xe0 (0x4a6f10 in /usr/bin/python)
frame #20: __libc_start_main + 0xe7 (0x7f7bb3412b97 in /lib/x86_64-linux-gnu/libc.so.6)
frame #21: _start + 0x2a (0x5afa0a in /usr/bin/python)

主要的错误似乎就是内存非法访问,但是检查了一遍不存在tensor没有分配到GPU上的问题。所以试了一下减小batchsize,就解决了这个问题。

所以可能是占用内存过多导致的内存非法访问,但是却没有报out of memory.

您可能感兴趣的与本文相关的镜像

PyTorch 2.9

PyTorch 2.9

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

今儿学习了没

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

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

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

打赏作者

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

抵扣说明:

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

余额充值