시작하기에 앞서
- [Cloud] Google Cloud Platform으로 무료 GPU 서버 생성하기 글에서, 딥러닝 서버를 구축할 때 CUDA 가 미리 설치되어있는 부팅 디스크 이미지를 골라 사용했었습니다.
- 최근에 딥러닝 서버를 새로 구축해야할 일이 생겨서 이런저런 세팅을 건드려보았는데, 그 과정에서 워낙 많은 어려움을 겪은 관계로... 본 포스팅을 통해 그 과정을 정리해두고자 합니다.
- 여기서 밑바닥부터 구축한다는 말의 의미는, 딥러닝 실험에 필요한 NVIDIA DRIVER, CUDA Toolkit, conda 등을 직접 설치한다는 이야기이며, 설치하는 과정에서 겪었던 문제들을 간단하게 다루어보도록 하겠습니다.
기본 정보

- 새로운 서버를 구축하는 과정에서 사용한 부팅 디스크 이미지입니다.
ubuntu-pro-1804-bionic-v20240312 이미지를 사용했습니다.
- 해당 이미지에는 NVIDIA DRIVER 나 CUDA Toolkit 과 같은 GPU 자원을 사용하기 위해 필요한 도구들이 전혀 설치되어있지 않았습니다. 따라서 직접 설치해보기로 했습니다.
NVIDIA DRIVER
ubuntu-drivers devices
sudo apt install ubuntu-drivers
sudo apt instll nvidia-driver-{드라이버_이름}
sudo apt autoinstall
sudo reboot
nvidia-smi
- 제일 먼저 해야할 것은, GPU 버전에 맞는 NVIDIA DRIVER 를 설치하는 것입니다.
- CUDA Toolkit 을 설치해보신 분이라면 아실 텐데, CUDA Toolkit 설치 시 NVIDIA DRIVER 도 같이 설치할 수 있는 옵션이 있긴 합니다. 다만 GCP 에서 해당 옵션을 선택한 뒤 설치를 시도했을 때, 단 한 번도 성공한 적이 없었습니다. (GPU 와 호환이 되는 버전임에도 설치가 안됐습니다)
- 뒤에서 얘기할 내용이긴 하지만, NVIDIA DRIVER 옵션을 제외하고 CUDA Toolkit 만 설치한 뒤 NVIDIA DRIVER 를 설치하면 되지 않나요? 라고 하실 수도 있는데, 안 되더라구요. 시간을 아끼고 싶으시다면,,, NVIDIA DRIVER 를 설치한 뒤 CUDA Toolkit 을 설치하시는 것을 권장해드립니다.

ubuntu 계열의 os 라고 한다면, ubuntu-drivers devices 라는 명령어를 통해 GPU 버전에 맞는 드라이버를 확인하실 수 있습니다. 만약 명령어를 찾을 수 없다고 경고 메시지가 나타나는 경우 sudo apt install ubuntu-drivers 명령어를 통해 설치해주시면 됩니다.
- 해당 명령어를 실행했을 때, 제 경우에는
nvidia-driver-470 을 권장 (위 그림에서 recommended 라고 표시되어있음) 했었는데요. 실제로 설치해보니 CUDA 버전이 너무 낮아서 제가 원하는 버전의 pytorch 버전을 사용할 수 없었던 관계로, nvidia-driver-525 버전을 선택했었습니다. Pytorch 버전이 크게 중요하지 않으시다면, 혹시 모를 에러를 방지하기 위해 recommended 표시가 된 driver 를 설치하시는 것을 권장드립니다.
- Driver 선택을 완료하셨다면,
sudo apt install nvidia-driver-{드라이버_이름} 명령어를 통해 설치해주도록 합시다.
- 이후
sudo reboot 명령어를 통해 서버를 재부팅합시다. GCP 의 경우 sudo reboot 명령어를 통해 연결이 끊기고 나면, VM 인스턴스로 가서 인스턴스 재설정을 클릭하여 재부팅을 완료해줍시다.
- 드라이버 설치 후 재부팅까지 완료되었다면,
nvidia-smi 명령어를 통해 GPU 상태가 정상적으로 모니터링되는지 확인해봅시다.

- 위 이미지처럼 GPU 상태 모니터링이 가능하다면, 드라이버 설치가 완료된 것입니다.
TODO: GPU가 잡히지 않는 경우 대응 방법 정리하기
- CUDA Toolkit 을 설치하기 전에, CUDA Toolkit 과 NVIDIA DRIVER 의 역할이 무엇인지 간단하게 알아봅시다.
CUDA: NVIDIA GPU 의 병렬 프로그래밍 언어
- 2NVIDIA 에서 2006년에 출시한 솔루션으로, GPU 에서 수행하는 병렬 처리 알고리즘을
C언어 등을 비롯한 산업 표준 언어를 이용해 작성함으로써, GPU 사용에 대한 진입 장벽을 낮추었습니다.
- 딥러닝 모델의 경우 많은 양의 연산을 반복적으로 수행해야 하는데요. GPU 를 이용한 병렬 연산 처리가 CUDA 의 등장으로 인해 비교적 쉬워지면서, 딥러닝 분야도 많은 수혜를 얻었습니다.
CUDA Toolkit: CUDA 사용에 필요한 프로그램 패키지
- 말 그대로입니다. CUDA 를 올바른 방법으로 사용하기 위해 필요한 여러 프로그램들을 모아둔 패키지입니다.
- 3CUDA Toolkit 내부에는 GPU 가속화를 위한 라이브러리들, 디버깅 및 최적화 도구,
C 및 C++ 컴파일러, runtime library 가 들어있습니다.
NVIDIA DRIVER: CUDA 명령을 GPU 에 전달
- CUDA 가 GPU 를 제어하는 명령이라면, NVIDIA DRIVER 는 CUDA 명령을 GPU 에 잘 전달하는 역할이라고 생각할 수 있습니다.
- 설치는 간단합니다. 우선 CUDA Toolkit Archive 로 접속해서, 원하는 버전의 CUDA Toolkit 을 설치해주도록 합시다. 단, 이전에 설치했던 NVIDIA DRIVER 와 호환되는 버전의 CUDA 를 설치해야 합니다.

nvidia-smi 명령어를 통해 GPU 상태를 출력해보면, CUDA 를 설치하지 않았음에도 CUDA 버전이 출력되는 것을 볼 수 있습니다. 해당 버전의 CUDA Toolkit 을 설치해주시면 되겠습니다.
Source: CUDA Toolkit 12.0 Downloads, NVIDIA DEVELOPER
- 서버 세팅에 맞게 값을 설정해주시면 이미지 가장 하단에 나오는 것처럼 설치 명령어 두 개가 등장합니다. 첫 번째 명령어는 설치 파일을 다운로드하는 명령어이고, 두 번째 파일은 해당 파일을 실행하는 명령어입니다.
- 두 번째 명령어를 실행하면, 아마 CUDA 를 설치했던 기록이 있으니 이를 삭제하고 다시 설치하는 것을 권장한다는 경고 문구가 먼저 나타날 겁니다. 이건 NVIDIA Driver 를 먼저 설치해서 나타는 것으로, continue 를 눌러 계속 진행하시면 됩니다.
- 설치하기 바로 전 단계에 어떤 프로그램을 설치할 것인지 선택할 수 있는데요. NVIDIA DRIVER 는 이미 설치했으니 해당 옵션은 취소한 뒤 CUDA Toolkit 을 설치해주도록 합시다. 조금 기다리시면, 설치가 완료됩니다.
Miniconda
- 다음으로는 가상환경 관리를 위해 miniconda 를 설치해줍시다.
- Miniconda 는 Anaconda 의 경량화(?) 버전이라고 생각할 수 있습니다. Anaconda 의 경우 데이터 과학에 사용할 수 있는 각종 패키지들을 모두 설치한 상태에서 출발한다면, miniconda 는 필수 패키지만 설치한 상태에서 출발합니다. 풀옵션 자취방 vs 기본옵션 자취방 정도로 비교할 수 있을 것 같네요.
Source: Quick command line install, Miniconda
- 다양한 설치 방법이 있는 것으로 보이는데요. 저는 CLI 에서 쉽고 빠르게 설치할 수 있는 방법을 선택했습니다.
- 서버 OS 에 맞게 선택하면 제공되는 명령어들을 그대로 실행해주시면, 설치가 완료됩니다. 이후 터미널을 재부팅하셨을 때 터미널의 맨 앞에
(base) 라고 나타나면, miniconda 설치도 완료입니다.
Summary
- 본 포스팅에서는 ubuntu 계열의 GCP 서버에서, NVIDIA DRIVER, CUDA, conda 등의 프로그램들을 직접 설치하는 방법에 대해 다루어 보았습니다.
- 딥러닝 서버를 구축하다보면, 한 번 쯤은 직접 다 설치해야하는 일이 생기는 것 같습니다.
- GCP 에서 처음부터 구축하느라고 삽질을 엄청 많이 하긴 했지만,,, 좋은 경험이었다고 생각합니다.
Reference
- Ubuntu 20.04 CUDA 재설치
- CUDA 툴킷 다운로드하고, GPU를 자유자재로 활용해보자!
- CUDA Toolkit