tensorflow를 GPU를 사용하여 돌릴려면 NVIDIA 드라이버를 설치해주어야한다.

 

1. 환경

NVIDIA 드라이버가 이미 설치되었는지 확인한다.

# cat /proc/driver/nvidia/version

만약에 파일 또는 디렉토리가 없으면 아직 드라이버가 설치되지 않은 것이다.

드라이버가 설치되지 않았다면 다음으로 GPU 모델과 커널 모듈 정보를 확인한다.

# lspci -k

아래와 같이 NVIDIA GPU 모델과 정보만 확인하면 된다.

00:03.0 VGA compatible controller: NVIDIA Corporation GK104GL [GRID K520] (rev a1)
          Subsystem: NVIDIA Corporation GK104GL [GRID K520]

위의 결과는 사용중인 커널 모듈 정보가 없을 때이다. 하지만 사용중인 커널 모듈 정보가 있을 경우
아래와 같이 Kernel driver in use 라고 하면서 모듈 정보가 나타난다.

02:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)
          Subsystem: NVIDIA Corporation GM107 [GeForce GTX 750 Ti]
          Kernel driver in use: nouveau
          Kernel modules: nvidiafb, nouveau

많은 NVIDIA 드라이버 설치 글들에서 nouveau 모듈이 사용되지 않게 blacklist에 추가하는 명령어를 실행하지만
이 글에서는 nouveau 커널 모듈이 사용중이더라도 설치 과정에서 자동으로 blacklist에 추가되므로 신경쓰지 않아도 된다.

 

아직 언어 설정이 되지 않았을 경우 설치에 필요한 언어셋, 로케일등 기본 패키지를 설치해준다.

# apt-get update && apt-get install -y dialog language-pack-en

# export LANGUAGE=en_US
# export LANG=en_US.UTF-8
# export LC_ALL=en_US.UTF-8

# update-locale

그 다음 아래의 내용을 /etc/default/locale 추가해주면 된다.

LANG="en_US.UTF-8"
LANGUAGE="en_US"
LC_ALL="en_US.UTF-8"

 

그 다음은 패키지 Repository를 추가해야 한다. 우분투 16.04, 18.04 버전 모두 NVIDIA Repository가 지원된다.

현재 NVIDIA 공식 Repository에서 지원되는 배포판 종류는 우분투 16.04, 17.04, 17.10, 18.04, 18.10 등이다.
이 배포판에 해당되는 우분투 버전을 사용하고 있으면 아래의 명령어로 패키지 리스트를 추가한다.

$ release="ubuntu"$(lsb_release -sr | sed -e "s/\.//g")
$ echo $release
// 만약 우분투 18.04일 경우, ubuntu1804와 같이 출력되고 16.04일 경우 ubuntu1604로 출력된다.

위의 명령어로 배포판 이름이 $release 변수에 저장되고 아래의 명령어에서 해당 Repository로 추가될 수 있도록 사용된다. 따라서 꼭 위의 명령어를 실행 후 아래의 명령어로 Repository를 추가한다.

$ sudo apt install sudo gnupg
$ sudo apt-key adv --fetch-keys "http://developer.download.nvidia.com/compute/cuda/repos/"$release"/x86_64/7fa2af80.pub"
$ sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/cuda/repos/'$release'/x86_64 /" > /etc/apt/sources.list.d/nvidia-cuda.list'
$ sudo sh -c 'echo "deb http://developer.download.nvidia.com/compute/machine-learning/repos/'$release'/x86_64 /" > /etc/apt/sources.list.d/nvidia-machine-learning.list'
$ sudo apt update

 

 

 

2. 정보 확인

NVIDIA 하드웨어 모델에 따라서 지원되는 GPU 드라이버 버전이 다르다.
따라서 아래의 페이지에 방문해서 설치하고자 하는 그래픽카드에 맞는 최신 버전의 드라이버 버전을 확인해야 한다.

http://www.nvidia.com/Download/Find.aspx?lang=en-us

불러오는 중입니다...

 

그리고 아래의 명령어를 실행하여 설치 가능한 드라이버 버전을 확인한다.

# apt-cache search nvidia
...
nvidia-304 - NVIDIA legacy binary driver - version 304.135
nvidia-304-updates - Transitional package for nvidia-304
nvidia-304-updates-dev - Transitional package for nvidia-304-dev
nvidia-340 - NVIDIA binary driver - version 340.104
...

우리의 GPU 모델은 NVIDIA TITAN RTX 이므로 Version은 440을 사용하면 된다.
NVIDIA 드라이버 버전이 410 이상일 경우 nvidia-driver-440처럼 패키지 이름이 변경되었다.
nvidia-driver-440을 설치하면 된다.

 

 

3. 드라이버 설치

$ sudo apt-get install nvidia-driver-440

 

우분투 16.04 등의 환경에서는 드라이버를 설치하다가 아래와 같은 오류가 발생할 수 있다.

Errors were encountered while processing:
nvidia-390
libcuda1-390
nvidia-opencl-icd-390
E: Sub-process /usr/bin/dpkg returned an error code (1)
Setting up nvidia-390 (390.30-0ubuntu1) ... update-alternatives: using /usr/lib/nvidia-390/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in auto mode update-alternatives: warning: skip creation of /usr/share/grub-gfxpayload-lists/blacklist/10_proprietary-graphics-drivers because associated file /usr/share/nvidia-390/nvidia-390.grub-gfxpayload (of link group x86_64-linux-gnu_gl_conf) doesn't exist update-alternatives: error: error creating symbolic link '/usr/lib/nvidia/alternate-install-present.dpkg-tmp': No such file or directory dpkg: error processing package nvidia-390 (--configure): subprocess installed post-installation script returned error exit status 2

위와 같은 오류가 발생할 경우 아래와 같이 nvidia 디렉토리를 생성 후, 다시 설치 명령어를 실행해 주면 된다.

$ sudo mkdir /usr/lib/nvidia
$ sudo apt-get install nvidia-driver-440

그리고 마지막으로 드라이버 버전에 상관 없이 공통적으로 아래의 패키지를 설치하면 된다.

$ sudo apt-get install dkms nvidia-modprobe
$ reboot

 

4. 확인

NVIDIA 드라이버 설치가 성공적으로 되었는지 확인한다.

$ sudo lspci -k
00:03.0 VGA compatible controller: NVIDIA Corporation GK104GL [GRID K520] (rev a1)
          Subsystem: NVIDIA Corporation GK104GL [GRID K520]
          Kernel driver in use: nvidia
          Kernel modules: nvidia_384_drm, nvidia_384

nvidia 커널 드라이버가 사용중으로 나타나고 있다.

 

아래의 명령어를 사용하면 드라이버 버전을 확인할 수 있다.

$ sudo cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.111 Tue Dec 19 23:51:45 PST 2017
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.6)

 

NVIDIA의 GPU를 사용하면 nvidia-smi 명령어로 시스템 정보를 확인할 수 있다.

$ nvidia-smi

위의 내용과 같이 정보들이 나타나면 드라이버가 성공적으로 설치된 것이다. 
이어서 CUDA SDK와 cuDNN 등의 라이브러리를 설치해야 한다.

 

Etc. NVIDIA 드라이버 에러

NVIDIA 드라이버 설치 후 부팅 할 때 아래와 같은 오류 메시지가 발생할 수 있다.

Failed to start NVIDIA Persistence Daemon.

 

BIOS 등의 설정 문제가 있을 수 있다. Secure Boot 옵션을 해제하고
메인보드에서 Abobe 4G Decoding 옵션이 지원될 경우 Enable로 활성화 해주어야 한다.

 

출처 : https://hiseon.me/linux/ubuntu/install_nvidia_driver/

'Server > Docker' 카테고리의 다른 글

Dockerfile을 사용하여 docker 이미지 생성하기  (0) 2020.03.26
Docker 명령어 사용해보기  (0) 2020.03.26
Docker 설치하기  (0) 2020.03.26

WRITTEN BY
Bugday

,