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/
PyTorch
An open source machine learning framework that accelerates the path from research prototyping to production deployment.
pytorch.org
해당 사이트에서 본인의 환경에 맞는 버전을 선택하면 아래에 뜨는 명령어로 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