오뚝이개발자

ML개발 GPU 사용 환경 세팅하기(Anaconda, Tensorflow, Keras, CUDA, cuDNN) 본문

AI/AI 개발

ML개발 GPU 사용 환경 세팅하기(Anaconda, Tensorflow, Keras, CUDA, cuDNN)

땅어 2021. 11. 15. 23:02
728x90
300x250

 

 

GPU 환경세팅을 하면서 정말 삽질을 많이 했다....하....이게 참 버전 간 호환성을 맞추는 것도 일이다. 잘못 설치했다가 GPU를 인식하지 못해서 GPU 환경에서 돌리지 못한 경우도 생겼다.

 

아나콘다 설치


아나콘다는 AI나 데이터 분석에 필요한 여러 라이브러리들을 묶어둔 패키지이다. 이를 다운받아서 사용하면 일일히 필요한 라이브러리들을 설치하지 않아도 되서 매우 편하다. https://www.anaconda.com 에 들어가서 본인의 OS 환경에 맞는 버전을 다운받으면 된다. 중요한 것은 설치 도중 "Add Anaconda3 to my PATH environment variable"에 체크를 반드시 해주어야 한다는 것이다!!!!! 

 

conda 가상환경 만들기


conda를 사용해 가상환경을 만들어주어야 한다. 그냥 무작정 로컬에다가 모든 라이브러리들을 깔았다가는 버전 간에 충돌이 일어나 나중에 복잡해진다. 아래와 같은 커맨드로 가상환경을 설정해주자.

conda creat -n keras python=3.6

위와 같이 커맨드창에 입력하면 "keras"라는 콘다 가상환경이 만들어진다. "keras" 부분에 본인이 만들고자 하는 가상환경의 이름을 지정해주면 된다. 

가상환경을 설정해준 뒤 conda activate keras라고 커맨드 창에 입력하면 만들어둔 keras 가상환경을 활성화시킬 수 있다. 비활성화시킬 땐 conda deactivate라고 커맨드 창에 입력하면 된다. 가상환경을 활성화시키면 아래와 같이 앞부분에 (keras)라는 것이 생긴다.

(keras) [user@rna2 ~]$

참고로, conda list는 해당 콘다 가상환경에 설치된 라이브러리들을 살펴볼 수 있는 명령어이다. conda info --envs는 가상환경의 목록들을 보여준다.

만들어둔 가상환경을 삭제하려면 아래와 같이 커맨드 창에 입력해주면 된다. --all 옵션을 주면 해당 가상환경에 받아진 모든 라이브러리들을 지울 수 있다.

conda remove --name keras --all

 

GPU 환경에 필요한 라이브러리 설치(tensorflow, keras)


이제 케라스와 텐서플로를 버전에 맞게 설치해주어야 한다. 설치하려는 디렉토리에 requirements.txt라는 텍스트 파일을 만들고 아래의 내용을 붙여넣고 저장해준다.

tensorflow-gpu==1.14.0
numpy==1.16.2
matplotlib==3.1.0
pillow==6.1.0
opencv-contrib-python
keras==2.0.8

커맨드 창에 pip install -r requirements.txt라고 입력하면 위의 라이브러리들을 알아서 다 설치해준다.

 

CUDA, cuDNN 설치


라이브러리 설치를 다했으면 CUDA와 cuDNN을 설치해주어야 한다. 커맨드 창에 아래의 명령어를 차례로 입력해주면 된다. CUDA와 cuDNN 역시 버전간 호환이 되도록 설치해주어야 한다. https://www.tensorflow.org/install/source?hl=ko 에 가면 해당 텐서플로 버전에 맞는 파이썬과 CUDA, cuDNN 버전을 확인할 수 있다.(근데 뭔가 이상한게 나도 저거에 맞게 2.x 버전으로 다설치해봤는데 잘 안되었다.....결국 이 글의 방법대로 하니까 GPU 환경 세팅을 할 수 있었다. 들은 말로는 텐서플로 2.x 버전이 좀 unstable한게 있다는 것 같기도 하고...)

conda install cudatoolkit=10.0
conda install -c conda-forge cudnn

참고로, conda-forge를 사용하면 자동으로 의존성을 체크해 버전에 맞게 설치해준다. 간단하게 설명하자면 conda는 package manager이고 conda-forge는 채널이다.

 

사용가능한 GPU 확인 및 GPU 인식 여부 확인


여기까지 왔다면 이제 설치해야할 패키지들은 다 설치한 것이다. 그럼 내 컴퓨터에 혹은 서버에 사용가능한 GPU는 뭐가 있는지 확인하고 내가 설정한 환경에서 프로그램이 GPU를 잘 인식하는지 확인해봐야 한다.

nvidia-smi라고 커맨드 창에 입력하면 사용가능한 GPU가 뜬다. 혼자서 사용하는 컴퓨터라면 그냥 GPU를 사용하면 되지만 많은 사람이 같이 사용하는 서버라면 GPU 사용량이 0%인 것을 사용하면 된다. 0%가 아닌 GPU는 누군가가 사용하고 있다는 것이다. nvidia-smi가 각각 어떠한 정보를 담고 있는지는 이 링크를 참고하기 바란다.(일단 우리의 목적은 GPU 환경을 세팅하고 ML을 돌릴 수 있는 환경을 구축하는 것이 우선이니)

그런 다음 내가 설정한 환경에서 프로그램이 GPU를 잘 인식하는지 확인해봐야 한다. 쥬피터 환경에서 아래와 같이 입력해 실행해보면 된다.(혹은 그냥 test.py와 같이 파이썬 파일을 만들어 python test.py로 실행해봐도 된다.) 

import tensorflow as tf

tf.config.experimental.list_physical_devices('GPU')

만약 GPU를 제대로 인식하고 있다면 아래와 같은 결과가 출력될 것이다. 이는 사용가능한 GPU를 그들의 number와 함께 알려주는 것이다. 그런데 만약 GPU를 인식하지 못하고 있다면 empty list를 반환할 것이다.

[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU'),
 PhysicalDevice(name='/physical_device:GPU:1', device_type='GPU'),
 PhysicalDevice(name='/physical_device:GPU:2', device_type='GPU'),
 PhysicalDevice(name='/physical_device:GPU:3', device_type='GPU'),
 PhysicalDevice(name='/physical_device:GPU:4', device_type='GPU')]

 

프로그램이 GPU를 사용하도록 설정


이제 프로그램이 GPU를 사용해 돌아가도록 설정해주어야 한다. 이에 대해서는 이전 글에서 포스팅 해둔게 있으니 참고하기 바란다.([Tensorflow] 텐서플로우 GPU로 실행하도록 설정하는 방법)

 

 

 

728x90
300x250
Comments