초보자를 위한 CUDA 설정 다사다난 실패기 공유

안녕하세요

pytorch를 로컬 주피터 노트북에 처음 사용하기 위한 CUDA 설정을 12시간 동안 실패하다가 마침내 드디어 CUDA 설정을 완료한 진정한 pytorch 어린이입니다. (별 것 아닌걸로 기쁘면서 성취감)
기껏 설정 완료하고 나니 pytorch 어린이가 아니라 그냥 스스로 컴맹에 머리가 나쁘다는 것을
증명한 것 같습니다.

이미 구글에 수많은 블로그와 티스토리가 있음에도 실패한 과정과 얼마나 무자비하게 초심자가 실수해갔는지를 알 수 있으며, 최종적으로 어떻게 해결하였는가에 대해서 끄적여보도록 하겠습니다.

아 참, 전 win11, 주피터 노트북에서 진행하였습니다.

바쁘신분들은 [5.결말] 만 읽으시면 되겠습니다.

[0. 서막]


23년 3월 18일 기준 파이토치 튜토리얼을 시작하기 위해
주피터 노트북을 키고, python파일을 하나 만들었습니다.

import torch

-> 오 이런, ModuleNotFoundError : no module named 'torch'
이정도는 알지 torch 라는걸 설치하면 되겠구나

셀에서

!pip install torch

자 실행완료

print(torch.version)

2.0.0

자 파이토치라는 것이 설치 되었네요
기쁩니다. 저도 이제 파이토치 유저입니다

[1. 튜토리얼 시작]


이런, ModuleNotFoundError : no module named 'torchvision'
오 torchvision도 없습니다.

!pip install torchvision

깔아주었습니다.

Dataloader 에서 신나게 트레이닝, 테스트셋 가져왔습니다
성공적입니다. 데이터셋이나 불러올줄 알다니 너무 기쁩니다

모델을 만드려고해봅니다.

자 그전에

device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Using {device} device")

을 실행해봅니다.

"cpu"

왠지 느낌상 cuda가 떠야할것 같은데 cpu가 뜹니다. 문제가 있습니다.
혹시 몰라 텐서플로우로도 확인 해봅니다

import tensorflow
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

-> CPU만 확인되고 GPU가 잡혀있지 않습니다.

멘붕입니다.

[2. 전개]


저는 얼른 구글을 킵니다.
torch.cuda.is_available() => False 라는 조건문을 발견한 제 자신이 대견합니다. torch.cuda.is_available() False 키워드로 검색합니다.

이미 수많은 블로그와 티스토리에서 선배님들이 관련 문제에 대해서 해결책을 정리해 놓으셨습니다.
pytorch, torchvision, torchaudio, CUDA, cuDNN, Nvidia driver의 버전을 모두 맞춰야한다고 합니다.
뭔말인진 모르겠지만 똑똑하신 모든 분들이 다 최신버전에 맞게 자동으로 잘 되게 해놨을거라 믿습니다
그냥 일단 해봅니다.

구글 한두페이지 분량 읽어보니 나의 그래픽카드에 맞춰서 cuda를 설치해야한다고 합니다.
읽은 정보를 토대로 실행해봅니다.

nvdia-smi 를 해봅니다. 안나옵니다
nvcc --version 을 해봅니다. nvcc가 올바른 배치가 아니랍니다.

종합적 멘붕입니다. 내 노트북에는 엔비디아 드라이버도 제대로 안깔려있는것 같습니다.
훗 하지만 전 컴퓨터 드라이버 정도는 깔줄 아는 인재입니다.
구글 검색으로 제 그래픽카드에 맞춰서 최신 드라이버를 깔아준다음 재부팅합니다.

다시 nvidia-smi 합니다.
뭔가 멋있게 나옵니다.
무려 저의 CUDA version은 12.1이라고 되어있습니다.

아뿔싸. 블로그 글들에는 12.1 버전 해결한 것은 없는것 같은데..
전 그정도 똥멍청이는 아닙니다. 이정도는 변수 x에 숫자 대입해서 푸는 정도의 일입니다.

라고 생각했는데

을 참조해서 내 그래픽카드에 맞는 어떤 cuda 숫자를 깔아야하는지
한참 지나고서야 표 읽는 법도 이해하였습니다.

  1. Compute Capability, GPU semiconductors and Nvidia GPU board products 표에서 자기 글카를 찾습니다
  2. 해당 글카의 Compute capability를 확인합니다 저의 경우에는 7.5군요. 7.5는 뭔지는 모르겠지만 이름이 Turing이랍니다.
  3. Compute Capability (CUDA SDK support vs. Microarchitecture) 표에서 7.5(turing)이라고 색칠되어있는 CUDA 버전은 다 깔아도 상관없는 것 같습니다. (틀렸다면 알려주세요)

일단 구글에 cuda 12.1 download 검색을 합니다.
제 컴퓨터에 맞춰서 잘 다운을 합니다.
다운로드 속도는 왜이렇게 느린겁니까.
와이파이 공유기 속도 올리는법도 엄청나게 검색해보고 별걸 다합니다.

설치파일입니다. 설치는 너무 쉽습니다.
자 그다음은 이것에 맞게 cuDNN을 깔아야한답니다.

엔비디아 홈페이지에서 가서 12.x에 맞는 cuDNN을 다운받아줍니다.
폴더 3개가 나오네요 bin include lib, 이것을 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1 안에 복사 해서 넣어줘야합니다
복사 합니다.

까먹지 않고 3개 폴더의 환경변수 설정까지 해줬습니다.
휴 선배님들의 글의 조언을 받아 이제 모든 작업을 완료해준것 같습니다.

다시 주피터를 킵니다.

torch.cuda.is_available()

False

..................... 뭐가 문제인것입니까

[3. 위기]


여전히 cpu도 안잡힙니다. 아직도 뭐가 문제인지 모릅니다.
안될때는 될때까지 하라 정신입니다.

아예 c드라이브의 nvidia 폴더를 다 지웁니다.
이런것들을 지우고 나서는 또 깔끔하게 재부팅도 해줍니다

다시 nvidia 드라이버 부터 깔아줍니다.
했던 짓을 반복합니다. => 여전히 안됩니다
뭐가 문제인지 생각합니다.

뭘해도 안됩니다. 아니 왜 gpu인식이 안되는지 도저히 모르겠습니다.

뭔가 이상합니다. pytorch 튜토리얼의 '설치 방법'을 눌러봅니다
다른거는 잘 모르겠고 cuda 11.6 11.7 만 있습니다.

아 12.1 되어있다고 12.1을 깔면 안되는구나 안정된 버전을 깔아야하는거 아닐까 하면서
CUDA 11.x 버전에 맞춰서 구글검색으로 CUDA TOOLKIT, CUDNN 다운받고 지우고 반복합니다.
잘 안되서, CUDA 10.x 버전에 맞춰서 다 깔고 CUDA TOOLKIT, CUDNN 지우고 반복합니다.
선배님들 블로그 따라서 구글검색으로 다 맞춰서 다운받고 했는데도 왜안되는거야...
아직도 뭐가 문제인지 모르는 안타까운 중생입니다.

계속 고민하다가 드디어 생각해냅니다. 아 설마 pytorch 2.0 버전이라 그런건가
pip uninstall torch로 지운다음
torch 예전 버전을 깔아줍니다. torchvision 이 안된답니다. 아 안되는 버전도 있는거였나
torch랑 torchvision이랑 맞는 버전을 겨우겨우 찾아서

!pip install torch==x.x.x torchvision==x.x.x 해줍니다
솔직히 이쯤 되었을때 너무 혼란스럽고 이것저것 해보다가 정확히 어떤것 때문에 그랬는지,
어디서 무슨 연관인지는 모르겠는데 pytorch를 다운그레이드 시켜주고

import tensorflow
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

체크해주니까 갑자기 gpu가 잡힙니다.

??? 뭐지??? 이해할 수 없습니다. 그럼 혹시...?

[4.절정]


torch.cuda.is_available()

False

...

print(torch.version)

x.x.x + cpu

??????????????? 갑자기 버전뒤에 왜 cpu가 붙어나오는지 모릅니다.

돌아버릴것 같습니다. 여기까지 읽으신 분들도 얘가 도대체 뭘하고 있던건지
감도 안잡히실 것 같습니다. 너무나 뒤죽박죽 입니다.

잘 생각해보니 아까 pytorch 튜토리얼의 '설치 방법'에서 어떤 코드를 입력하면 된다고 한것 같습니다.

아나콘다 프롬포트로 들어갔습니다.
torch 와 등등 uninstall 먼저 해줍니다
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
쳐줍니다.
뭔가 설치되는것 같습니다.

주피터로 돌아갑니다

import torch

-> 오 이런, ModuleNotFoundError : no module named 'torch'

??????????? 자 이렇게 어지러운 유니버스를 체험하고 제일 처음으로 다시 돌아왔습니다

난 설치를 했는데 왜 모듈이 없는지 모르겠습니다.
가상환경이 없이 base 밖에 없으면 conda나 pip나 같은 작용을 하는 거라고 생각했는데
그것도 아닌걸 알았습니다.
(pip는 구글스토어면 conda는 삼성스토어라고 합니다 뭔말인지 잘 안와닿지만 일단 아는척합니다)

그럼 conda 를 pip으로만 바꾸면 되지 않느냐 생각해봅니다.

pip install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia

안됩니다. pytorch가 없답니다. 아 pip 는 torch로 해야되지

pip install torch torchvision torchaudio torch-cuda=11.7 -c torch -c nvidia

안됩니다. 될리가 없습니다.

멘붕입니다. 지금 제가 뭐하고 있는지 모르겠습니다.
뭘 잘못하고 있는지 몰라서 '전개~절정'을 수도없이 반복합니다


억겁 시간s... later...

[5. 결말]


conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia 명령어를
pip 명령어로 할수 있는걸 찾으면 되지 않나 생각해봅니다.

엄청 검색해봅니다 뭐라고 검색해야되는지도 모르는데 닥치는 대로 해봅니다. 잘 안나옵니다.
그러다가 우리 커뮤니티의 '이전 버전의 pytorch'를 너무 뒤늦게 보게됩니다.

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116

이걸 보면서 깨닫습니다. 현재 torch 2.0 으로 어울리는 거 찾아서 설치하는거는 잘 모르겠고,

torch gpu를 쓸수있는 버전을 따로 특정해야만 했구나, 토치비전, 토치오디오도 어울리는 걸로 설치해줘야했구나. 기존 토치를 다 지우고 위 명령어로 설치하니까 gpu버전이라 그런지 약간 시간 걸립니다.

확인해봅니다.

torch.cuda.is_available()

True

!!!!

드디어.. 성공했습니다.


추가) pip install torch... 를 하더라도 nvcc _V 가 출력되지 않으면, nvdia-smi 를 한다음
버전에 맞춰서 NVIDIA cuda 11.x or 12.x 를 깔아주세요.

전 여기까지만 하니까 새로운 윈10 컴퓨터에서 pytorch 는 해결됐는데,
tensorflow에서 gpu를 못잡더라고요 그래서.... 는 여기는 파이토치 커뮤니티!

지만.. 정보 공유를 위해 텐서플로는 윈도우에서 GPU 지원을 2.10 까지 밖에 안한다는 정보를
어떤 블로그에서 입수하였습니다.. 2.1 버전을 까니까 되네요


하지만 아직도 잘 모르겠습니다
nvcc -V 하면 Cuda compilation tools, release 11.7, V11.7.64 으로 나오는데 torch 는 11.6버전 설치한 것 같은데 이 둘은 호환이 되는 거라서 상관이 없는건지, gpu는 도대체 언제 갑자기 잡히게 된건지 torch 2.0버전이라서 최신으로 나와있는 cuda 12.x버전이라 안맞아서 그랬던건지... 현재시간이 일요일 오전 5시라서 머리가 안돌아가는건지.. (+ 그래도 가독성있게 하려고 엔터를 많이 이용했는데 엔터가 여러번 안먹혀서 가독성 정말 떨어지네요 ㅠ)

8개의 좋아요

우와, 고생 많으셨습니다ㅠㅠ

역경(?) 속에서도 포기하지 않으시고, 결국 파이토치 사용자가 되신 것을 축하드리고 환영합니다 :tada: :clap: :tada: :clap:

(사실 저도... 윈도우 환경에서 설정해서 쓰라고 하면 자신이 없습니다ㅠㅠ)


환영합니다! :clap: :tada:
앞으로 자주 봬요~!

PS. 두 줄 띄어쓰기는 <br> 태그 또는 두번째 공백 줄에 \(엔터키 위의 역슬래시)를 사용하시면 되십니다. ^^;

1개의 좋아요

오 띄어쓰기 방법 감사합니다! ㅎㅎ

1개의 좋아요

저는 3070 처음 나왔을때 cuda와 cudnn 버전때문에 하루를 바쳤던 기억이 나네요 :slight_smile:
컴퓨터에 깔린 수많은 nvidia 프로그램들을 보고, 윈도우 포멧한번하고 한번에 다시 세팅했었다는..

글을 재밌게 써주셔서 끝까지 읽었습니다 ><
pytorch에 오신걸 환영합니다~

3개의 좋아요

저도 덕분에 해결되었네요.
공유해주셔서 감사합니다!

실패기 내용이 저랑 거의 비슷하네요....
도움 주셔서 감사합니다.

2개의 좋아요

오우 도움되셨다니 다행입니다 ^^

2개의 좋아요

우와~ 시도해주시고 덧글도 남겨주셔서 감사합니다! :clap: :clap: :clap:

1개의 좋아요

저도 다시 시작하는중입니다... 제발 성공....

1개의 좋아요

오늘까지의 상황
1.CUDA버전 낮춤(엔비디아에서 받으니까 무조건 12.1로 깔려서. 엥 뭐지? 하고 MSI가서 드라이버를 받으니 드디어 nvidia-smi 에 CUDA10.1이 찍힘)

  1. Python버전도 낮춤. anaconda prompt에 python version이 계속 3.11로 떠서 3.8까지 낮추고 패키지 인스톨중...
1개의 좋아요

모쪼록 성공하시길 기원합니다 :pray: :pray: :pray:

12시 12분 현재 torch- v1.8.1, cuda-10.1로 드디어 is_avilavle True 성공 저도 조만간 후기 남기겠습니다. ㅎㅎ

https://github.com/imhyunho99/python_vision_with.Prof.Ryu/blob/main/Cuda_%EC%84%A4%EC%A0%95_%EB%8B%A4%EC%82%AC%EB%8B%A4%EB%82%9C_%ED%9B%84%EA%B8%B0.ipynb

1개의 좋아요

와우~ 축하드립니다~ :tada::tada::tada:
후기 기다리고 있겠습니다 :smiley:

안녕하세요! 글 잘 읽었습니다! 저랑 같은 길을 걷고 계셔서 결론 부분을 따라 했는데도 false가 뜨네요..ㅠ 저도 nvcc-V 입력하면 Cuda compilation tools,release 11.8로 나오고요.. 분명 11.6버전으로 다운 받고 환경 변수 설정할 때 다시 확인했을 때도 버전은 11.6이었구요.. 뭐가 문제일까요..ㅠ
혹시 제 그래픽 카드가 intel이라 문제가 생기는걸까요? 저도 window11이고 colab에서 실행하려고 합니다..!

ㅎㅎㅎ 글양식까지 저를 따라해주시다니..
성공하심을 축하드립니다!

2개의 좋아요

코랩은 그냥 런타임을 GPU로 조정하시면 사용가능하게 바뀔거에요
제 게시글은 컴퓨터의 주피터에서 실행하는 과정이었습니다~

1개의 좋아요

저도 pytorch GPU구동 처음 시킬 때 하루종일 붙잡으면서 시도했던 기억이있어서 반갑네요 ㅠㅠ

1개의 좋아요

설치가 제일 어려운데 상세하게 공유해주시니 많이 배울 수 있네요.
축하드립니다~!!

1개의 좋아요