RuntimeError: CUDA error: device-side assert triggered
Traceback (most recent call last):
File "main.py", line 70, in <module>
trainer.train()
File "C:\Users\roytravel\anaconda3\envs\kochat\lib\site-packages\transformers\trainer.py", line 463, in train
tr_loss += self._training_step(model, inputs, optimizer)
File "C:\Users\roytravel\anaconda3\envs\kochat\lib\site-packages\transformers\trainer.py", line 580, in _training_step
outputs = model(**inputs)
File "C:\Users\roytravel\anaconda3\envs\kochat\lib\site-packages\torch\nn\modules\module.py", line 1051, in _call_impl
return forward_call(*input, **kwargs)
File "C:\Users\roytravel\anaconda3\envs\kochat\lib\site-packages\transformers\modeling_bert.py", line 1284, in forward
loss = loss_fct(logits.view(-1, self.num_labels), labels.view(-1))
File "C:\Users\roytravel\anaconda3\envs\kochat\lib\site-packages\torch\nn\modules\module.py", line 1051, in _call_impl
return forward_call(*input, **kwargs)
File "C:\Users\roytravel\anaconda3\envs\kochat\lib\site-packages\torch\nn\modules\loss.py", line 1121, in forward
ignore_index=self.ignore_index, reduction=self.reduction)
File "C:\Users\roytravel\anaconda3\envs\kochat\lib\site-packages\torch\nn\functional.py", line 2824, in cross_entropy
return torch._C._nn.cross_entropy_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index)
RuntimeError: CUDA error: device-side assert triggered
에러를 해결하는 과정에서 pytorch 버전 변경, cuda 버전 변경, 환경변수 설정 등을 잘해주라는 답변으로 인해 시간을 다소 낭비했다. 나의 경우는 pre-trained 모델 로딩할 때 매개변수로 num_labels를 입력해주어야 한다는 것을 알지 못해 발생한 문제였다. 아래와 같이 데이터셋의 라벨 개수와 맞도록 입력해주면 된다.
model = BertForSequenceClassification.from_pretrained(MODEL_NAME, num_labels=4).to(device)
(만약 위와 같이 num_labels를 설정해주어도 에러가 발생한다면 라벨의 인덱스를 확인해 0부터 시작하는지 확인해야 한다. 1부터 시작하도록 설정했더니 위와 같은 에러가 또 발생했었음)
다음은 위 에러를 조우하기 전 발생했던 에러다.
RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)`
Traceback (most recent call last):
File "main.py", line 65, in <module>
trainer.train()
File "C:\Users\roytravel\anaconda3\envs\kochat\lib\site-packages\transformers\trainer.py", line 463, in train
tr_loss += self._training_step(model, inputs, optimizer)
File "C:\Users\roytravel\anaconda3\envs\kochat\lib\site-packages\transformers\trainer.py", line 592, in _training_step
loss.backward()
File "C:\Users\roytravel\anaconda3\envs\kochat\lib\site-packages\torch\_tensor.py", line 255, in backward
torch.autograd.backward(self, gradient, retain_graph, create_graph, inputs=inputs)
File "C:\Users\roytravel\anaconda3\envs\kochat\lib\site-packages\torch\autograd\__init__.py", line 149, in backward
allow_unreachable=True, accumulate_grad=True) # allow_unreachable flag
RuntimeError: CUDA error: CUBLAS_STATUS_ALLOC_FAILED when calling `cublasCreate(handle)`
이는 아래 환경변수 설정으로 해결하였다.
import os
os.environ['CUDA_LAUNCH_BLOCKING'] = "1"
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
'Interest > 기타' 카테고리의 다른 글
Node JS MySQL Update 에러 해결 (0) | 2022.12.25 |
---|---|
[JavaScript] TypeError: Cannot read properties of undefined (reading ...) (1) | 2022.12.12 |
[세미나] 스타트업 해외진출 방법에 대한 세미나 후기 (Awake, It's time to innovation Asia) (0) | 2022.07.27 |
[Python] 파이썬 클래스 상속 super().__init__() (0) | 2022.04.07 |
[차트이론] 스토캐스틱 (Stochastic) (0) | 2021.11.02 |