데이터 센터

연세대학교 인공지능융합대학


사용법 안내

Total 1건 1 페이지
사용법 안내 목록
번호 제목 작성일
1

pytorch 예제 따라서 실행해보기


1. Anaconda 설치

> wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
(You can check new version in https://repo.anaconda.com/archive)

> bash Anaconda3-2020.11-Linux-x86_64.sh

> source ~/.bashrc

> (conda 명령어 인식이 안되는 경우) anaconda3/bin/conda init bash (anaconda 폴더를 변경한 경우에는 변경한 폴더를 path로)

> conda deactivate

2. python 3.9, pytorch 설치

    > conda create -n tutorial python=3.9

    > conda activate tutorial

    > conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia

3. 파이썬 코드 작성

code.py 파일 만들기

  • torch.cuda.is_available() : GPU 사용가능 여부 확인
  • device = torch.device(cuda) and [something].to(device) : GPU에 Pytorch model 이 돌아가도록 하는 명령어

[code.py]

import argparse
import torch
import torch.nn as nn
import torch.optim as optim

parser = argparse.ArgumentParser("Continuous Normalizing Flow")
parser.add_argument("--hidden_size", type=int, default=4)
parser.add_argument("--hidden_layer", type=int, default=3)
parser.add_argument("--batch_size", type=int, default=100)
parser.add_argument("--lr", type=float, default=1e-3)
parser.add_argument("--weight_decay", type=float, default=1e-5)
args = parser.parse_args()
print(f"cuda: {torch.cuda.is_available()}")
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")


input_size = 10
output_size = 10
model_lst = [nn.Linear(input_size, args.hidden_size)]
for i in range(args.hidden_layer):
      model_lst.append(nn.Linear(args.hidden_size,args.hidden_size))
model_lst.append(nn.Linear(args.hidden_size,output_size))


model = nn.Sequential(*model_lst).to(device)
optimizer = optim.Adam(model.parameters(), lr=args.lr, weight_decay=args.weight_decay)


for itr in range(200):
      x = torch.randn(args.batch_size, input_size).to(device)
      y = torch.randn(args.batch_size, output_size).to(device)
      y_hat = model(x)
      loss = (y - y_hat).pow(2).mean()
      optimizer.zero_grad()
      loss.backward()
      optimizer.step()
      print(f"{itr}: {loss.item():.3f}")

4. 코드를 실행시킬 shell script 작성

code.sh 파일 만들기

  • #SBATCH -J example <- [job 이름]
  • #SBATCH --gres=gpu:N <- [사용할 GPU 개수]
  • #SBATCH --output=example.out <- [Output 파일 이름. Stdout에 적히는 모든 것들이 이 파일에 작성됨]
  • #SBATCH --time 0-23:00:00 <- [코드를 실행시킬 시간]
  • conda activate toturial <- [Anaconda Environment]

[code.sh]

#!/bin/bash
#SBATCH -J example
#SBATCH --gres=gpu:1
#SBATCH --output=example.out
#SBATCH --time 0-23:00:00
eval "$(conda shell.bash hook)"
conda activate tutorial
python -u code.py --hidden_size 32 --hidden_layer 3 --batch_size 256 --lr 1e-3 --weight_decay 1e-6

5. Slurm 명령어로 job 제출

> sbatch code.sh

> squeuelong (job 제출 후 수행중인 job 확인)

> sinfo (서버 상태 확인)

> scancel jobID (job 취소)