본문 바로가기
소프트웨어 (계산용 프로그램)/딥러닝 공부

[딥러닝] CuDNN 및 Tensorflow 설치

by Physics 2021. 5. 17.
728x90

1. 현재 클러스터의 하드웨어 제원 및 소프트웨어 제원 

※NOTE: 저의 경우 연구실에서 Diskless cluster의 형태로 클러스터를 사용하고 있습니다. 또한, 해당 페이지를 참조하는 분께서는 NVIDIA driver의 버전이나 CUDA의 버전이 저의 경우와 다를 수 있으므로, 참고만 해주시면 감사하겠습니다. 이미 tensor flow의 경우 설치된 CUDA의 버전에 의존하므로 참조하시길 바랍니다. 또한 다른 버전의 CUDA를 같이 사용하고자 한다면 다음 링크를 참조해주시길 바랍니다: 한 컴퓨터에 여러 버전의 CUDA 설치하기

   - 설치된 CUDA version 확인 
   (1) $nvcc -V 

   (2) $nvidia-smi 

Figure 1. CUDA version 확인 명령어

※NOTE: 아래의 설명은 CUDA 11.1이 설치되어있다는 가정하에 진행하였습니다.  

1) 하드웨어 제원: 
  (a) master 서버: GeForce GT 710 
  (b) node01: GeForce GTX 750 Ti

2) 소프트웨어 제원: 
  (a) Computer OS: Ubuntu 20.04 
  (b) NVIDIA driver's version: 455.23.04 
  (c) CUDA version: 11.1  

3) 설치할 소프트웨어의 제원 
  (a) cudnn version: 8.1.1 
  (b) Tensorflow-gpu: 2.5.0


2. CuDNN 설치하기 

0) NVIDIA 공식 설치 메뉴얼 : https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html

1) 다운로드 웹사이트: https://developer.nvidia.com/rdp/cudnn-archive   
나는 CUDA 11.1 version을 사용하므로 나는 CuDNN 8.1.1을 설치하였다. 

2) 다음 명령어를 입력하여 받은 cudnn 압축 파일을 해제한다: tar -xzvf cudnn-11.2-linux-x64-v8.1.1.33.tgz 

3) 아래의 명령어를 입력하여 압축을 해제한 CuDNN 파일들을 CUDA가 설치된 디렉토리에 복사한다. 

Figure 2. cudnn 파일들을 cuda 디렉토리에 복사

4) ~/.bashrc 파일에 CUDA와 관련된 path를 추가한다. 

# cuda environment
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda/include:$LD_LIBRARY_PATH

 

5) 설치된 cudnn의 버전 확인: $cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 
※ cudnn 8.x.x 이상의 버전부턴 cudnn_version.h 파일을 통해 cudnn의 버전을 확인한다. 


3. TensorFlow-GPU 버전 설치하기 

1) TensorFlow-GPU 설치 
아래 명령어를 기입하여 pip를 통해서 tensorflow를 설치한다. 

 

※ Tensorflow의 공식 홈페이지*에선 python 가상환경에서 만드는 걸 권장하지만, 나는 그렇게 하지 않았다. 
* https://www.tensorflow.org/install/pip?hl=ko
※ 최신 Tensorflow-GPU를 설치를 pip를 통해서 설치하면 2021-06-07일 기점으로는 CUDA 11.1과 정상적으로 동작하는 것 같다. 

2) TensorFlow의 버전 확인 
다음과 같이 python을 실행 후, tensorflow를 import한 후, 버전을 확인하자. 

$ python
Python 3.8.8 (default, Apr 13 2021, 19:58:26)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from tf2show import tf2show
>>> import tensorflow as tf
>>> tf.__version__ 
'2.5.0'

 

3) TensorFlow가 정상적으로 GPU와 동작하는지 확인  

 만일 아래의 코드를 실행 중, libcusolver.so.11과 관련된 에러메시지가 발생하는 경우, 아래의 "4. 설치과정 중 Error 메시지를 참조"

  - master 서버에서 - 

>>> from tensorflow.python.client import device_lib
>>> device_lib.list_local_devices()
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 8853219237317059340
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 683671552
locality {
  bus_id: 3
  numa_node: 2
  links {
  }
}
incarnation: 7491240211328982141
physical_device_desc: "device: 0, name: GeForce GT 710, pci bus id: 0000:42:00.0, compute capability: 3.5"
]

 

 - node01 에서 - 

>>> device_lib.list_local_devices()
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 17470823644940553233
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 1703346176
locality {
  bus_id: 1
  links {
  }
}
incarnation: 16858730795494695710
physical_device_desc: "device: 0, name: GeForce GTX 750 Ti, pci bus id: 0000:01:00.0, compute capability: 5.0"
]

 

따라서 정상적으로 tensorflow가 각 컴퓨터의 GPU를 사용함을 확인할 수 있다. 


4. 설치 과정 중 Error 메시지 

 1) libcusolver.so.11 관련 메시지 

Could not load dynamic library 'libcusolver.so.11'; dlerror: libcusolver.so.11: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/include:/usr/local/cuda/lib64

/usr/local/cuda/lib64에서 libcusolver를 찾아보면 아래와 같이 나온다. 

$ ls -la |grep libcusolver
lrwxrwxrwx 1 root root         19 Apr 16 16:05 libcusolverMg.so -> libcusolverMg.so.10
lrwxrwxrwx 1 root root         27 Apr 16 16:04 libcusolverMg.so.10 -> libcusolverMg.so.10.5.0.218
-rwxr-xr-x 1 root root  307505776 Apr 16 16:04 libcusolverMg.so.10.5.0.218
lrwxrwxrwx 1 root root         17 Apr 16 16:05 libcusolver.so -> libcusolver.so.10
lrwxrwxrwx 1 root root         25 Apr 16 16:04 libcusolver.so.10 -> libcusolver.so.10.5.0.218
-rwxr-xr-x 1 root root  521807760 Apr 16 16:05 libcusolver.so.10.5.0.218
-rw-r--r-- 1 root root  166564646 Apr 16 16:05 libcusolver_static.a

따라서 libcusolver.so 파일을 libcusolver.so.11 파일로 링크를 건다. 

$ln -s /usr/local/cuda/lib64/libcusolver.so /usr/local/cuda/lib64/libcusolver.so.11 

 

728x90

댓글