공지사항
- 공지사항을 불러오는 중입니다…
1. 융합전공 HPC 서버 정보
1.1 HPC 사용을 위한 기초 정보
본 HPC 서버는 이과대학 과학지능정보 융합전공의 학부 교육과 실습을 주된 목적으로 운영됩니다. 수업 운영에 지장이 없는 유휴 시간에는 융합전공 수강생, 참여 학과의 교수·조교·연구원 및 별도의 사용 신청을 승인받은 사용자가 연구 목적의 간단한 계산에 활용할 수 있습니다.
서버는 1대의 로그인 노드와 4대의 계산 노드로 이루어져있습니다.
SSH를 통해 로그인 노드에 접속하여 프로그램 코드 작성이나 가벼운 코드를 수행할수 있으며,
GPU 자원 사용을 포함한 계산량이 많은 작업은 Slurm을 통해 계산 노드 자원을 할당받아 사용할 수 있습니다.
Slurm을 통해 제출되지 않은 작업 및 자원 독과점으로 판단되는 작업은 관리자가 임의로 종료할 수 있습니다.
sichpc
로그인 노드- Intel Xeon Silver 4309Y (2.8–3.6 GHz, 32 threads)
- RAM 64 GB
- Storage (/home) 74 TB
node01–04
GPU 계산 노드- Intel Xeon Silver 4310 (2.1–3.3 GHz, 48 threads)
- RAM 약 120 GB (Slurm 할당 기준)
- Nvidia GeForce RTX 3090 (노드당 2장, VRAM 24 GB)
1.2 계정 생성하기
융합전공 과목 수강생은 실습을 위해 계정이 생성됩니다.
<USER_ID>는 학번을 기준으로 (ex: s2023123456) 일괄 생성되며,
해당 학기가 종료되면 계정으로의 접근이 차단됩니다. 1학기 이상 미접속시 계정은 임의로 삭제될 수 있습니다.
- 1학기 수업 수강생 3월 ~ 8월
- 2학기 수업 수강생 9월 ~ 2월
융합전공 참여 학과의 교수·조교·연구원 등은 필요시 연구용 계정을 신청해 받을 수 있습니다.
필요시 관리자에게 별도로 <USER_ID> 계정 생성을 요청할 수 있습니다.
상기 인원 외에 서버 사용을 희망하는 경우, 아래 사용신청서를 작성하여 siconv@khu.ac.kr로 보내주시기 바랍니다. 신청 내용을 검토한 후 계정이 생성됩니다.
교육용 서버 사용신청서 다운로드 (.docx)2. 사용방법
2.1 서버 접속하기
터미널에서 아래 명령어로 로그인 노드에 접속합니다.
[LOCAL_ID@localhost ~]$ ssh -p 23432 <USER_ID>@sichpc.khu.ac.kr [USER_ID@sichpc ~]$
2.2 conda / mamba로 가상환경 쓰기
Python 패키지는 conda와 mamba로 관리합니다. 둘은 같은 환경을 보며, 역할만 다릅니다. Java·R 등은 관리자에게 문의하세요.
| 할 일 | 명령 |
|---|---|
| 환경 켜기 / 끄기 | conda activate / conda deactivate |
| 환경 만들기, 패키지 설치 | mamba create / mamba install |
| 환경 목록 | conda env list 또는 mamba env list |
개인 환경은 자동으로 홈(~/.conda/envs)에 만들어집니다.
공유 경로 /opt/shared에는 설치하지 마세요.
수업·실험은 공유 base가 아니라 자기 환경을 만들어 쓰는 것을 권장합니다.
2.2.1 개인 환경 예제 (myenv)
[USER_ID@sichpc ~]$ mamba create -n myenv python=3.12 numpy pandas -y [USER_ID@sichpc ~]$ conda activate myenv (myenv) [USER_ID@sichpc ~]$ which python /home/USER_ID/.conda/envs/myenv/bin/python (myenv) [USER_ID@sichpc ~]$ python -c "import numpy, pandas; print(numpy.__version__)" (myenv) [USER_ID@sichpc ~]$ conda deactivate
만들 때 출력의 Prefix:가 /home/아이디/.conda/envs/myenv여야 합니다.
패키지를 더 넣을 때는 환경이 켜진 상태에서 mamba install matplotlib -y를 사용합니다.
3. Slurm 사용하기
3.1 개요
sichpc입니다. 학기마다 달라질 수 있으니
제출 전에 sinfo -s로 확인하세요.
3.2 명령어
작업 흐름에 따라 자주 쓰는 명령어입니다. 아래 검색창으로 명령어·옵션을 필터링할 수 있습니다.
| 명령어 | 설명 | 사용 예시 |
|---|---|---|
| sinfo |
사용 가능한 partition과 노드 상태를 확인합니다. 작업 제출 전 partition 이름을 확인할 때 가장 먼저 사용합니다. |
sinfosinfo -ssinfo -p sichpc
|
| srun |
명령어를 계산 노드에서 즉시 실행하고 결과를 터미널에 출력합니다. 짧은 테스트·GPU 확인에 적합하며, 대기 job이 있으면 실행 가능할 때까지 터미널이 블록됩니다. |
srun -p sichpc hostnamesrun -p sichpc -G1 -t 00:10:00 nvidia-smisrun -p sichpc python train.py
|
| sbatch |
셸 스크립트를 batch job으로 제출합니다. stdout/stderr는 지정한 로그 파일로 저장되며, 제출 후 터미널을 계속 사용할 수 있습니다. |
sbatch -J MYJOB -p sichpc script.shsbatch -a 0-9 script.sh
|
| salloc |
계산 노드에 자원만 할당받아 대화형(interactive) 작업을 수행합니다. 할당 후 ssh $SLURM_JOB_NODELIST로 계산 노드에 접속할 수 있습니다.exit로 빠져나오면 자원이 자동 해제됩니다.
|
salloc -p sichpc -G1 -t 01:00:00ssh $SLURM_JOB_NODELIST
|
squeue 상태 코드:
PD 대기 ·
R 실행 중 ·
CG 종료 중 ·
CA 취소됨 ·
F 실패
| 명령어 | 설명 | 사용 예시 |
|---|---|---|
| squeue |
제출된 job 목록과 상태를 확인합니다. 대기(PD) 또는 실행(R) 중인 job을 볼 수 있습니다. |
squeuesqueue -u $USERsqueue -j <job_id>
|
| scontrol show job |
특정 job의 상세 정보를 확인합니다. 대기 중인 이유, 할당 GPU, 시간 제한 등을 파악할 때 사용합니다. |
scontrol show job <job_id> |
| 로그 파일 |
끝난 job은 #SBATCH -o / -e로 지정한 로그로 확인합니다. |
ls logs/cat logs/OUTPUT_<job_id>.log
|
| scancel | 실행 중이거나 대기 중인 job을 취소합니다. |
scancel <job_id>scancel -u $USERscancel -n <job_name>
|
srun, sbatch, salloc 공통 옵션입니다.
sbatch 스크립트 안에서는 #SBATCH 지시자로 동일하게 지정할 수 있습니다.
| Option | Input | Description |
|---|---|---|
-J, --job-name |
<job_name> |
job 이름 (squeue, scancel -n 등에서 사용) |
-p, --partition |
sichpc |
partition(작업 공간) 이름 — 현재 sichpc, sinfo -s로 확인 |
-G, --gpus |
<count> |
할당받을 GPU 개수 (노드당 최대 2) |
-c, --cpus-per-task |
<count> |
task당 CPU 코어 수 |
--mem |
<size> |
메모리 제한 (예: 16G) |
-t, --time |
HH:MM:SS |
최대 실행 시간 |
-o, --output |
<pattern> |
stdout 로그 파일 (예: OUTPUT_%j.log) |
-e, --error |
<pattern> |
stderr 로그 파일 |
-a, --array |
<range> |
배열 job 범위 (예: 0-9) |
- partition 확인:
sinfo -s - GPU 테스트:
srun -p sichpc -G1 -t 00:10:00 nvidia-smi - batch 제출:
sbatch -J MYJOB -p sichpc script.sh - 내 job 확인:
squeue -u $USER - job 상세:
scontrol show job <job_id> - job 취소:
scancel <job_id> - 완료 확인:
cat logs/OUTPUT_<job_id>.log
3.3 srun 예시
커맨드 라인에서 바로 실행하는 방식입니다. stdout·stderr가 터미널에 출력되며, job이 시작될 때까지 터미널을 사용할 수 없습니다. GPU 동작 확인이나 짧은 테스트에 적합합니다.
[USER_ID@sichpc ~]$ srun -J <jobname> -p sichpc -G1 -t 00:10:00 <executable> [args ...] # 예: srun -J gputest -p sichpc -G1 -t 00:10:00 nvidia-smi something may be printed out [USER_ID@sichpc ~]$
3.4 salloc 예시
GPU 노드에서 대화형으로 작업할 때 사용합니다.
자원 할당 후 계산 노드에 SSH 접속하고, 작업이 끝나면 exit로 노드와 할당을 순서대로 해제합니다.
exit로 salloc 세션을 종료하지 않으면 GPU·CPU 자원이 계속 점유되어
다른 사용자가 해당 자원을 사용할 수 없습니다. 작업이 끝나면 반드시 할당 해제를 해 주세요.
[USER_ID@sichpc ~]$ salloc -p sichpc -G1 -t 01:00:00 salloc: Granted job allocation 12346 [USER_ID@sichpc ~]$ ssh $SLURM_JOB_NODELIST [USER_ID@node01 ~]$ nvidia-smi [USER_ID@node01 ~]$ exit # 계산 노드에서 빠져나오기 [USER_ID@sichpc ~]$ exit # salloc 할당 해제 salloc: Relinquishing job allocation 12346
3.5 sbatch 예시
셸 스크립트로 job을 제출하는 방식입니다.
stdout·stderr는 로그 파일로 저장되며, 제출 후에도 터미널을 계속 사용할 수 있습니다.
#SBATCH 지시자로 스크립트 안에 옵션을 미리 지정할 수 있습니다.
아래 예시는 원주율을 계산하는 Python 스크립트를 계산 노드에서 10개(array job) 실행하고,
결과를 logs/OUTPUT_<job_id>_<task_id>.log 파일로 저장합니다.
실행 전에 2.2절대로 개인 환경 myenv를 만들어 두세요.
numpy만 사용합니다.
#!/usr/bin/env python
import os
import numpy as np
def getenv(var, default=""):
return os.environ.get(var, str(default))
job_id = int(getenv("SLURM_JOB_ID", 0))
task_id = int(getenv("SLURM_ARRAY_TASK_ID", 0))
np.random.seed(job_id * 1000 + task_id)
n = 100000
rx = np.random.uniform(-1, 1, n)
ry = np.random.uniform(-1, 1, n)
n_in = np.sum(rx * rx + ry * ry < 1)
print(n_in, n, n_in / n * 4)
#!/bin/bash #SBATCH -J MYTESTJOB #SBATCH -p sichpc #SBATCH -c 2 #SBATCH --mem=4G #SBATCH -t 00:10:00 #SBATCH -o logs/OUTPUT_%A_%a.log #SBATCH -e logs/OUTPUT_%A_%a.err hostname source /opt/shared/miniconda3/etc/profile.d/conda.sh conda activate myenv python compute_pi.py
[USER_ID@sichpc ~]$ mkdir -p logs [USER_ID@sichpc ~]$ sbatch -a 0-9 script.sh Submitted batch job 12345 [USER_ID@sichpc ~]$ squeue -u $USER [USER_ID@sichpc ~]$ cat logs/OUTPUT_12345_0.log
4. AI에게 맡기기
리눅스나 Slurm이 익숙하지 않으면 AI에게 아래 글을 대화 맨 위에 그대로 붙여 넣은 뒤, 하고 싶은 일만 한두 줄 이어서 적으면 됩니다.
ai_prompt.txt 다운로드너는 경희대학교 과학지능융합전공 HPC(SICHPC)에서 나를 돕는 조교다. 나는 리눅스·Slurm이 익숙하지 않다. 추측하지 말고 아래 사실만 기준으로 답하고, 명령은 복사해 실행할 수 있게 짧게 줘. 로그인 노드에서 GPU·긴 계산을 시키지 마라. ## 클러스터 - 로그인 노드: sichpc.khu.ac.kr (GPU 없음). SSH: ssh -p 23432 <USER_ID>@sichpc.khu.ac.kr - 계산 노드 4대(node01–04)를 여러 사람이 나눠 쓴다. 노드당 GPU 2장(RTX 3090, VRAM 24GB). - GPU·긴 계산은 반드시 Slurm. 계산 노드 SSH는 할당 후에만 (ssh $SLURM_JOB_NODELIST). - 매뉴얼: https://sichpc.khu.ac.kr/ 문의: siconv@khu.ac.kr ## 자원 — 반드시 지킬 것 (수업용 공유 클러스터) - 기본은 항상 최소: 노드 1대, CPU 2개, 메모리 8G, 시간 1시간. 기본 템플릿에 GPU를 넣지 마라. - GPU가 필요 없으면 -G, --gres=gpu 를 절대 넣지 마라. (numpy/pandas/sklearn, 전처리, CPU 학습 등) - GPU는 코드가 CUDA를 쓰거나 사용자가 GPU·학습(딥러닝)·nvidia-smi를 명시한 경우에만 1장. - 애매하면 GPU를 넣지 말고, 필요한지 한 줄로 물어라. - 사용자가 "최대", "전부", "빨리", "노드 다"라고 해도 노드를 2대 이상 잡지 마라. 쓰지 말 것: -N 2 이상, --nodes, --exclusive, -w node01,node02, --gres=gpu:2, -G 2 이상, -c 16 이상, --mem=32G 이상. - 동시에 돌아가는 GPU job은 1개만. 이미 GPU job이 있으면 새로 제출하지 말고 squeue를 보게 하거나 끝난 뒤 제출하라. - array job(-a)은 사용자가 명시하지 않으면 만들지 마라. 만들어도 CPU-only, 4개 이하. GPU array 금지. - 학습·실험은 sbatch. salloc은 짧은 디버깅만(30분). GPU 디버깅일 때만 -G1. 끝나면 계산 노드 exit 후 로그인 노드에서 한 번 더 exit. - -t 없는 job을 만들지 마라. 테스트 10분, 학습 기본 1시간. 사용자가 더 달라고 해도 한 job당 4시간을 넘기지 마라. - 제출 전에 squeue -u $USER 와 squeue -p sichpc 를 안내하라. ## Slurm - 파티션: sichpc (sinfo -s 로 확인) - 내 job: squeue -u $USER / 취소: scancel <jobid> - CPU 테스트: srun -p sichpc -c 2 --mem=4G -t 00:10:00 hostname - GPU 확인: srun -p sichpc -G1 -c 2 --mem=4G -t 00:10:00 nvidia-smi - 대화형(CPU): salloc -p sichpc -c 2 --mem=8G -t 00:30:00 후 ssh $SLURM_JOB_NODELIST - 대화형(GPU가 필요할 때만): salloc -p sichpc -G1 -c 2 --mem=8G -t 00:30:00 - sacct 는 쓸 수 없다. 끝난 job은 #SBATCH -o/-e 로그로 확인 ## conda / mamba - 공식 prefix: /opt/shared/miniconda3 - 환경 켜기/끄기: conda activate / conda deactivate - 환경 생성·패키지: mamba create / mamba install - mamba activate, 그냥 conda init, mamba shell init 하지 말 것 - 개인 환경은 ~/.conda/envs 에 자동 생성. /opt/shared 에 설치하지 말 것 - mamba create -n myenv python=3.12 numpy pandas -y - sbatch 안: source /opt/shared/miniconda3/etc/profile.d/conda.sh conda activate myenv ## sbatch 기본 템플릿 (CPU. 이것보다 크게 쓰지 마라) #!/bin/bash #SBATCH -J JOBNAME #SBATCH -p sichpc #SBATCH -c 2 #SBATCH --mem=8G #SBATCH -t 01:00:00 #SBATCH -o logs/%x_%j.out #SBATCH -e logs/%x_%j.err source /opt/shared/miniconda3/etc/profile.d/conda.sh conda activate myenv python my_script.py ## GPU가 필요할 때만 위 템플릿에 이 한 줄을 추가 #SBATCH -G 1 ## 하지 말 것 - 로그인 노드에서 학습·전처리 대량 실행 - 할당 없이 ssh node01 - /opt/shared 에 conda/mamba install - CPU job에 GPU 할당 (-G, --gres=gpu) - 시간 제한 없는 GPU job, 끝난 salloc 방치 - 한 사람이 여러 GPU·여러 노드를 동시에 점유