RuntimeError: CUDA error: device-side assert triggered
해당 오류는 많은 이유에서 발생할 수 있지만, 나의 경우에서는 값을 0으로 나누려는 과정에서 에러가 발생했고, 그리하여 다음과 같은 에러들을 만나게 되었다.
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_1670525552843/work/aten/src/ATen/native/cuda/Loss.cu:92: operator(): block: [0,0,0], thread: [0,0,0] Assertion `input_val >= zero && input_val <= one` failed.
/opt/conda/conda-bld/pytorch_1670525552843/work/aten/src/ATen/native/cuda/Loss.cu:92: operator(): block: [0,0,0], thread: [1,0,0] Assertion `input_val >= zero && input_val <= one` failed.
/opt/conda/conda-bld/pytorch_1670525552843/work/aten/src/ATen/native/cuda/Loss.cu:92: operator(): block: [0,0,0], thread: [2,0,0] Assertion `input_val >= zero && input_val <= one` failed.
/opt/conda/conda-bld/pytorch_1670525552843/work/aten/src/ATen/native/cuda/Loss.cu:92: operator(): block: [0,0,0], thread: [3,0,0] Assertion `input_val >= zero && input_val <= one` failed.
다음과 같이 값을 0으로 나누려는 지점에 학습에 지장주지 않은 엄청 작은 epsilon을 더해 문제를 해결하였다.
def standardization_norm(self, input_img):
# epsilon을 더해주지 않으면, 0으로 값을 나누려는 경우가 생겨 device-side assert triggered가 발생할 수 있음.
epsilon = 1e-10
mean_intensity = np.mean(input_img) # 의료 이미지의 평균 intensity 값을 계산
std_intensity = np.std(input_img) # 의료 이미지의 표준편차 intensity 값을 계산
input_img = (input_img-mean_intensity) / (std_intensity+epsilon)
# input_img /= 10
return input_img
참고자료
- https://discuss.pytorch.org/t/assertion-input-val-zero-input-val-one-failed/107554
- https://wsshin.tistory.com/12
- https://stackoverflow.com/questions/68166721/pytorch-fails-with-cuda-error-device-side-assert-triggered-on-colab
'Python 관련 > Pytorch' 카테고리의 다른 글
[Pytorch] torchview를 사용한 모델 plot 시각화 (ubuntu) (0) | 2024.05.29 |
---|---|
Albumentation Color jitter 사용 오류 (0) | 2024.04.05 |
[Pytorch] 모델 저장 오류 (0) | 2024.03.07 |
[Pytorch] Generator (0) | 2024.02.27 |
[Pytorch] Randomness 제어 (0) | 2024.02.27 |