본문 바로가기

Study

[Elice cloud] GPU 활용 실험/플젝을 위한 인스턴스 초기 설정 방법

  • 개요
    • Elice cloud 서비스 활용을 위한 인스턴스 초기 설정 방법 작성
  • 사용 목적
    • 로컬에서 관리하기 어려운 대용량 데이터셋 적재
    • 최신 GPU를 활용한 실험 혹은 프로젝트 수행

인스턴스 생성

먼저, 인스턴스를 생성해줍니다.

GPU 또는 CPU, 실행환경과 초기 용량을 필요에 따라 선택하고 생성합니다.

선택 옵션에 따라 시간별 사용 요금이 부과됩니다.

따라서, 사용이 끝나면 인스턴스 종료 버튼을 반드시 눌러서 인스턴스를 비활성화해야 돈낭비를 방지할 수 있습니다...

1. 사용하고자 하는 GPU/CPU와 실행환경 + (데이터 저장소 ← 별도 생성 필요) 선택
2. 기본 용량 선택

 


초기 환경 설정

저는 주로 pytorch 기반 딥러닝 실험을 수행해서 이를 위한 초기 환경 설정을 진행해줍니다.

이제 터미널을 열어서 순차적으로 세팅해줍니다.

  • 아나콘다 설치
# 1-1. 아나콘다 다운로드
wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh

# 1-2. 아나콘다 설치
bash ./Anaconda3-2024.10-1-Linux-x86_64.sh

# 1-3. 경로 설정
eval "$(/home/elicer/anaconda3/bin/conda shell.bash hook)"

 

  • 가상환경 생성
# 2-1. 가상환경 생성
conda create --name YOUR_VENV_NAME python=PY_VERSION_YOU_WANT

# 2-2. 가상환경 실행
# To activate this environment, use
$ conda activate YOUR_VENV_NAME

# 2-3. 가상환경 종료
# To deactivate an active environment, use
$ conda deactivate

 

  • 패키지 설치
# Elice On-Demand cuda12.4 사용
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia

 

여기까지 아주 기본적인 세팅이 끝났습니다.

이후로는 메뉴탭에서 파일 생성하시거나 git clone하셔서 프로젝트를 진행하시면 됩니다.


깃허브 레포지토리 클론 (Git repository clone)

깃허브에 존재하는 프로젝트를 로컬에서 돌려보고 싶을 때, git clone 명령어를 사용해 전체 레포지토리를 긁어와줍니다.

예시로 현 Meta 구 facebook의 DomainBed 레포지토리를 가져와 도메인 일반화 실험을 진행해보겠습니다.

 

먼저, 깃허브에서 DomainBed 레포지토리에 접근해 초록색 Code 버튼을 눌러 HTTPS 주소를 복사해옵니다.

 

그리고 터미널에서 git clone [복사된 HTTPS 주소] 명령어를 실행합니다.

  • 레포지토리 클론
git clone REPO_ADDRESS

 

그러면 좌측 메뉴 탭에서 클론된 레포지토리 폴더가 생성된 것을 확인할 수 있습니다.

이제 DomainBed에서 원하는 실험을 진행할 수 있습니다.


bash 파일로 DomainBed 실행

예시로 GPU를 사용해서 DomainBed의 sweep.py를 실행하는 방법을 보여드리겠습니다.
메뉴 탭에서 원하는 파일명의 bash 파일을 생성하고 아래 코드를 넣습니다.

#!/bin/bash
export CUDA_VISIBLE_DEVICES=0
export PYTHONPATH="/home/elicer/DomainBed:$PYTHONPATH"

DATASET="DomainNet"
DATA_DIR="/home/elicer/DomainBed/"

OUTPUT_DIR="./results"
SWEEP_DIR="./sweeps/"
LOG_FILE="${OUTPUT_DIR}/sweep.log"

mkdir -p "$OUTPUT_DIR"

nohup python -m domainbed.scripts.sweep launch \
    --algorithms ERM \
    --datasets DomainNet \
    --command_launcher local \
    --data_dir /home/elicer/DomainBed/ \
    --output_dir ./sweeps/ \
    --n_hparams 5 \
    --n_trials 3 \
    --skip_confirmation \
    > "$LOG_FILE" 2>&1 &

 

그리고 터미널에 bash 파일 실행 전 chmod +x {bash 파일 경로} 실행해 경로를 전달해줍니다.

그리고 python {bash 파일 경로} 를 입력하면 실험이 시작됩니다.

 


DomainBed 실험 결과 확인

# 터미널에서 collect_results 명령어 실행
python -m domainbed.scripts.collect_results --input_dir={bash 파일에서 정의한 SWEEP_DIR 경로} --latex

 

runpod, colab 등 다른 클라우드 서비스가 있지만,

아무래도 한국 서비스라 문의를 포함해 웹 실행 환경을 제공해 쉽게 접근할 수 있어 편리하게 사용하고 있습니다.

 

사용하면서 알게된 사용법들을 이후 추가 반영할 예정입니다.

 

해당 포스팅이 사용에 도움이 되시길 바라며 마무리합니다. (๑ᵒ ᗜ ᵒ)و ̑✧

반응형