Slurm ile GPU Scheduling: Yapay Zeka İş Yükleri için Kapsamlı Rehber

Slurm ile NVIDIA GPU zamanlama: MIG, MPS, GRES yapılandırması. PyTorch ve TensorFlow dağıtık eğitim için Slurm betikleri. AI iş yükleri için HPC cluster optimizasyonu.

· 5 dk okuma
Slurm ile GPU Scheduling: Yapay Zeka İş Yükleri için Kapsamlı Rehber

Yapay zeka ve derin öğrenme iş yükleri, geleneksel HPC simülasyonlarından çok farklı kaynak gereksinimlerine sahiptir. GPU belleği, NVLink bant genişliği, GPU-GPU iletişim topolojisi ve veri yükleme pipeline’ları — tüm bu faktörler, Slurm üzerinde GPU zamanlamasını geleneksel CPU zamanlamasından çok daha karmaşık hale getirir.

Bu rehber, Slurm ile GPU scheduling’in tüm kritik yönlerini ele alır: GRES yapılandırması, MIG ve MPS kullanımı, dağıtık eğitim için Slurm betikleri ve AI iş yükleri için HPC cluster optimizasyonu. Slurm HPC küme yönetiminin temelleri için kapsamlı rehberimizi inceleyebilirsiniz.

Slurm’de GPU Zamanlamanın Temelleri

Slurm, GPU kaynaklarını GRES (Generic Resource Scheduling) eklentisi üzerinden yönetir. GRES, CPU ve bellekten bağımsız olarak GPU’ları birinci sınıf zamanlanabilir kaynaklar olarak tanır.

Temel GRES Yapılandırması

# slurm.conf
GresTypes=gpu

# gres.conf — GPU düğümü yapılandırması
NodeName=gpu01 Name=gpu Type=h100 File=/dev/nvidia[0-7] Count=8
NodeName=gpu02 Name=gpu Type=h100 File=/dev/nvidia[0-7] Count=8
# Kullanıcı tarafı: GPU talep etme
#SBATCH --gres=gpu:h100:4     # 4 adet H100 GPU
#SBATCH --partition=gpu
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=32    # CPU çekirdekleri (veri yükleme için)
#SBATCH --mem=256G             # Sistem belleği

MIG (Multi-Instance GPU) ile GPU Paylaşımı

NVIDIA H100 ve A100 GPU’larda bulunan MIG özelliği, tek bir fiziksel GPU’yu 7’ye kadar bağımsız GPU örneğine böler. Bu, özellikle küçük modellerin inference’ı veya hafif eğitim iş yükleri için GPU kullanım oranını dramatik ölçüde artırır.

MIG Yapılandırması

# GPU'da MIG modunu etkinleştir
nvidia-smi -i 0 -mig 1

# MIG örneklerini yapılandır
nvidia-smi mig -cgi 9,9,9,9,9,9,9 -C
# Her GPU'da 7 eşit MIG örneği oluşturur (A100 için)
# gres.conf — MIG GPU'lar için
NodeName=gpu01 Name=gpu Type=h100 File=/dev/nvidia[0-7] Count=8
# MIG etkinse: her MIG örneği ayrı GPU olarak tanımlanır
NodeName=gpu01 Name=gpu Type=h100_1g.20gb Count=56

MIG ile tek bir H100 GPU’da 7 bağımsız iş eş zamanlı çalışabilir. Bu, küçük ölçekli eğitim ve inference iş yükleri için GPU kullanım oranını %30’dan %90’a çıkarabilir.

NVIDIA MPS ile Süreç Paylaşımı

MIG’in uygun olmadığı durumlarda (örneğin tüm GPU belleğine ihtiyaç duyan işler), NVIDIA Multi-Process Service (MPS) ile birden fazla CUDA sürecini aynı GPU üzerinde eş zamanlı çalıştırabilirsiniz.

#!/bin/bash
#SBATCH --gres=gpu:h100:1
#SBATCH --ntasks=4            # 4 MPI görevi, aynı GPU'yu paylaşacak
#SBATCH --partition=gpu

# MPS sunucusunu başlat
export CUDA_MPS_PIPE_DIRECTORY=/tmp/mps_${SLURM_JOB_ID}
mkdir -p $CUDA_MPS_PIPE_DIRECTORY
nvidia-cuda-mps-control -d

# İşi çalıştır
mpirun -np 4 python train.py

# MPS sunucusunu durdur
echo quit | nvidia-cuda-mps-control

Dağıtık Eğitim için Slurm Betikleri

Modern AI modelleri (LLaMA, Mistral, GPT türevleri) tek bir GPU’ya sığmayacak kadar büyüktür. Dağıtık eğitim için Slurm ile çok düğümlü, çok GPU’lu iş gönderimi şarttır.

PyTorch FSDP ile Dağıtık Eğitim

#!/bin/bash
#SBATCH --job-name=llama_finetune
#SBATCH --partition=gpu
#SBATCH --nodes=4
#SBATCH --gres=gpu:h100:8
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=64
#SBATCH --mem=512G
#SBATCH --time=72:00:00
#SBATCH --output=train_%j.out

# GPU topolojisini al
export NCCL_SOCKET_IFNAME=ib0
export NCCL_IB_DISABLE=0
export MASTER_ADDR=$(scontrol show hostnames $SLURM_JOB_NODELIST | head -n1)
export MASTER_PORT=29500

# PyTorch dağıtık eğitim
srun torchrun \
  --nnodes=$SLURM_NNODES \
  --nproc_per_node=8 \
  --rdzv_id=$SLURM_JOB_ID \
  --rdzv_backend=c10d \
  train_fsdp.py \
  --model meta-llama/Llama-3-70B \
  --batch-size 128

DeepSpeed ile Optimize Edilmiş Eğitim

#!/bin/bash
#SBATCH --job-name=deepspeed_train
#SBATCH --partition=gpu
#SBATCH --nodes=2
#SBATCH --gres=gpu:h100:8
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=64

# DeepSpeed ZeRO-3 ile dağıtık eğitim
deepspeed --num_nodes=$SLURM_NNODES \
  --num_gpus=8 \
  train.py \
  --deepspeed ds_config_zero3.json \
  --model-name mistral-7B

AI İş Yükleri için Partition Stratejisi

AI iş yükleri, geleneksel HPC iş yüklerinden farklı zamanlama ihtiyaçlarına sahiptir. Önerilen partition yapısı:

# AI-optimize partition yapılandırması
PartitionName=gpu-short   Nodes=gpu[01-04] MaxTime=04:00:00 \
    Default=YES Priority=300 MaxNodes=2
    # Kısa eğitim, fine-tuning, inference

PartitionName=gpu-long    Nodes=gpu[01-04] MaxTime=7-00:00:00 \
    Priority=100 MaxNodes=8
    # Büyük model eğitimi

PartitionName=gpu-interactive Nodes=gpu01 MaxTime=02:00:00 \
    Priority=500 MaxNodes=1 State=UP
    # Jupyter, VS Code, hata ayıklama

GPU İş İzleme Komutları

# GPU kullanan işleri listele
squeue -p gpu --format="%.18i %.8u %.10a %.4D %.6C %b %.10M %.8t"

# Spesifik bir GPU düğümünün durumu
scontrol show node gpu01 | grep -E "Gres|State|AllocTRES"

# GPU kullanım muhasebesi
sacct -X -p gpu --format=JobID,User,Partition,AllocTRES,Elapsed,MaxRSS \
    --start=2026-07-01

# GPU bellek kullanım trendi
sreport cluster UserUtilizationByAccount \
    --tres=gres/gpu --start=2026-06-01

InfiniBand ve NCCL Optimizasyonu

Çok düğümlü GPU eğitiminde, düğümler arası GPU-GPU iletişimi NCCL (NVIDIA Collective Communications Library) üzerinden InfiniBand ile gerçekleşir. Yanlış yapılandırılmış bir ağ, eğitimi 10 kat yavaşlatabilir.

# NCCL performans optimizasyonları
export NCCL_IB_DISABLE=0           # InfiniBand kullan
export NCCL_IB_GID_INDEX=3         # RoCE v2 için GID index
export NCCL_SOCKET_IFNAME=ib0      # InfiniBand arayüzü
export NCCL_DEBUG=INFO             # Hata ayıklama (production'da WARN)
export NCCL_IB_HCA=mlx5_0,mlx5_1  # HCA cihazları

# NCCL performans testi
srun -N 2 --gres=gpu:8 all_reduce_perf -b 8 -e 128M -f 2 -g 8

Mevasis ile AI Altyapısı

Mevasis olarak, yapay zeka iş yükleri için GPU cluster tasarımı, kurulumu ve Slurm optimizasyonu hizmetleri sunuyoruz. Özellikle NVIDIA H100/H200 GPU’lu çok düğümlü eğitim altyapılarında, InfiniBand NDR ağ ile NCCL performans optimizasyonu ve MIG/MPS yapılandırması konularında uzmanız.

GPU Cluster Çözümümüz ve Slurm Hizmetlerimiz hakkında detaylı bilgi alabilir, Slurm vs PBS vs LSF karşılaştırma rehberimizi inceleyerek AI iş yükleri için neden Slurm’ü önerdiğimizi görebilirsiniz.

AI Eğitim Pipeline’ları için Slurm İş Dizileri

Büyük ölçekli AI projelerinde, aynı eğitim pipeline’ını farklı hiperparametrelerle yüzlerce kez çalıştırmak yaygındır. Slurm job array özelliği, bu tür hiperparametre taramaları için idealdir:

#!/bin/bash
#SBATCH --job-name=hparam_search
#SBATCH --array=1-100
#SBATCH --partition=gpu-short
#SBATCH --gres=gpu:h100:1
#SBATCH --time=02:00:00

# Hiperparametre setini array ID'ye göre seç
HPARAMS="hparams_${SLURM_ARRAY_TASK_ID}.json"
python train.py --config ${HPARAMS}

Checkpoint Yönetimi ve Failure Recovery

AI eğitimlerinin saatler-günler sürmesi, iş kesintilerini kritik hale getirir. Slurm’un --requeue ve --checkpoint özellikleriyle dayanıklı eğitim pipeline’ları oluşturabilirsiniz:

#!/bin/bash
#SBATCH --job-name=robust_train
#SBATCH --requeue                  # Düğüm arızasında otomatik yeniden kuyruğa al
#SBATCH --gres=gpu:h100:8
#SBATCH --time=72:00:00

# Checkpoint'ten devam et
if [ -f "checkpoint_latest.pt" ]; then
    python train.py --resume checkpoint_latest.pt
else
    python train.py --from-scratch
fi

GPU İş Yükleri için Slurm İzleme Dashboard’u

Grafana’da AI iş yüklerine özel bir dashboard oluşturmak, GPU kümenizin sağlığını anlık takip etmenizi sağlar. İzlenmesi gereken kritik GPU metrikleri:

MetrikKaynakAnlamı
DCGM_FI_DEV_GPU_UTILdcgm_exporterGPU hesaplama kullanımı (%)
DCGM_FI_DEV_FB_USEDdcgm_exporterGPU bellek kullanımı (MB)
DCGM_FI_DEV_GPU_TEMPdcgm_exporterGPU sıcaklığı (°C)
DCGM_FI_DEV_POWER_USAGEdcgm_exporterGPU güç tüketimi (W)
slurm_job_gpu_utilizationslurm_exporterSlurm işi bazında GPU kullanımı

Bu metrikleri düzenli takip ederek, GPU termal kısıtlama (throttling), bellek taşması ve dengesiz iş dağılımı gibi sorunları proaktif olarak tespit edebilirsiniz.

Mevasis olarak GPU cluster kurulumu ve Slurm optimizasyonu hizmetlerimiz kapsamında, DCGM + Prometheus + Grafana izleme altyapısını da anahtar teslim kuruyoruz. GPU Cluster çözümümüz ve Slurm performans optimizasyonu rehberimiz ile ilgili detaylı bilgi alabilirsiniz.