리눅스 환경에서 cuda와 cudnn을 설치하기 위한 방법을 기록해두고자 합니다.
먼저 cat /etc/os-release
를 통해서 자신의 OS를 확인합니다.
PRETTY_NAME을 확인하면 Ubuntu 버젼을 확인할 수 있는데 저 같은 경우에는 Ubuntu 24.04.1 LTS인 것을 확인할 수 있습니다.
그 다음으로는 시스템에 엔비디아 GPU가 있는지 확인하겠습니다.
lspci | grep -i NVIDIA
를 통해서 GPU를 확인할 수 있습니다.
저 같은 경우 노트북을 사용하여서 GeForce RTX 3070 Mobile GPU가 설치되어 있는 것을 확인할 수 있습니다.
그 다음으로는 시스템을 업데이트 하겠습니다.
(NVIDIA 드라이버와 CUDA 툴킷은 최신 시스템 패키지와 의존성을 요구합니다. 시스템을 업데이트하지 않으면 드라이버 설치 중 충돌이 발생하거나, CUDA가 제대로 작동하지 않을 가능성이 있습니다.)
먼저 로컬 패키지 인덱스를 업데이트 하겠습니다.
sudo apt update
를 통해서 먼저 업데이트를 합니다.
(저 같은 경우 지금 cuda를 설치하려다가 제대로 설치가 되지 않아서 InRelease가 나오는데 이 부분의 경우 넘어가셔도 됩니다. 아마 Hit~~가 나온다면 정상적으로 실행 된 것 일겁니다.)
sudo apt upgrade -y
를 통해서 그 다음 upgrade를 진행하겠습니다.
그 다음으로 sudo apt install ubuntu-drivers-common
를 실행합니다.
NVIDIA 드라이버 추천
ubuntu-drivers-common
패키지는 사용자의 하드웨어를 스캔하고 시스템에 적합한 NVIDIA 드라이버를 자동으로 추천해주기 때문에 이를 설치하는 것 입니다!
sudo ubuntu-drivers devices
를 하여 recommended를 확인합니다.
가장 적합한 driver를 추천해주므로 이를 활용해서 설치를 진행하면 됩니다.
저 같은 경우 nvidia-driver-550 을 추천해주므로 이 driver를 설치하겠습니다.
model에서 제가 사용하고 있는 GPU를 확인할 수 있습니다.
lspci | grep -i NVIDIA
말고도sudo ubuntu-drivers devices
를 통해서도 GPU를 확인할 수 있습니다!
(아마 다들 사용하는 GPU에 따라 추천해주는 driver가 다를 것이므로 추천해주는 driver를 설치하시면 됩니다.)
그 다음으로는 sudo apt install nvidia-driver-550
을 통해서 nvidia driver을 설치하겠습니다. 이 때 뒤의 숫자는 추천해주는 driver number를 넣으셔야 됩니다!!!
(저의 경우 550을 추천해줘서 550으로 설치를 진행한 것 입니다.)
이후 reboot
를 입력하고 시스템을 재부팅한 뒤 다시 시작하겠습니다.
그렇게 되면 nvidia-smi
를 입력하게 되면 설치된 Nvidia 드라이버의 세부 정보를 표시하는 Nvidia 시스템 관리 인터페이스가 나타나게 됩니다.
다음으로는 cuda tool-kit을 설치할 때 필요한 gcc를 설치하겠습니다.
sudo apt install gcc
를 통해서 gcc를 설치해줍니다.
설치 완료 이후 버전을 확인합니다.
gcc -v
를 통해서 설치된 gcc의 버전을 확인합니다.
sudo apt install build-essential
을 통해서 필수적인 패키지를 설치하실수도 있습니다.
추천하는 cuda version의 경우 12.4 였지만, Tensorflow GPU를 사용하기 위해서 12.1을 설치하겠습니다. 먼저, 설치를 위해서 cuda download를 입력 후 들어갑니다.
여기서 보시면 Version에서 24.04가 없는 것을 확인 할 수 있습니다.
하지만, 22.04에서도 24.04가 실행 가능하므로 걱정하시지말고 22.04를 클릭하여 진행하도록 합니다.
이후 나온 wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run
를 터미널에 입력하여 다운로드 합니다.
(좀 오래 걸리는 작업이므로 다운로드 되는 동안 휴식을 취하시면 됩니다.)
저는 설치하는데 35분이나 걸렸네요!
이후 sudo sh cuda_12.1.1_5.0.30.02_linux.run
을 입력합니다.
입력 후 비밀번호를 입력하게 되면 아래의 화면으로 넘어가게 됩니다.
여기서 아래 방향키로 내려 Continue를 엔터하여 다음 화면으로 넘어갑니다.
이 화면에서 아래에 accept를 입력 후 엔터를 치면, 다시 아래의 화면으로 넘어가게 됩니다.
이 화면에서 Driver의 경우 530.30.02인데, 새 터미널을 열어서 nvidia-smi
를 입력하여 우리의 드라이버 버전을 확인하면 550인것을 확인할 수 있습니다.
따라서 굳이 설치할 필요가 없으므로 Driver부분을 엔터쳐서 X를 없애줍니다.
이후 Install을 엔터하여 설치를 진행합니다.
위 사진과 같이 설치가 완료되면 이상 없습니다!
nano ~./bashrc
를 입력합니다.
입력화면에 들어간 뒤 가장 아래에 다음을 붙여넣기 합니다.
export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
이후 Ctrl+O 입력, 엔터누르고, Ctrl+X 입력하여 저장 후 나옵니다.
다음으로 위 사진과 같이 source ~./bashrc
입력하여 적용시킵니다.
그 다음으로 sudo nano /etc/ld.so.conf
를 입력합니다.
(라이브러리 경로를 입력하기 위함입니다.)
(sudo nano /etc/ld.so.conf
를 입력하여 넘어온 화면의 모습입니다.)
이 화면에서 /usr/local/cuda-12.1/lib64
를 입력하여 저장하고 나가도록 합니다.
항상 암호를 입력할 때 한/영 변환이 제대로 되어있는지 확인하시기 바랍니다.
방금 하는 도중 자꾸 비밀번호가 틀렸다길래 왜 그런가 확인했더니 한/영 변환이 되어 있지 않아서 이런 문제가 지속적으로 발생했습니다. ㅠㅠ
이후 sudo ldconfig
입력 후 아무것도 반환되지 않으면 됩니다.
다음으로 echo $PATH
를 입력하여 아래에 제대로 설치됐는지 확인합니다.
여기서 12.1이 나오는것을 확인하면 OK입니다!
(다른 버전을 다운로드 하신 분들은 다운로드한 버전의 숫자가 나온다면 제대로 설치가 된 것입니다!)
다음으로 echo $LD_LIBRARY_PATH
를 입력 후 lib이 제대로 나오는지 확인합니다.
이렇게 모두 잘 나온다면 기본적으로 시스템에서 cuda tool-kit이 구성되었으므로
sudo ldconfig -p | grep cuda
을 입력하면 많은 것을 확인할 수 있습니다.
위 사진과 같이 여러개가 나오는 화면을 확인할 수 있으면 성공입니다!
이제 nvcc --version
을 입력하면
짠~~!! 드디어 CUDA가 제대로 설치 된 것을 확인할 수 있습니다!
nvcc -V
를 입력해도 제대로 나오는 것을 확인할 수 있습니다!
cudnn을 설치하기 위해서 cudnn을 입력 후 nvidia의 cudnn archive에 들어갑니다.
12.x를 지원하기 때문에 cuDNN의 8.9.7을 다운로드 합니다.
이 때 Linux_x86_64(Tar)을 다운로드 합니다.
별표된 부분을 클릭하여 다운로드 합니다.
다운로드가 완료됐다면 Downloads폴더에서 다운된 파일을 확인할 수 있습니다.
이제 다운로드 폴더로 이동합니다. cd Downloads
tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
를 입력하여 다운로드한 cudnn 의 압축을 해제합니다.
다운로드를 하던 도중 아래와 같이 오류가 발생할 수 있습니다.
그런 경우에 다음 명령어를 통해서 다운로드된 파일의 크기를 확인해보시고, 파일의 크기가 아마 800MB를 넘지 않는다면 제대로 다운로드가 되지 않아서 발생하는 에러일 가능성이 높습니다.
그런 경우 다운로드 한 파일을 삭제하고 다시 다운로드 하는게 오류를 일으키지 않을 가능성이 높습니다.
저 같은 경우 파일의 크기가 380MB로 제대로 압축이 풀릴 수가 없는 환경이였다는 것을 인지 후 다시 재 다운로드를 하였습니다.파일 크기를 확인하는 명령어 :
ls -lh cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
이렇게 완료된 모습을 확인할 수 있었습니다.
그 다음으로 cd cudnn-linux-x86_64-8.9.7.29_cuda12-archive
를 입력하여 폴더로 이동합니다.
이제 파일들을 cuda로 복사 붙여넣기를 진행해야 됩니다.
아래의 커맨드들을 순서대로 입력해줍니다.
sudo cp include/cudnn*.h /usr/local/cuda-12.1/include
sudo cp lib/libcudnn* /usr/local/cuda-12.1/lib64
sudo chmod a+r /usr/local/cuda-12.1/include/cudnn*.h /usr/local/cuda-12.1/lib64/libcudnn*
이제 cd ..
를 입력하여 전 폴더(다운로드 폴더)로 이동한 뒤
ls -l /usr/local/cuda-12.1/lib64/libcudnn*
를 입력하여 복사 붙여넣기가 제대로 잘 작동했는지 확인합니다.
다음으로 nano test_cudnn.c
를 입력하여 입력창이 나오면 아래의 코드를 입력하고 저장합니다.
// test_cudnn.c
#include <cudnn.h>
#include <stdio.h>
int main() {
cudnnHandle_t handle;
cudnnStatus_t status = cudnnCreate(&handle);
if (status == CUDNN_STATUS_SUCCESS) {
printf("cuDNN successfully initialized.\n");
} else {
printf("cuDNN initialization failed.\n");
}
cudnnDestroy(handle);
return 0;
}
위 사진처럼 코드를 입력 후 저장합니다.
gcc -o test_cudnn test_cudnn.c -I/usr/local/cuda-12.1/include -L/usr/local/cuda-12.1/lib64 -lcudnn
다음으로 위 커맨드를 입력합니다.
이후 ./test_cudnn
를 입력하여 실행시키면
짠~! 이제 성공적으로 초기화 되었음을 확인할 수 있습니다!