中央研究院統計科學研究所|資訊室

GPU Cluster
Slurm 操作使用指南

從登入、申請 GPU、提交工作,到查詢執行狀態的完整操作說明。

簡易使用手冊 · 繁體中文版
使用前請確認:登入節點:140.109.74.5;一般使用者 GPU Partition 為 defq(NVIDIA RTX PRO 6000);智慧醫療及深度學習計畫使用者可使用 a100q(NVIDIA A100);不需要 GPU 的工作請使用 cpu01。GPU 額度、儲存路徑及軟體環境以資訊室公告為準。

01|系統總覽

本所 GPU Cluster 使用 Slurm 進行運算資源分配與工作排程。研究人員透過登入節點提交工作,由排程系統將任務配置至適當的 GPU 計算節點。

GPU 運算節點執行 AI、深度學習及科學計算工作
Slurm 排程依資源需求、優先權及限制調度工作
共享儲存供使用者存取資料與工作輸出;實際路徑待確認

本所 Partition 分配說明

Partition適用對象運算資源使用說明
defq一般使用者NVIDIA RTX PRO 6000 GPU一般 GPU 計算與深度學習工作
a100q智慧醫療及深度學習計畫使用者NVIDIA A100 GPU僅限符合該計畫使用資格者
cpu01無 GPU 計算需求的使用者CPU不需要 GPU 的工作請指定此佇列

工作執行流程

SSH 登入→撰寫腳本→sbatch 提交→排隊與執行→檢查結果
登入節點主要供編輯程式、提交工作與檢查狀態。高負載 GPU 訓練應透過 Slurm 配置運算資源,不應直接在登入節點長時間執行。

02|GPU/CPU 運算資源設備規格

本所 GPU Cluster 依運算需求與使用權限提供三個 Partition。下列為各類單一運算節點的硬體規格,資源總數依節點數計算;實際可用資源仍須以 sinfo 及 Slurm 配額、排程狀態為準。

7運算節點總數
40GPU 總張數
3Partition 類型
Partition節點數節點類型使用對象/用途GPU 總張數
defq3GPU Compute Node一般使用者,NVIDIA RTX PRO 6000 運算24
a100q2GPU Compute Node智慧醫療及深度學習計畫專用,NVIDIA A100 運算16
cpu012CPU Compute Node無 GPU 需求的通用 CPU 運算0

各 Partition 單一節點硬體規格

defq一般使用者|GPU

NVIDIA RTX PRO 6000 BSE

每節點 8 張 GPU 96 GB/張 · 全區共 24 張

CPU
2 × AMD EPYC 9475F,48 核心/顆,3.65 GHz
合計 96 核心/節點
記憶體
16 × 64 GB DDR5-6400 RDIMM
合計 1,024 GB/節點
節點數
3 台
a100q智慧醫療及深度學習計畫專用

NVIDIA A100-SXM4-40GB

每節點 8 張 GPU 40 GB/張 · 全區共 16 張

CPU
2 × AMD EPYC 7742,64 核心/顆,2.25 GHz
合計 128 核心/節點
記憶體
16 × 64 GB DDR4-3200 RDIMM
合計 1,024 GB/節點
節點數
2 台
cpu01通用|純 CPU

CPU Compute Node

無 GPU 適用不需 GPU 的運算工作

CPU
2 × AMD EPYC 9274F,24 核心/顆,4.05 GHz
合計 48 核心/節點
記憶體
8 × 32 GB DDR5-5600 RDIMM
合計 256 GB/節點
節點數
2 台
Partition 選擇原則

一般 GPU 工作請指定 --partition=defq;智慧醫療及深度學習計畫且具使用權限者可指定 --partition=a100q;不需 GPU 的工作請指定 --partition=cpu01,且不要申請 --gres=gpu:1。

# 查詢各 Partition 的狀態與節點 GPU 資源
sinfo -o "%P %a %l %D %G"

# 一般使用者範例:指定 defq,申請 1 張 GPU
sbatch --partition=defq --gres=gpu:1 gpu_job.sh

資料來源:本所《Resources.pptx》運算資源設備規格;GPU 總張數及節點 CPU 核心/記憶體總量由表列硬體數量計算。設備規格不代表即時可用資源,也不代表單一工作可申請的最大額度。

03|五分鐘快速開始

SSH 連線至本所登入節點
ssh <USERNAME>@140.109.74.5
查看可用 Partition(defq/a100q/cpu01)
sinfo
sinfo -o "%P %a %l %D %G"
建立批次工作腳本 gpu_job.sh(參考第 05 節)
提交並查詢工作
sbatch gpu_job.sh
squeue -u "$USER"
檢查工作輸出
cat slurm-<JOB_ID>.out
sacct -j <JOB_ID> --format=JobID,State,Elapsed,AllocTRES

04|登入與環境準備

Windows 可使用 MobaXterm 或 PuTTY;macOS、Linux 可使用終端機。首次登入請依本所資訊室提供的帳號及連線方式操作。

ssh <USERNAME>@140.109.74.5
pwd
whoami
module avail  # 若本所啟用 Environment Modules

若環境支援 Modules,可使用 module load <MODULE_NAME> 載入指定版本。若使用 Conda 或容器,請依實際部署方式啟用環境。

GPU 節點上的 CUDA / NVIDIA Driver 版本、Python 環境及共享儲存路徑,須由管理者確認後補入正式版。

05|Slurm 常用指令速查

指令用途範例
sinfo查看 Partition、節點狀態sinfo -N
squeue查詢排隊及執行中的工作squeue -u "$USER"
sbatch提交批次工作sbatch gpu_job.sh
srun在分配資源上執行命令srun hostname
salloc申請互動式資源salloc -p defq --gres=gpu:1
scancel取消工作scancel <JOB_ID>
sacct查詢歷史工作紀錄sacct -j <JOB_ID>
scontrol查看工作詳細設定scontrol show job <JOB_ID>

06|GPU 批次作業:sbatch

以下範例申請 1 張 GPU、4 個 CPU 核心、16GB RAM、執行上限 2 小時。一般使用者請選擇 defq,使用 NVIDIA RTX PRO 6000 GPU;智慧醫療及深度學習計畫使用者可將 --partition=defq 改為 --partition=a100q,使用 NVIDIA A100 GPU。無 GPU 計算需求請改用 cpu01,並移除 GPU 申請參數。

#!/bin/bash
#SBATCH --job-name=gpu-test
#SBATCH --partition=defq
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --gres=gpu:1
#SBATCH --time=02:00:00
#SBATCH --output=slurm-%j.out
#SBATCH --error=slurm-%j.err

set -e
hostname
nvidia-smi
python train.py

儲存為 gpu_job.sh,並在工作目錄執行:

sbatch gpu_job.sh
squeue -u "$USER"
參數意義
--partition指定資源佇列
--gres=gpu:1申請一張 GPU;依本所 GRES 設定調整
--cpus-per-task每個任務的 CPU 核心數
--time執行時間上限
%j工作 ID,適合用於輸出檔名
若叢集使用 --gpus、具型號的 --gres=gpu:TYPE:1 或特定 QoS,應以本所設定為準。範例不能保證直接適用所有節點。

07|互動式 GPU 工作

適合測試環境、除錯或短時間執行 GPU 指令。

salloc --partition=defq --gres=gpu:1 --cpus-per-task=4 --time=00:30:00
srun nvidia-smi
srun python test.py
exit

如需使用 A100,符合智慧醫療及深度學習計畫資格者可將上例 defq 改成 a100q。成功取得資源後,使用 srun 在已配置的計算節點上執行指令;完成後釋放配置。

08|進階排程

Job Array:大量參數實驗

#!/bin/bash
#SBATCH --partition=defq
#SBATCH --array=1-10%2
#SBATCH --gres=gpu:1
#SBATCH --time=01:00:00
#SBATCH --output=array-%A_%a.out
python experiment.py --seed "$SLURM_ARRAY_TASK_ID"

1-10%2 表示共 10 個子工作、最多同時執行 2 個;仍受實際帳號配額及資源限制。

CPU 工作範例(不申請 GPU)

沒有 GPU 計算需求時,指定 cpu01,不要使用 --gres=gpu:1 或 nvidia-smi。

#!/bin/bash
#SBATCH --job-name=cpu-test
#SBATCH --partition=cpu01
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --time=01:00:00
#SBATCH --output=slurm-%j.out
python cpu_task.py

Dependency:前一工作成功才開始

JOB1=$(sbatch --parsable preprocess.sh)
sbatch --dependency=afterok:$JOB1 train.sh

09|監控與工作紀錄

# 查看自己的工作
squeue -u "$USER"
# 查看工作詳情
scontrol show job <JOB_ID>
# 查看完成狀態及資源配置
sacct -j <JOB_ID> --format=JobID,JobName,State,Elapsed,AllocTRES
# 查看工作執行中的統計(需系統支援)
sstat -j <JOB_ID>.batch
# 取消自己的工作
scancel <JOB_ID>

在已分配的 GPU 節點上可透過 nvidia-smi 觀察 GPU 記憶體、使用率及程序。實際能見度依系統隔離與權限設定而異。

常見工作狀態

狀態意義
PD / PENDING排隊等待
R / RUNNING執行中
CD / COMPLETED正常完成
F / FAILED執行失敗
TO / TIMEOUT超過執行時間
OOM / OUT_OF_MEMORY記憶體不足

10|GPU 資源管理原則

公平使用

依使用者或計畫核配 GPU 數量與使用時間。

資源隔離

使用者僅使用排程分配的 GPU 資源。

排程優先權

依核定政策、資源用量與工作優先權調度。

使用者注意事項

避免申請超過實際需要的 GPU;工作結束後應釋放資源;長時間訓練請使用批次排程;重要資料應依本所資料保存與備份政策管理。

使用限制:每人最大GPU 張數、單次工作最長時間、同時執行與排隊數量限制,另研究人員可優先權排隊執行,如有問題請洽資訊室。

11|常見問題與故障排除

工作一直顯示 PD(Pending)?

使用 squeue -j <JOB_ID> -o "%i %T %R" 查看原因。Resources 通常表示資源不足,Priority 表示等待排程優先權;也應確認 Partition、GPU 數量與時間限制。

出現 Invalid partition name?

執行 sinfo 確認 Partition 狀態;一般 GPU 工作使用 defq,具計畫資格者可使用 a100q,CPU 工作使用 cpu01,並修正 #SBATCH --partition。

程式找不到 GPU?

確認工作已取得 GPU 配置,並在分配到的節點內執行 nvidia-smi。再檢查 CUDA、PyTorch 等版本及程式環境。

工作被系統終止?

使用 sacct -j <JOB_ID> --format=JobID,State,ExitCode,Elapsed,MaxRSS 檢查是否 TIMEOUT、OOM 或 FAILED,並查看 .err 檔。

如何避免 GPU 閒置浪費?

先使用短時間互動式工作驗證程式,再以批次腳本提交正式訓練;合理設定時間、GPU 數量,並監控 GPU 使用率。

12|參考資料

可參考下列其他Slurm通用操作流程參考下列公開文件;其中的主機名稱、Partition、路徑及服務規則不代表本所配置。

本所操作說明簡報

中研院大數據分析與科學計算核心設施|Slurm 計算服務

中央研究院計算中心|Slurm 計算服務

Slurm 官方文件

問題諮詢|資訊室

請先參考本操作說明;如有問題,請洽:

沈穎志|電話:(02) 2783-5611 分機 427|ycshen@as.edu.tw

莊棋駿|電話:(02) 2783-5611 分機 423|kikichuang424@as.edu.tw

中央研究院統計科學研究所|資訊室 · GPU Cluster Slurm 操作指南 · 本所分區及聯絡資訊已更新