개발/Infra문제해결

[Ubuntu / Tensorflow] TensorflowGPU환경설정하기(Conda, Cuda, CuDNN)

코드아키택트 2021. 6. 5. 21:29
반응형

오늘은 TensorflowGPU(또는 KerasGPU)설정을 위해서 해야하는 설정에 대해서 알아보겠습니다. 설정해야하는 것은 크게 ? 항목입니다. 각각 아나콘다 파이썬 3.6 가상환경설정 / CUDA설치 / CuDNN설치 입니다.

 

호환성 체크 및 설치파일 확인

더보기

https://www.tensorflow.org/install/source

위의 사이트에가서 테이블을 꼭 확인하도록 합시다. 설치상 수많은 문제들이 생기는데, 최소한 테이블에 제시된 버전들을 설치한다면 버전문제는 아니라는게 검증되기 때문에 추후에 문제가 생겼을때 좀더 유연하게 대응할 수 있습니다. 저는 텐서플로우 2.4를 설치하겠습니다. 

버전을 꼭확인하자

위와같은 프로그램들이 필요합니다. 설치측면으로 보면 GPU드라이버 , CUDA(CUPTI포함), cuDNN입니다. 각각 설정은 필요한 페이지에서 설명하도록 하겠습니다.

 

쿠다 다운로드 및 설치

더보기

https://developer.nvidia.com/cuda-toolkit-archive

위의 사이트에가서 쿠다를 다운받도록 합시다.

  저는 위와같이 선택했습니다. deb(local)과 deb(network)는 다운로드 -> apt-get에 등록 -> apt-get을 통한 설치 순서로 이루어지는 파일들인데, 제가 11.3을 설치했던 이력이 남아서인지 계속 11.3으로 설치되어 가장 왼쪽 옵션으로 했습니다. 아래 창에 나온 커맨드 들을 차례대로 터미널에 입력하면 됩니다.

 설치파일을 통째로 다운받는 옵션이라고 보시면되고, 그렇기 때문에 다운받는데 긴 시간이 걸립니다.

설치 후. Driver는 설치 안되었다는 메세지를 볼 수 있습니다.

다운받고나서 실행시키면 앞에서 EULA 동의 부분이 나오고 시스템에 따라 몇몇 커맨드 창이 뜹니다. accept 와 continue를 하시면 이 화면으로 넘어올 것입니다. 저는 Driver설치까지하면 문제가 생겨서 driver부분은 제외하고 설치했습니다. 이제 공식문서를 참고해서 진행하도록 하겠습니다

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

 

설치후 할것들

공식문서의 "9.Post installation"부분에 해당합니다.

반드시 해야하는 부분

환경변수 설정

 윈도우도 그렇지만 프로그램들은 환경변수를 설정해줘야합니다. 제가 아는게 맞다면 bin아래에 소프트 링크를 달아서 하는 방법도 있지만 여기선 ~.bashrc파일에 환경변수를 등록하는 방법을 사용합니다. 원래는 'export'라는 커맨드를 쓰면 되야하는데 제 컴퓨터에서는 되지 않아 파일에 직접 입력하기로 하였습니다.

실행후 다음과 같은 라인을 맨 밑에 추가해주도록 합시다. 사실 위치는 크게 상관없는데, 그냥 모양이 맨 밑에 넣는게 좋아보여서 그렇습니다. vi는 입력방법이 다른데, 여기선 다루지 않겠습니다. 

 공식문서와 다른점은 본인이 설치한 파일과 맞는 위치로 해야한다는 것입니다. 가령 문서에는 cuda-11.3으로 나와있지만 저는 11.0을 설치했고, 실제로 저 위치에 11.0이 있기 때문에 위와 같이 설정했습니다.

 위설정까지만 하면 설치는 끝났습니다. 공식문서의 표현을 빌리면 반드시 해야하는 설정은 끝났습니다.

위와 같이 한후 .bashrc파일을 한번 리프래쉬 하면 nvcc 가 작동하는 것을 볼 수 있습니다.

POWER9설정

 NVIDIA POWER9 CUDA 드라이버의 새로운 기능을 위해 설치해야 한다고 합니다. 꼭 해줘야 하는 영역이니 하도록 합시다 

systemctl status nvidia-persistenced 커맨드로 Persistence-daemon이 돌아가는지 확인합니다.

제꺼의 경우 돌아가고 있지 않으니 activate 해줍니다. 아래의 커맨드를 입력합니다

sudo systemctl enable nvidia-persistenced

위 커멘드를 입력해도 안될수도 있습니다. 그런경우 컴퓨터 리부트를 해줍시다.

udev룰 비활성화

우분투 및 레드햇 리눅스에서 기본설정되어있는 udev로 인해 메모리 문제가 생길 수 있다고 합니다. 그런 이유로 udev를 비활성화해야합니다.

우분투의 경우 rule파일은 다음 위치에 있습니다.

/lib/udev/rules.d/40-vm-hotadd.rules 

공식문서에서는 파일의 구조를 보는 방법도 있으나 생략하겠습니다. 비활성화 방법은 위의 파일을 카피한후, 내용을 더하면 되는데 단 두줄의 터미널 커맨드로 가능합니다.

sudo cp /lib/udev/rules.d/40-vm-hotadd.rules /etc/udev/rules.d

sudo sed -i '/SUBSYSTEM=="memory", ACTION=="add"/d' /etc/udev/rules.d/40-vm-hotadd.rules 

메모리 부분의 내용이 사라진것을 볼 수 있습니다. 이제 리스타트를 해봅시다.

CUPTI Path추가

이 부분은 Tensorflow공식 문서에 나와있던 것으로 CUPTI Path를 .bashrc에 추가해줍시다.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64

이후 설명하는 부분은 권장 또는 Optional로 안해도 된다는게 공식문서 설명입니다.

cuDNN설치

더보기

https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download

 

Installation Guide :: NVIDIA Deep Learning cuDNN Documentation

The NVIDIA® CUDA® Deep Neural Network library™ (cuDNN) is a GPU-accelerated library of primitives for deep neural networks. cuDNN provides highly tuned implementations for standard routines such as forward and backward convolution, pooling, normalizati

docs.nvidia.com

https://developer.nvidia.com/rdp/cudnn-archive

 

cuDNN Archive

NVIDIA cuDNN is a GPU-accelerated library of primitives for deep neural networks.

developer.nvidia.com

가입이 안되어있다면 가입 후 진행하도록 합시다.

설치전에 그래픽 드라이버 및 CUDA툴킷이 설치되어 있어야 합니다.

Tensorflow문서에 따라 8.0.4버전을 설치할 것이며, 쿠다는 11.0을설치했기 때문에 이에 맞는 버전을 선택하겠습니다.

맨위가 설치파일이며, 추후에 설치 테스트를 위해 6번째 code samples를 다운받아야 합니다.

 

설치위치는 Download라고 가정하고 시작하겠습니다.

Tar파일로 설치하기

우선 압축을 풉니다.

tar -xzvf cudnn-11.0-linux-x64-v8.0.4.30.tgz 

 

다음 파일들을 쿠다 툴킷 위치에 카피해줍니다.현재위치는 Downlod입니다.

$ sudo cp cuda/include/cudnn*.h /usr/local/cuda/include

$ sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64

$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

 

샘플 설치 및 설치확인

이 파일을 설치합니다

파일 카피

cp -r /usr/src/cudnn_samples_v8/ $HOME

위치 이동

cd $HOME/cudnn_samples_v8/mnistCUDNN

샘플 컴파일

make clean && make

실행

./mnistCUDNN

 

Nvidia Driver 설치

더보기

여러 방법이 있겠지만 터미널 기준으로 하겠습니다.

드라이버 찾기

apt search nvidia-driver 명령어를 통해 어떤 드라이버를 설치 가능한지 확인합니다.

저는 위와같이 나옵니다. 각각의미는 알게되면 입력하도록 하겠습니다.

가장 편한 방법은 ubuntu-drivers devices 를 입력해 추천하는 드라이버를 설치합니다

인터넷에서 찾아본 결과 apt search에 대한 부분 설명이 부족하여 ubuntu-drivers devices방법으로 하겠습니다. 위 중 recommended가 붙은 465버전을 설치하겠습니다.

리포지토리를 업데이트 합니다

sudo apt update

sudo apt upgrade

설치하기

sudo apt-get install nvdiai-driver-버전 을 실행합니다. 저는 위에서 recommended버전을 설치하기로 햇으니

sudo apt-get install nvdiai-driver-465 가 커맨드가 됩니다.

 설치가 끝나면 위와같은 메세지를 볼 수 있습니다.

위의 과정을 거치면 설치는 종료됩니다. 제 설치는 결론적으로 성공된것과 실패된 부분이 있었습니다. 추후에 가령 텐서플로우 기본 예제는 실행되었지만, 어떤 부분들은 라이브러리 오류로 되지 않았습니다. 추후에 컴퓨터를 재설정할때 보완하도록 하겠습니다.

참고사이트


https://www.youtube.com/watch?v=hHWkvEcDBO0&ab_channel=AladdinPersson - 설치 튜토리얼(윈도우)

https://phoenixnap.com/kb/install-nvidia-drivers-ubuntu -  Nvidia 드라이버 설치

반응형

'개발 > Infra문제해결' 카테고리의 다른 글

[Pytorch]ReadTimeoutError 에러 해결하기  (0) 2023.12.10