윈도우10 + 텐서플로 GPU 버전 설치

얼마만인지 모르겠다.
블로그에 올린 많은 글들 중에
나름 봐줬으면 하는 글들이 꽤 있는데
통계를 보면 우분투에 텐서플로 GPU 버전을 설치하는 글이 가장 인기가 많다.
왜 그런지는 모르겠다.
아직 그 부분이 해결되지 않았나?

엔비디아 1060에 GPU 버전을 설치해서 쓰고 있었는데
애들 핑계로 1070을 구매했고 지나가는 길에 설치를 시도했는데.. 잘 되지 않았다.
큰 아들 우재한테 시켰더니
며칠째 끙끙대기만 하고 결과가 나오지 않는다.

첫 번째 설치는 당연히 실패하고
여기저기 찾아다닌 끝에 3시간만에 성공했다.
그 후에 이 방식이 맞는지 검증하기 위해 다시 3시간을 보냈다.

설치 환경을 요약하면 아래와 같다.

- 운영체제 : 윈도우 10
- 그래픽카드 : 엔비디아 1070 TI
- 드라이버 : 419.67
- CUDA : 10.0
- cudnn : 10.0
- 파이썬 : 3.6.8
- 텐서플로 GPU : 1.13.1

 

2019년 3월 31일 현재 최신 버전은 CUDA 10.1 버전이다.
그런데.. 설치가 되질 않는다.
10.0을 설치하는 방법과 똑같이 진행을 했는데.. 실패다.
대여섯번 하다가 안 되면 그만할 줄도 알아야 한다.
컴퓨터 2대에서 시도했고, 아쉽지만 이번에는 10.0에서 만족하기로 했다.

파이썬은 미리 설치되어 있다고 가정한다.
엔비디아 그래픽 카드 드라이버는 
기본 설치 버전이 있는 상태에서 최신 버전인 419.67 버전을 설치했더니
자연스럽게 기본 버전은 제거가 됐다.

 

윈도우10에 설치된 엔비디아 그래픽 카드 프로그램 목록

 

얼마나 실패를 할지 몰라
이번에도 단단히 준비를 하고 시작했다.
GPU 버전 설치는 어찌 보면 다양한 버전들로부터 궁합이 잘 맞는 버전을 찾는 문제일 수 있다.

다운로드 받아 놓은 설치 파일들

 

설치 파일을 다운로드할 수 있는 사이트를 정리했다.
맨 앞의 텐서플로 공식 사이트에서 말하는 내용 정도는 보는 것이 좋겠다.
최신 버전을 설치하려면
시도한 사람이 많지 않은 상태에서는 부족하긴 하지만 공식 문서가 최신일 수도 있다.

 

 

설치 파일을 다운로드하는 화면은 넣지 않았다.
운영체제 버전 선택하는 그런 것들이 필요해 보이지는 않는데..
다만 설치 환경이 모두 다를 수 있기 때문에
자신의 환경에 맞는 버전을 정확하게 선택해야 할 것이다.

 

그래픽 카드 드라이버 다운로드

 

GPU 버전 설치는 CUDA와 cuDNN 설치가 전부일 수 있다.
가장 최신의 버전인 CUDA 10.1은 설치할 수 없어서 10.0 버전을 설치했다고 앞에서 얘기했다.

 

1. CUDA 10.0 설치
그림 상단에 버전 번호가 표시되어 있다. 
별도 옵션을 선택하는 것은 필요 없었다. 기본값인 [빠른 설치] 선택하고 [다음] 버튼으로 진행한다.
설치가 완료되고 나면 창을 닫는다.

 

CUDA 10.0 설치

 

2. cuDNN 복사
cuDNN 라이브러리는 압축 파일로 되어 있고
압축을 풀면 3개의 폴더가 나오고 그 안에는 각각 1개씩의 파일이 들어 있다.

일반적으로는 이들 파일은 CUDA 라이브러리가 설치된 폴더에 복사해서 덮어써야 하는데
어떤 블로그에서 덮어쓰는 것보다 복사해서 사용하는 것을 추천해서 나도 그렇게 했다.
덮어써도 될 수 있기는 한데
잘못될 경우를 대비해서 원본 파일을 보관해야 하는데
그것보다 cuDNN 폴더를 복사하는 것이 훨씬 쉽다.

cuDNN 라이브러리는 CUDA 라이브러리와 똑같은 버전을 사용해야 한다.
CUDA가 10.0이니까 cuDNN도 10.0을 사용한다.
압축을 푼 폴더에 가면 그 안에 cuda 폴더가 있고 그 안에 bin, include, lib 폴더가 있다.
cuda 폴더를 바탕화면에 복사한다.
이 시점에서 특별한 폴더를 찾을 생각하지 말고
설치에 성공하고 나면 원하는 폴더로 옮기는 것은 어렵지 않다.

 

3. 환경변수에 경로 추가
cuda 폴더를 덮어쓰지 않았기 때문에
cuDNN 파일들에 대한 경로를 환경에 추가해야 한다.

[내 PC] - [속성] - [고급 시스템 설정]으로 들어간다.

 

[환경 변수] - [사용자 변수] - [Path] - [편집]으로 들어가서
바탕화면에 추가된 bin, include, lib 폴더의 경로를 추가한다.

앞의 그림 중에 가운데 그림에 보면
[시스템 변수]에 CUDA_PATH 항목이 보이는데, CUDA 라이브러리 설치가 잘 되었다는 뜻이다.

 

4. 가상환경 생성
파이썬 가상환경을 반드시 만들어야 하는 것은 아니지만
잘 안될 수도 있고 CPU와 GPU 버전을 함께 사용해야 할 수도 있으니까.

커맨드 창을 연다. 관리자 모드로 열지 않아도 된다.
가상환경을 여러 번 구축해야 할 수도 있으니까 폴더 이름 뒤에 숫자를 붙였다.

가상환경 생성 및 진입

 

순서대로 아래 명령어를 입력한다.
python -m venv tf_1
cd tf_1
Scripts\activate.bat

 

5. 텐서플로 설치
activate 명령을 통해 가상환경으로 들어갔다.
여기서부터는 나만의 파이썬을 사용한다고 생각하면 된다.

텐서플로 GPU 버전을 설치하는 명령을 입력한다.
버전을 명시하지 않았기 때문에 현재 시점에서 최신 버전인 1.13.1을 설치한다.


pip install tensorflow-gpu

텐서플로 설치 중..

 

설치를 마치고 나면 노란색 글자가 보여 걱정이 된다.
pip 모듈을 업데이트하라는 말인데.. 텐서플로 GPU 버전하고는 상관없다. 하지 않아도 된다.

텐서플로 설치 완료

 

6. 설치 확인
python이라고 입력해서 파이썬 인터프리터를 구동한다.
갈매기(>>>) 프롬프트가 보이면 딱 한 줄만 입력하면 된다.

>>> import tensorflow

이 코드 한 줄에 대해 에러가 나지 않으면 성공이다.
그래픽 카드 버전을 뜻하는 빨간색의 메시지는 나타나지 않는다.
나중에 코드를 더 넣고 구동하게 되면 그때는 볼 수 있다.

이 한 줄의 코드로 안심이 되지 않는다면
파이참 등의 에디터를 통해 텐서플로 코드를 구동해 본다.
나는 mnist를 비롯해서 고양이와 강아지도 돌려봤다. 
너무 감격적이다.


많은 글을 읽었는데
성공의 핵심은 cuDNN 라이브러리를 바탕화면에 복사해서 사용한 것이 아닐까 생각한다.
별별정보님께서 올려놓은 [tensorflow gpu install - NVIDIA CUDA 설치하기]를 참고했다.

추가로 될거라고 생각했던 것도 있는데 CUPTI와 관련된 것이다.
텐서플로 공식 페이지에서 이 부분에 대해 언급했기 때문에 어떤 식으로든 설치에 관여할 것이라 생각했다.
[Windows 10에서 tensorflow-gpu 설치]에 설명되어 있고
혹시 앞의 과정에서 에러가 난다면 시도해 볼 수 있는 방법이다.

하나 더.
1.13 버전이 나온지 얼마 안되었기 때문에
설치 관련 글을 읽어보면 CUDA 9.0 또는 9.2 버전에 대한 얘기가 많다.
10.0 설치가 잘 되지 않았다면
굳이 10.0을 고집할 필요는 없어 보인다.

처음에 CUDA 9.0 버전 설치로 성공했는데
10.0 버전도 되는지 확인하고 싶었고 성공했다.
다만 9.0 버전을 설치할 때는 반드시 텐서플로 1.12 버전을 사용해야 한다.
텐서플로를 설치할 때 버전 번호를 명시하면 된다.

pip install tensorflow-gpu==1.12

수업을 해야 해서
내가 가장 많이 볼 거라고 생각하고 만들었다.
새벽 1시 30분.
졸려서 혹시 빠진 내용이 있을지도 모르겠다.
확인은 내일 하는 걸로.