본문 바로가기

딥러닝

[LSTM] WSL에서 GPU 사용하기

저번에 WSL에서 LSTM을 사용하는 방법에 대해 알아보았다.

이전 편 -> LSTM 나도 한 번 돌려보자

 

LSTM 나도 한 번 돌려보자

주의! 딥러닝 파트의 게시글은 주로 고생고생해서 구동한 결과이다 보니.. 글이 좀 자유분방하게 작성된 편입니다. 자세한 설명은 저보다 chatGPT가 더 잘해줄 거라 믿습니다. 이 글을 찾아오신 여

itgear.tistory.com

 

그러나 문제가 있었으니... 바로 GPU를 사용하지 못하고 CPU로 학습을 진행하는 턱에..

작은 모델과 적은 데이터에서는 크게 상관이 없었으나,

모델의 복잡도가 증가하고 학습 데이터의 양이 증가할수록 학습에 들어가는 시간이 너무 커져 사용에 불편함이 생겼다.

 

그리고 비싼 돈 주고 GPU 샀는데 안 쓰면 아깝잖아!

 

딥러닝 연구를 하는 사람들은 내면의 평화와 스트레스성 탈모 방지를 위해 주로 엔비디아의 GPU를 사용할 것이다.

간혹 내장 그래픽, 라데온을 쓰는 (수상한) 사람도 있는데.. 미안하지만 그건 내가 어떻게 해줄 수가 없다.

 

엔비디아는 편리한 GPGPU 연산을 위해 CUDA와 cuDNN 라이브러리를 제공한다.

반대로 말하면 CUDA, cuDNN이 설치가 되어야 GPU로 연산을 할 수 있음을 뜻하고,

또 응용프로그램의 버전 별로 필요한 CUDA, cuDNN의 버전이 다를 수 있다는 점이다. 

 

여기서 머리가 아파진다. 서로 다른 응용프로그램은 서로 다른 CUDA, cuDNN을 버전을 필요로 한다면,

CUDA, cuDNN의 버전은 뭘 설치해야 하지..? 

 

이를 위해 친절하신 구글 형님들이 tensorflow 버전 별 올바른 CUDA, cuDNN의 버전을 설명해 주셨다.

소스에서 빌드  |  TensorFlow

 

소스에서 빌드  |  TensorFlow

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 소스에서 빌드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 소스에서 TensorFlow pip 패키

www.tensorflow.org

TF version, CUDA-cuDNN version.

 

이제 아래의 설치 과정을 통해 올바른 CUDA와 cuDNN을 설치하면 되는 것이다.

과정은 다음과 같다.

 

0. 그래픽카드 확인 

>> nvidia-smi

일반적으로 윈도우에서 그래픽 드라이버를 설치해서 쓰고 있다면, 위 명령어를 통해 그래픽카드의 정보를 확인할 수 있다.

nvidia-smi, Description of Graphic Card

위와 같이 그래픽카드가 WSL 상에서 인식이 된다면 다음 과정으로 넘어갈 준비가 되었다는 뜻이고.

인식이 되지 않는다면 윈도우에서 그래픽카드 드라이버를 설치 후 재부팅해서 다시 시도해 보자.

 

1. 본인이 설치한 tensorflow의 버전 확인

앞선 포스팅에서는 tensorflow 2.9.3을 기준으로 설치를 진행하였다. 그 말은 CUDA 11.2.* 와 cuDNN 8.1이 필요하다는 이야기.

그런데 만일, 이 블로그가 아니라 다른 블로그에서 tensorflow를 설치해서 버전을 모르겠다면?

 

>> conda list | grep tensorflow

위의 명령어를 사용해서 현재 사용하는 tensorflow의 버전을 확인할 수 있다.

TF version check

자 이제 본인의 tensorflow의 버전과 필요한 CUDA, cuDNN의 버전을 확인했다면 다음과 같은 절차를 통해 설치를 진행한다.

 

2. CUDA Toolkit Archive 접속

CUDA Toolkit Archive | NVIDIA Developer

 

CUDA Toolkit Archive

Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production

developer.nvidia.com

위 홈페이지에서 본인이 찾는 CUDA 버전을 확인한다.

내 tensorflow에 맞는 CUDA 11.2의 경우 11.2.2가 최신 버전이어서 해당 링크를 클릭하였다.

 

3. CUDA 설치

링크에 들어가서 순서대로 Operating System은 Linux, Architecture는 x86_64, Distribution은 WSL-Ubuntu, Installer Type은 runfile(local)을 선택하자.

Download CUDA

그러면 또 아래처럼 친절하게 설치를 위한 코드가 나온다.

wsl을 실행하고 cd 명령어를 통해 Working directory로 이동 후 순서대로 명령어를 입력하자.

Installation instructions

>> wget https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run

>> sudo sh cuda_11.2.2_460.32.03_linux.run

 

4. CUDA 설치 확인

설치가 완료되었다면 컴퓨터를 재부팅 후 아래의 명령어를 입력해서 CUDA가 잘 설치되어 있는지 확인해 보자

>> nvcc -V

Chcek CUDA version

 

간혹 이렇게 명령어를 입력했음에도 불구하고, 설치된 CUDA의 버전을 제대로 뱉지 않는 경우가 있다. 

그럴 경우 아래와 같은 명령어를 통해 CUDA의 위치를 옮겨주자.

 

>> cp -R /usr/local/cuda/bin/* /usr/bin

 

5. cuDNN 설치파일 다운로드

cuDNN Archive | NVIDIA Developer

 

cuDNN Archive

Download releases from the GPU-accelerated primitive library for deep neural networks.

developer.nvidia.com

 

위 링크에 들어가면 다양한 cuDNN 버전을 볼 수 있다. 참고로 cuDNN 다운로드를 위해서는 nvidia 회원가입이 필요하다.

CUDA 11.2와 호환되는 가장 최신의 8.1 버전은 8.1.1이고 해당 문자를 클릭하면 다음과 같은 화면을 볼 수 있다.

Download cuDNN

수많은 cuDNN의 홍수 속에서 우리는 cuDNN Library for Linux (x86_64)을 다운로드해 준다.

 

다운로드가 완료되면 해당 파일을 파일 탐색기를 통해 linux의 home 디렉토리로 넘겨주자.

 

Move File to Linux

 

6. cuDNN 설치

이제 WSL에서 아래의 명령어로 압축을 풀어준다.

 

>> cd

>> tar -xzvf cudnn-11.2-linux-x64-v8.1.1.33.tgz

 

압축 풀린 파일을 필요한 위치로 옮기고 권한 설정을 진행한다.

>> sudo mv cuda/include/cudnn.h /usr/local/include

>> sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64

>> sudo chmod a+r /usr/local/include/cudnn.h

>> sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

 

7. 프로그램 실행

이제 프로그램을 실행하면 다음과 같은 메시지가 뜬다.

-NUMA 에러는 멀티 CPU 관련 에러라 무시해도 상관없다.

중요한 건 맨 아래 줄 Tensorflow/어쩌구 저쩌구 Loaded cuDNN version 8101 

즉 cuDNN을 사용하여 프로그램이 굴러간다는 것!

Run program with cuDNN

 

정-말 길고 힘든 시간이었지만 앞으로의 학습 시간은 비약적으로 짧아질 것이기 때문에.. 이 노력은 언젠가는 보상을 받을 것이라고 생각한다.

 

 

이번 회차는 정말로 길고 힘든 시간이었습니다.. 따라서 설명이 횡설수설했을 수는 있지만 최대한 열심히 설명했습니다.

'딥러닝' 카테고리의 다른 글

[LSTM] LSTM 나도 한 번 돌려보자  (2) 2023.10.28