pc에 문제가 생겨서 우분투를 한번 싹 밀고(사실 한 번이 아님.. ㅠ...) 새로 Ubuntu 20.04 LST를 설치하고 아나콘다, vscode, nvidia-driver, CUDA 설치까지 마친 후에 Yolo v5 모델을 사용하려는데 아래와 같은 에러 메세지가 떴다.
RuntimeError: CUDA error: no kernel image is available for execution on the device
나는 RTX3080, CUDA 11.1, CUDNN 8.0.5, pytorch 1.8.0의 환경이었으며
이전과 동일하게 yolo v5 github를 git clone 해 와서 detect.py 파일을 실행하고자 했다.
여기저기 찾아보니 nvidia-driver 문제라기 보단 pytorch 버전 문제인 것 같아서 기존에 설치 되어 있던 pytorch를 삭제하고 새로 설치를 해 주었다.
$ conda uninstall pytorch
cudatoolkit 버전을 확인한 후
$ nvcc -V
$ conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge
해당 명령어를 사용하여 pytorch를 새로 설치해 주었다.
해당 명령어는 RTX30XX 이라면 모두 잘 먹힌(?다고 하는데 정확한 명령어는 pytorch 공식 사이트에 들어가서 확인 해 보는 것이 좋다.
pytorch를 새로 설치하니 무사히 모델이 작동되었다.
참고 링크 : https://powerofsummary.tistory.com/189, https://github.com/ultralytics/yolov5/issues/2855
+)
위의 명령어로도 cuda runtime error 또는 out of memory 에러가 발생해서 명령어를 달리 하여 해결하였기에 본문을 수정하게 되었다.
위에 링크로 걸어둔 참고 링크가 아니라
https://pytorch.org/get-started/locally/
해당 사이트에서 본인의 환경에 맞는 버전을 선택하면 아래에 뜨는 명령어로 cuda runtime error를 해결하는 것이 좋다.
나는 RTX3080, CUDA 11.1, CUDNN 8.0.5를 사용 중이었으므로 Linux, Conda, Python을 선택한 후
CUDA 10.2를 선택하여 cudatoolkit=10.2로 pytorch를 재설치하였다.
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch