RuntimeError: cuda runtime error (59) : device-side assert triggered
2494 단어 Pytorch
프로그램을 실행할 때 이 문제를 발견했습니다
Traceback (most recent call last): File "train_pytorch1.py", line 217, in loss = F.cross_entropy(output, target) File "/usr/local/python3/lib/python3.5/site-packages/torch/nn/functional.py", line 1970, in cross_entropy return nll_loss(log_softmax(input, 1), target, weight, None, ignore_index, None, reduction) File "/usr/local/python3/lib/python3.5/site-packages/torch/nn/functional.py", line 1790, in nll_loss ret = torch._C._nn.nll_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index) RuntimeError: cuda runtime error (59) : device-side assert triggered at/pytorch/aten/src/THCUNN/generic/ClassNLLCriterion.cu:111
이 이상은 아마 계산 손실치와 관련이 있을 것이다
자료를 조회할 때 많은 친구들이 이런 cudaruntime error(59)를 만났는데 대부분이 색인 이상이다
이 게시물의 한 Pytorch Dev에 따르면 cuda의 비동기성 때문에 단언은 단언이 어디서 촉발되는지 가리키는 완전한 정확한 창고 추적을 가리키지 않을 수 있습니다.
프로그램이 모듈을 가져오기 전에 다음 문장을 추가하면 더 많은 세부 사항을 출력할 수 있습니다
import os
os.environ['CUDA_LAUNCH_BLOCKING'] = "1"
예외 출력은 다음과 같습니다.
/pytorch/aten/src/THCUNN/ClassNLLCriterion.cu:105: void cunn_ClassNLLCriterion_updateOutput_kernel(Dtype *, Dtype *, Dtype *, long *, Dtype *, int, int, int, int, long) [with Dtype = float, Acctype = float]: block: [0,0,0], thread: [6,0,0] Assertion `t >= 0 && t < n_classes` failed. THCudaCheck FAIL file=/pytorch/aten/src/THCUNN/generic/ClassNLLCriterion.cu line=111 error=59 : device-side assert triggered Traceback (most recent call last): File "train_pytorch1.py", line 217, in loss = F.cross_entropy(output, target) File "/usr/local/python3/lib/python3.5/site-packages/torch/nn/functional.py", line 1970, in cross_entropy return nll_loss(log_softmax(input, 1), target, weight, None, ignore_index, None, reduction) File "/usr/local/python3/lib/python3.5/site-packages/torch/nn/functional.py", line 1790, in nll_loss ret = torch._C._nn.nll_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index) RuntimeError: cuda runtime error (59) : device-side assert triggered at/pytorch/aten/src/THCUNN/generic/ClassNLLCriterion.cu:111
인쇄된 정보에 의하면 label의 인덱스에 문제가 있는 것으로 추정된다.
그래서 데이터를 읽는 label을 출력했는데 과연 문제가 생겼어요.
정확한 인덱스는 0~44이고 프로그램에서 읽는 것은 1~45이다.label을 수정하면 프로그램이 정상적으로 실행됩니다.
CUDA 단언 디버깅에 관해서는 블로그를 추천합니다. 개인적으로 설명이 비교적 명확하다고 생각합니다.Debugging CUDA device-side assert in PyTorch
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pytorch에서 shuffle을 사용하여 데이터를 흐트러뜨리는 작업우선 내가 너에게 한 가지 알려줘야 할 것은 바로pytorch의tensor이다. 만약에random을 직접 사용한다면.shuffle는 데이터를 흐트러뜨리거나 아래의 방식을 사용하여 직접 쓰기를 정의합니다. 그러면 혼란...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.