Google Cloud Platform Compute Engine 인스턴스 시작하기
Google Cloud Platform (GCP)에서 Compute Engine 인스턴스를 생성하고, 특히 머신러닝 및 딥러닝 워크로드에 필요한 GPU 가속 환경을 설정하는 과정을 상세히 안내합니다. 이 가이드는 인스턴스 생성부터 GPU 드라이버, CUDA, cuDNN 설치, 그리고 원격 SSH 접속 설정까지 다룹니다.
1. GPU 사용을 위한 할당량 (Quota) 요청
GCP 무료 등급 사용자의 경우, GPU 리소스는 기본적으로 할당되지 않거나 제한됩니다. GPU 인스턴스 생성 시 "Quota 'GPUS_ALL_REGIONS' exceeded. Limit: 0.0 globally."와 같은 오류 메시지가 발생한다면, GPU 할당량 증가 요청이 필요합니다.
- GCP 콘솔에서 IAM 및 관리자(IAM & Admin) > 할당량(Quotas)으로 이동합니다.
- 필터 검색창에서 "GPUS"를 입력하여 GPU 관련 할당량을 찾습니다.
- 할당량 목록에서 GPUS (all regions) 또는 특정 리전의 GPU 할당량을 선택한 후, 상단의 할당량 수정(EDIT QUOTAS) 버튼을 클릭합니다.
- 요청 양식에 필요한 정보를 입력하고, GPU 할당량 증가를 요청합니다. 요청 승인까지 시간이 소요될 수 있습니다.
2. Compute Engine 인스턴스 생성
할당량 요청이 승인된 후, GPU가 포함된 인스턴스를 생성할 수 있습니다. 인스턴스 생성 시 다음 사항에 유의해야 합니다.
- 리전 선택: 아시아 태평양 지역에서는 대만 리전(asia-east1) 등 일부 리전에서 GPU를 사용할 수 있습니다. GPU 제공 리전을 확인하고 선택하세요.
- 머신 유형 및 GPU: 원하는 GPU 모델(예: NVIDIA Tesla V100, T4)을 선택하고, 머신 유형을 적절히 구성합니다.
- 방화벽 설정: 원격 접속 및 웹 서비스(HTTP, HTTPS)를 위해 인스턴스 생성 시 방화벽 설정에서 HTTP 트래픽 허용 및 HTTPS 트래픽 허용을 반드시 선택해야 합니다.
인스턴스 생성 절차는 GCP 콘솔의 안내에 따라 진행할 수 있습니다.
3. GPU 드라이버 및 CUDA/cuDNN 환경 설정
인스턴스가 성공적으로 생성되면, GCP 콘솔에서 해당 인스턴스의 SSH 버튼을 클릭하여 웹 브라우저 기반 터미널에 접속합니다. 이제 GPU 관련 소프트웨어 스택을 설치합니다.
3.1. NVIDIA GPU 드라이버 설치
가장 먼저 NVIDIA GPU 드라이버를 설치해야 합니다. GCP는 드라이버 설치를 위한 스크립트를 제공하거나, 수동 설치 방법을 안내합니다. 다음은 Ubuntu 20.04 기준으로 권장되는 설치 방법 중 하나입니다.
# 필요한 패키지 업데이트 및 설치
sudo apt update
sudo apt install -y build-essential dkms
# GCP가 권장하는 드라이버 설치 스크립트 실행 (선택 사항)
# 최신 드라이버가 필요하거나 특정 버전이 필요한 경우 수동 설치 진행
# curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/compute-gpu-installation/main/linux/install_gpu_driver.sh
# sudo bash install_gpu_driver.sh
# 혹은 수동 설치: 적절한 NVIDIA 드라이버 버전 선택 및 설치
# 예시: NVIDIA 535 드라이버 설치 (버전은 시스템 및 CUDA 버전에 따라 다름)
sudo apt install -y nvidia-driver-535
설치 후 시스템을 재부팅하여 드라이버가 올바르게 로드되도록 합니다.
sudo reboot
재부팅 후, 드라이버 설치 상태를 확인합니다.
nvidia-smi
GPU 정보가 출력되면 드라이버 설치가 성공한 것입니다.
3.2. CUDA Toolkit 설치
NVIDIA 드라이버가 설치되었다면, CUDA Toolkit을 설치하여 GPU 가속 컴퓨팅 환경을 구축합니다. NVIDIA 개발자 웹사이트에서 최신 버전 또는 필요한 버전의 CUDA Toolkit을 다운로드하여 설치합니다. 여기서는 런파일(runfile) 방식을 예로 듭니다.
- NVIDIA CUDA Toolkit 다운로드 페이지(https://developer.nvidia.com/cuda-downloads)에서 원하는 버전의 Linux (x86_64, Ubuntu) 런파일을 다운로드합니다.
- 다운로드한 런파일을 실행합니다.
# 예시: CUDA 12.2 버전 런파일 다운로드 및 실행 (버전은 시스템 및 드라이버 버전에 따라 다름)
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.60.10_linux.run
sudo sh cuda_12.2.0_535.60.10_linux.run
설치 과정 중, 드라이버 설치 여부를 묻는 메시지가 나타나면 반드시 기존에 설치된 드라이버를 덮어쓰지 않도록 드라이버 옵션의 선택을 해제해야 합니다. 그 외 옵션은 기본값을 유지합니다.
설치 완료 후, 환경 변수를 설정하여 CUDA 툴킷 경로를 시스템에 등록합니다. ~/.bashrc 파일에 다음 내용을 추가합니다.
echo 'export PATH="/usr/local/cuda/bin:$PATH"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"' >> ~/.bashrc
source ~/.bashrc
CUDA 설치 확인:
nvcc -V
CUDA 버전 정보가 출력되면 설치가 성공한 것입니다.
선택적으로, CUDA 샘플을 컴파일하여 GPU 장치 쿼리와 대역폭 테스트를 수행하여 실제 동작을 검증할 수 있습니다.
# deviceQuery 테스트
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
# bandwidthTest 테스트
cd ../bandwidthTest
sudo make
./bandwidthTest
두 테스트 모두 Result = PASS를 출력하면 CUDA 환경이 정상적으로 구성된 것입니다.
3.3. cuDNN 설치
cuDNN은 딥러닝 프레임워크에서 GPU를 효율적으로 사용하기 위한 라이브러리입니다. NVIDIA 개발자 웹사이트에서 cuDNN을 다운로드하여 설치합니다.
- NVIDIA cuDNN 다운로드 페이지(https://developer.nvidia.com/cudnn)에서 CUDA 버전에 맞는 cuDNN 아카이브 파일을 다운로드합니다. (NVIDIA 개발자 계정이 필요할 수 있습니다.)
- 다운로드한
.tgz또는.tar.xz파일을 인스턴스로 업로드하고 압축을 해제합니다. (로컬에서 다운로드 후gcloud compute scp또는 SCP 클라이언트를 사용하여 업로드하는 것이 일반적입니다.)
# 예시: cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz (버전은 CUDA 버전에 따라 다름)
tar -xvf cudnn-archive-name.tar.xz # 다운로드한 파일명으로 대체
cd cudnn-linux-x86_64-8.9.7.29_cuda12-archive # 압축 해제된 디렉토리로 이동 (압축 파일명에 따라 다름)
압축을 해제하면 include와 lib 디렉토리가 포함된 구조를 볼 수 있습니다. 이 파일들을 CUDA Toolkit 설치 경로로 복사합니다.
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
이제 cuDNN 설치가 완료되었습니다.
4. 원격 SSH 접속 설정 (선택 사항: Root 계정 활성화)
기본적으로 GCP 인스턴스에는 키 기반 인증으로 사용자 계정에 접속하지만, 특정 상황에서 root 계정을 통한 비밀번호 기반 SSH 접속이 필요할 수 있습니다. 다음은 root 계정 비밀번호 접속을 활성화하는 방법입니다.
경고: root 계정 비밀번호 접속을 활성화하는 것은 보안상 취약점을 증가시킬 수 있으므로, 필요한 경우에만 신중하게 설정하고 사용 후에는 비활성화하거나 강력한 비밀번호를 사용해야 합니다.
- SSH 터미널에서 root 권한으로 전환합니다.
- SSH 서버 설정 파일
/etc/ssh/sshd_config를 편집합니다. - 다음 두 설정을 찾아서 값을
yes로 변경하거나 주석을 해제합니다. - 파일을 저장하고 편집기를 종료합니다 (nano의 경우 Ctrl+X, Y, Enter).
- root 계정의 비밀번호를 설정합니다.
- SSH 서비스를 재시작하여 변경 사항을 적용합니다.
sudo -i
sudo nano /etc/ssh/sshd_config
# Authentication:
PermitRootLogin yes
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication yes
passwd root
새로운 비밀번호를 두 번 입력합니다.
sudo systemctl restart sshd
이제 외부 SSH 클라이언트를 사용하여 root 계정으로 비밀번호를 통해 접속할 수 있습니다.