[GCP] GCP에서 딥러닝 서버 밑바닥부터 구축하기

박수영·2024년 3월 15일

GCP

목록 보기
3/5

시작하기에 앞서

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

기본 정보

  • 새로운 서버를 구축하는 과정에서 사용한 부팅 디스크 이미지입니다. ubuntu-pro-1804-bionic-v20240312 이미지를 사용했습니다.
  • 해당 이미지에는 NVIDIA DRIVERCUDA Toolkit 과 같은 GPU 자원을 사용하기 위해 필요한 도구들이 전혀 설치되어있지 않았습니다. 따라서 직접 설치해보기로 했습니다.

NVIDIA DRIVER

### Shortcut ###
# 1. 현재 GPU와 호환되는 드라이버 종류 확인하기
ubuntu-drivers devices

# 1-a (optional). 만약 ubuntu-drivers 설치하지 않았다면
sudo apt install ubuntu-drivers

# 2. recommended 표시된 driver를 설치
sudo apt instll nvidia-driver-{드라이버_이름} # 설치 방법 1
sudo apt autoinstall # 설치 방법 2

# 3. 서버 재부팅
sudo reboot

# 4. 3을 통해 ssh 연결이 끊길텐데, gcp의 vm 인스턴스로 이동해서
# 인스턴스 재시작을 눌러주면 다시 연결됨

# 5. GPU 상태가 출력되는지 확인 (출력되면 설치 완료)
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 을 설치하기 전에, CUDA ToolkitNVIDIA DRIVER 의 역할이 무엇인지 간단하게 알아봅시다.

CUDA: NVIDIA GPU 의 병렬 프로그래밍 언어

  • 2^{2}NVIDIA 에서 2006년에 출시한 솔루션으로, GPU 에서 수행하는 병렬 처리 알고리즘을 C언어 등을 비롯한 산업 표준 언어를 이용해 작성함으로써, GPU 사용에 대한 진입 장벽을 낮추었습니다.
  • 딥러닝 모델의 경우 많은 양의 연산을 반복적으로 수행해야 하는데요. GPU 를 이용한 병렬 연산 처리가 CUDA 의 등장으로 인해 비교적 쉬워지면서, 딥러닝 분야도 많은 수혜를 얻었습니다.

CUDA Toolkit: CUDA 사용에 필요한 프로그램 패키지

  • 말 그대로입니다. CUDA 를 올바른 방법으로 사용하기 위해 필요한 여러 프로그램들을 모아둔 패키지입니다.
  • 3^{3}CUDA Toolkit 내부에는 GPU 가속화를 위한 라이브러리들, 디버깅 및 최적화 도구, CC++ 컴파일러, runtime library 가 들어있습니다.

NVIDIA DRIVER: CUDA 명령을 GPU 에 전달

  • CUDAGPU 를 제어하는 명령이라면, NVIDIA DRIVERCUDA 명령을 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 를 설치해줍시다.
  • MinicondaAnaconda 의 경량화(?) 버전이라고 생각할 수 있습니다. Anaconda 의 경우 데이터 과학에 사용할 수 있는 각종 패키지들을 모두 설치한 상태에서 출발한다면, miniconda 는 필수 패키지만 설치한 상태에서 출발합니다. 풀옵션 자취방 vs 기본옵션 자취방 정도로 비교할 수 있을 것 같네요.

Source: Quick command line install, Miniconda

  • 다양한 설치 방법이 있는 것으로 보이는데요. 저는 CLI 에서 쉽고 빠르게 설치할 수 있는 방법을 선택했습니다.
  • 서버 OS 에 맞게 선택하면 제공되는 명령어들을 그대로 실행해주시면, 설치가 완료됩니다. 이후 터미널을 재부팅하셨을 때 터미널의 맨 앞에 (base) 라고 나타나면, miniconda 설치도 완료입니다.

Summary

  • 본 포스팅에서는 ubuntu 계열의 GCP 서버에서, NVIDIA DRIVER, CUDA, conda 등의 프로그램들을 직접 설치하는 방법에 대해 다루어 보았습니다.
  • 딥러닝 서버를 구축하다보면, 한 번 쯤은 직접 다 설치해야하는 일이 생기는 것 같습니다.
  • GCP 에서 처음부터 구축하느라고 삽질을 엄청 많이 하긴 했지만,,, 좋은 경험이었다고 생각합니다.

Reference

  1. Ubuntu 20.04 CUDA 재설치
  2. CUDA 툴킷 다운로드하고, GPU를 자유자재로 활용해보자!
  3. CUDA Toolkit

profile
AI Engineer

0개의 댓글