Anaconda Tensorflow GPU 버전 설치 (2021.01 수정)

마지막 실행 성공(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

  1. 2018. 3: 1080ti
  2. 2019. 4: Titan V
  3. 2020. 12: Quadro RTX 8000

1. Visual Studio 설치

  • https://www.visualstudio.com/ko-kr/downloads/download-visual-studio-vs
[2020.12]
  • Visual Studio 2019 설치 (이 페이지에서도 최신 빌드는 MSVC 2019를 사용함)
[2019.4]
  • 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]

[2018.3]

이 작업을 실행할 당시(2018년) tensorflow 1.5 버전은 cuda 9.1을 지원하지 않는다. (모르고 9.1 먼저 설치했다가 9.0을 다시 설치했다. 9.1은 지우지 않았다)

(당시에 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()

 

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

0 Shares:
4 comments
  1. Window CUDA설치로 검색해 들어와 좋은 참고가 되었습니다.
    저도 어느 병원의 전임의라 더욱 반갑네요.
    하고자 하시는 일 건승하시길!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.