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 計算節點。
本所 Partition 分配說明
| Partition | 適用對象 | 運算資源 | 使用說明 |
|---|---|---|---|
defq | 一般使用者 | NVIDIA RTX PRO 6000 GPU | 一般 GPU 計算與深度學習工作 |
a100q | 智慧醫療及深度學習計畫使用者 | NVIDIA A100 GPU | 僅限符合該計畫使用資格者 |
cpu01 | 無 GPU 計算需求的使用者 | CPU | 不需要 GPU 的工作請指定此佇列 |
工作執行流程
02|GPU/CPU 運算資源設備規格
本所 GPU Cluster 依運算需求與使用權限提供三個 Partition。下列為各類單一運算節點的硬體規格,資源總數依節點數計算;實際可用資源仍須以 sinfo 及 Slurm 配額、排程狀態為準。
| Partition | 節點數 | 節點類型 | 使用對象/用途 | GPU 總張數 |
|---|---|---|---|---|
defq | 3 | GPU Compute Node | 一般使用者,NVIDIA RTX PRO 6000 運算 | 24 |
a100q | 2 | GPU Compute Node | 智慧醫療及深度學習計畫專用,NVIDIA A100 運算 | 16 |
cpu01 | 2 | CPU Compute Node | 無 GPU 需求的通用 CPU 運算 | 0 |
各 Partition 單一節點硬體規格
defq一般使用者|GPUNVIDIA 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通用|純 CPUCPU Compute Node
無 GPU 適用不需 GPU 的運算工作
- CPU
- 2 × AMD EPYC 9274F,24 核心/顆,4.05 GHz
合計 48 核心/節點 - 記憶體
- 8 × 32 GB DDR5-5600 RDIMM
合計 256 GB/節點 - 節點數
- 2 台
一般 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 <USERNAME>@140.109.74.5
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 或容器,請依實際部署方式啟用環境。
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;工作結束後應釋放資源;長時間訓練請使用批次排程;重要資料應依本所資料保存與備份政策管理。
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、路徑及服務規則不代表本所配置。
請先參考本操作說明;如有問題,請洽:
沈穎志|電話:(02) 2783-5611 分機 427|ycshen@as.edu.tw
莊棋駿|電話:(02) 2783-5611 分機 423|kikichuang424@as.edu.tw