마지막 실행 성공(2021.1.25)
- Anaconda 3
- Python 3.7
- Tensorflow 2.4.0
- CUDA 11.1.1 (cuda_11.1.1_456.81_win10.exe)
- cuDNN 8.0.5 (cudnn-11.1-windows-x64-v8.0.5.39.zip)
- cusolver64_11.dll을 cusolver64_10.dll 으로 이름을 바꿔줘야 함 (cuda/v11.1/bin)
2021.01 LSTM/GRU 모델을 돌릴 때 아래와 같은 에러가 발생하여 tensorflow 2.4 + CUDA 11.1 + cuDNN 8.0.5 버전 업을 했더니 에러가 나지 않음
- Failed to call ThenRnnForward with model config
- Failed to call ThenRnnBackward with model config
0. GPU History
- 2018. 3: 1080ti
- 2019. 4: Titan V
- 2020. 12: Quadro RTX 8000
1. Visual Studio 설치
- https://www.visualstudio.com/ko-kr/downloads/download-visual-studio-vs
- Visual Studio 2019 설치 (이 페이지에서도 최신 빌드는 MSVC 2019를 사용함)
- CUDA 9.0에서는 어떤 버전까지 지원했는지를 모르겠지만, CUDA 10.0으로 다시 설치하다보니, Visual Studio IDE를 설치해야 CUDA가 설치가 되는데,
- 최신버전은 Visual Studio 2019이나, 이 경우 CUDA 10에서 인식을 못해, 설치시 ‘Not compatible’이라는 경고창이 뜬다.
- 이 페이지 아래로 조금만 내려가면 2017버전을 설치할 수 있고, 이 경우 에러메세지가 뜨지 않는 것을 확인했다.
2. Anaconda3 설치 (Python 3.x)
- Anaconda 설치 후 anaconda prompt로 들어가서 업데이트
conda update conda conda update --all ("-"두개)
3. CUDA 툴킷과 cuDNN 설치
- https://docs.nvidia.com/deeplearning/cudnn/support-matrix/index.html
- 위 페이지에서 호환되는 버전을 확인한다.
[2021.01] (Tensorflow version 2.4)
- Failed to call ThenRnnForward with model config 오류가 발생하여, 드라이버를 모두 최신으로 업데이트함.
- cuDNN v8.0.5 를 다운받으려고 보면(링크), Windows가 x86 이라고 되어있으나, 마우스를 올려보면 파일명에는 x64라고 적혀있다.
- CUDA는 cuDNN에서 마지막으로 지원하는 v11.1을 받는다 (링크).
- 환경변수 추가는 아래 2020.12 참조
- cusolver64_11.dll을 cusolver64_10.dll 으로 이름을 바꿔줘야 함 (cuda/v11.1/bin)
[2020.12] (참고로 tensorflow version 2.3.0)
- Quadro RTX 8000 드라이버는 ‘457.09-quadro-desktop-notebook-win10-64bit-international-whql’ 파일로 선택해서 설치
- CUDA 11.2가 최신이었으나, tensorflow 2.4.0에서는 아직 완전하지 않은 듯 에러가 남
- Tensorflow 2.3.0 및 10.1로 설치 (https://developer.nvidia.com/cuda-10.1-download-archive-base)
- cuDNN도 CUDA 10.1에 맞춰 다운로드(7.6.5로 안전하게 낮은 버전으로 함) (https://developer.nvidia.com/rdp/cudnn-archive)
- 환경 변수 추가 (참고: https://www.tensorflow.org/install/gpu)
-
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin;%PATH% SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\CUPTI\lib64;%PATH% SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include;%PATH% SET PATH=C:\tools\cuda\bin;%PATH%
[2019.4]
- 최신 release는 10.1이나, 안전한 설치를 위해 10.0 버전을 다운로드 받는다 (https://developer.nvidia.com/cuda-10.0-download-archive)
- 환경변수에 bin 주소 (일반적인 주소는 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0 )를 PATH에 추가해준다.
- cuDNN for CUDA 10.0을 받아 위 폴더에 압축을 푼다. (https://developer.nvidia.com/rdp/cudnn-download)
[2018.3]
- https://developer.nvidia.com/cuda-downloads 원래 주소이나, 아래에서 9.0을 받는다.
- https://developer.nvidia.com/cuda-90-download-archive
이 작업을 실행할 당시(2018년) tensorflow 1.5 버전은 cuda 9.1을 지원하지 않는다. (모르고 9.1 먼저 설치했다가 9.0을 다시 설치했다. 9.1은 지우지 않았다)
- 환경변수에 bin 주소 (일반적인 주소는 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0 )를 PATH에 추가해준다.
- CUDA 9.0에 해당하는 cuDNN을 받는다. (https://developer.nvidia.com/rdp/cudnn-download)
(당시에 9.0 중복설치시 환경변수에서 9.1에 관련된 내용을 다 제거했다)
4. Anaconda 환경 생성
Conda prompt로 진행하였다.
conda create -n cuda pip python=3.6 conda activate cuda
- cuda는 이름이다. -n 뒤에 원하는 이름으로 바꾸자
- [2018.3]: python 3.7으로 할 경우 markupsafe(jupyter dependency)에서 utf-8 관련 encoding 에러가 났었다(2018년)
- [2019.4]: 다시보니 3.6이 아니라 3.7인 경우였던 것 같다. Keras가 문제 없이 돌아갔던 python 버전을 보니 3.6으로 설치되어있었다.
- [2020.12] 역시 3.6으로 설치 후 아래의 패키지 설치 (이때에는 tensorflow를 2.3.0으로 맞춤, keras 따로 설치)
- [2021.01] 3.7로 설치 후 아래의 패키지를 설치 (tensorflow 2.4.0)
pip install notebook pip install tensorflow-gpu==2.4.0 pip install tensorflow==2.4.0 pip install matplotlib
5. 예제 실행 (2021.01)
- 간단하게는 python을 실행시킨 뒤
import tensorflow as tf tf.test.is_built_with_cuda() tf.config.list_physical_devices('GPU') #tf.test.is_gpu_available('GPU') 위의 함수로 바뀐다고 함 (2.4.0) tf.sysconfig.get_build_info()
- 길게는 아래의 소스를 실행시켜 본다. (출처: https://www.tensorflow.org/tutorials/keras/classification?hl=ko)
import tensorflow as tf from tensorflow import keras import numpy as np import matplotlib.pyplot as plt print(tf.__version__) fashion_mnist = keras.datasets.fashion_mnist (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'] plt.figure() plt.imshow(train_images[0]) plt.colorbar() plt.grid(False) plt.show() train_images = train_images / 255.0 test_images = test_images / 255.0 plt.figure(figsize=(10,10)) for i in range(25): plt.subplot(5,5,i+1) plt.xticks([]) plt.yticks([]) plt.grid(False) plt.imshow(train_images[i], cmap=plt.cm.binary) plt.xlabel(class_names[train_labels[i]]) plt.show() model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(128, activation='relu'), keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(train_images, train_labels, epochs=5) test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2) print('\n테스트 정확도:', test_acc)
Reference : https://medium.com/@hussnainfareed/setup-an-environment-for-machine-learning-and-deep-learning-with-anaconda-in-windows-5d7134a3db10
5 comments
pip install –upgrade tensorflow-gpu 대쉬 갯수 유의!
Window CUDA설치로 검색해 들어와 좋은 참고가 되었습니다.
저도 어느 병원의 전임의라 더욱 반갑네요.
하고자 하시는 일 건승하시길!
.
pip install –-upgrade tensorflow-gpu
upgrade앞에 대쉬 두 개입니다.
너무 감사합니다 ㅠㅠ
어제부터 GPU로 설치하는데 어려움을 겪어 포맷 후, 이 글을 보고 따라하니 다른 게시물에서는 없던
“cusolver64_11.dll을 cusolver64_10.dll 으로 이름을 바꿔줘야 함 (cuda/v11.1/bin)”
덕분에 해결했습니다.
감사합니다!