플로라도의 data workout

파이토치 에러 핸들링 - 토치 쿠다 설정 관련 이슈 OSError: [WinError 193] %1은(는) 올바른 Win32 응용 프로그램이 아닙니다. Error loading "C:\ProgramData\Anaconda3\lib\site-packages\torch\lib\shm.dll" or one of its depend.. 본문

기초 노트/PyTorch

파이토치 에러 핸들링 - 토치 쿠다 설정 관련 이슈 OSError: [WinError 193] %1은(는) 올바른 Win32 응용 프로그램이 아닙니다. Error loading "C:\ProgramData\Anaconda3\lib\site-packages\torch\lib\shm.dll" or one of its depend..

플로라도 2023. 11. 5. 01:16

평소에는 주로 코랩을 사용 하였으나 점차 코랩 보다는 로컬 환경에 익숙해져야 할것같아서

윈도우 로컬에서 vscode및 주피터랩으로 python을 설치하고, 여러 필요한 라이브러리를 설치하고자 하였다.

파이토치도 마찬가지 대상이었다.

 

아나콘다를 사용하는 주피터 환경부터 세팅 해주려 했고, 

 

cuda 11.7버전의 그래픽카드를 사용하고 있어서

이에 맞는 cuDNN과 CUDA toolkit의 설치를 마친 뒤

호기롭게 

pip install torch

 

를 통해 pytorch를 설치

구글 코랩과 같이 멀끔하게 동작하는 환경을 기대하였으나

웬걸, 

torch.cuda.is_available()
>>>
False

cuda가 잡히지 않았다.(error 1)

 

 

뒤늦게 cuda버전에 맞는 pytorch로 설정해줘야 한다는것을 알고,

파이토치 uninstall을 진행하고 버전(11.7)에 맞는 파이토치를 재설치 해주었다.(try1)

https://pytorch.org/get-started/previous-versions/

# CUDA 11.7
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia

 

 

그랬더니 오히려 주피터 환경에서는 torch를 import하지 조차 못하고 (error2)

vscode에서는 정상 작동하였다. (torch.cuda.is_available() >>> True)

여기서 vscode를 사용하는 것으로 일단락 할 수 있었으나...

주피터를 쓰지 못하는것이 영 찝찝하여 이를 해결하고자 했고

 

 

발생한 에러문구는 다음과 같았는데,

 

OSError: [WinError 193] %1은(는) 올바른 Win32 응용 프로그램이 아닙니다. Error loading "C:\ProgramData\Anaconda3\lib\site-packages\torch\lib\shm.dll" or one of its dependencies.

 

 

 

이를 해결하기 위해 아나콘다 가상환경 설정이 무언가 잘못되었나, 밀고 다시 깔면 되려나 싶었지만

vscode는 정상 작동하기에 결국, 주피터 환경설정의 문제가 있는것으로 귀결되었고,

 

주피터에서 ipykernel이 default로 잡혀있어서 새 가상환경에 맞게 ipykernel을 만들어야 하나 싶어서 

 

 

 

기본으로 설정된 커널에서 변경하기 위하여

 

pip install ipykernel
python -m ipykernel install --user --name 가상환경 이름 --display-name 커널 이름

 

을 통해 새로운 커널을 만들어서 주피터 내에서 커널 변경후(try2) import torch했으나 여전히 실패,(error3)

 

무엇이 문제인지, 도대체 vscode는 왜 되는것이고, 주피터 환경은 안되는것인지 당최 알 수 없었다가

 

import sys
sys.path

 

를 통해 각 (1)주피터와 (2)vscode의 커널이 참조하고있는 path를 살펴 보았는데 

 

 

이게 웬걸, 여기서 불일치가 발생하였다.

아래 vscode 환경에서의 출력은 가상환경을 참조하고 있고,

주피터 환경은 정확히는 모르지만 base환경을 참조하고있는 듯 하였다.

 

이를 해결하기 위해서 모든 경로를 추가 제거하여 맞춰주는 방법도 있을 것 같았지만,  

 

일단 다시 한번 더, 모든 아나콘다 가상환경을 싹 지우고

아나콘다 네비게이터를 통해 가상 환경을 설정해주었다.(try3)

가상환경을 새로 만든 뒤 , 주피터 노트북 등도 이를 통해 설치해주었더니, 경로가 제대로 잡힌 모습이다.

 

 

 

아나콘다 네비게이터를 통해 Launch 대신 Install로 되어있던 버튼을 통해 설치를 진행하였고 

그에 따라 경로를 자동으로 잡아준 것 같다.

 

 

 

 

 

 

 

 

드디어 해결...!

 

 

역시 설치와 환경설정이 제일 어려운것 같다.