본 글은 솔루션을 검색 후 찾아 분석한 글이며, 솔루션 출처는 다음과 같습니다.
솔루션 출처: https://github.com/pytorch/pytorch/issues/30664#issuecomment-757431613
발단
모델을 사용하기 위해 pytorch를 설치하고 실행하는 도중 발생하였다.
해결 방법
다음과 같은 명령어를 입력한다.
pip uninstall torch
pip cache purge
pip install torch -f https://download.pytorch.org/whl/torch_stable.html
원인
먼저 pip의 -f
argument가 무엇인지 확인해보자.
다음은 pip 공식 설명이다.
여기서 주목 해야하는 점은 경로를 제공해주면 "해당 위치에서" 아카이브를 따온다는 것이다.
처음 나는 pytorch를 설치할 때 pip install torch
명령어를 사용하여 설치하였다.
다음은 문제가 된 pytorch와 정상적으로 설치된 pytorch에 대한 각각의 설치 CLI이다.
미묘하게 파일의 이름이 다르다.
이상: torch-1.13.1-cp310-cp310-win_amd64.whl
정상: torch-1.13.1+cu117-cp310-cp310-win_amd64.whl
(%2B는 urlencoded 되었으며, decode시 + 문자임을 참고한다.)
우리가 주목 해야할 것은 공식 홈페이지에서 아카이브 된 Wheel을 다운 받을때,
Wheel 이름에 cu117이라는 문자열이 추가로 붙어있다는 것이다.
torch가 NVIDIA CUDA가 사용 가능하도록 Wheel을 빌드하면 드라이버의 버전을 붙여 빌드한다.
여기서 cu117은 CUDA 1.17에 맞게 빌드되었음을 의미한다.
문제는 이러한 CUDA 드라이버 버전이 기입 되어있지 않은 Wheel은 CPU 전용일 수 있다는 것이다.
다음은 pypi의 torch 레포지토리다.
문제가 된 Wheel을 찾아볼 수 있으며, 본 레포지토리에는 CUDA 드라이버 버전이 기입된 Wheel을 찾을 수 없었다.
개인적인 생각
아마 pypi에서는 CUDA에 맞게 빌드한 Wheel이 없는 것 같다.
따라서 CPU 전용으로 설치 된 pytorch Wheel을 제거하고, cache를 purge 시킨 후, pytorch를 직접 공식 홈페이지에 CUDA를 지원하는 Wheel를 다운 받았을 때 다음과 같이 정상적으로 모델을 잘 불러왔다.