Aracılığıyla paylaş


Slurm ile CycleCloud'da ilk işinizi gönderme

Bu kılavuz, Slurm çalıştıran bir Azure CycleCloud kümesinde işleri gönderme ve yönetme konusunda size yol gösterir. HPC'de yeniyseniz veya Azure'da yeniyseniz kümenize bağlanmayı, işleri göndermeyi ve bunların ilerleme durumunu izlemeyi öğrenirsiniz.

Önkoşullar

Başlamadan önce şunları yapmanız gerekir:

  • Slurm ortamı için Azure CycleCloud Çalışma Alanı zaten dağıtılmış
  • Dağıtım sırasında yapılandırılan SSH anahtar çifti
  • CycleCloud VM'sine veya Azure Bastion'a erişim

Kurulum talimatları için, ortamınızı ayarlamak amacıyla kurulum hızlı başlangıç kılavuzu'na bakın.

Küme bileşenlerini anlama

CycleCloud Slurm kümenizde etkileşimde olduğunuz üç ana düğüm türü vardır:

Düğüm Türü Ne Yapar? Kullandığınızda
Kimlik Doğrulama Düğümü Kullanıcılar için giriş noktası İşleri göndermek ve yönetmek için buraya bağlanın
Zamanlayıcı Düğümü İş kuyruğu ve kaynaklarını yönetir Arka planda otomatik olarak çalışır
İşlem Düğümleri İş yüklerinizi yürütün İşlerin kaynaklara ihtiyacı olduğunda isteğe bağlı olarak oluşturulur

Slurm bölümlerini anlama

Kümeniz, farklı iş yükü türleri için tasarlanmış önceden yapılandırılmış bölümler (kaynak havuzları) ile birlikte gelir:

Partition En Uygun Tipik VM Türleri
HTC İletişim kurması gerekmeyen bağımsız görevler (veri işleme, görüntü işleme) Genel amaçlı VM'ler (D serisi)
HPC MPI kullanarak sıkı bir şekilde bağlanmış paralel işler (simülasyonlar, modelleme) InfiniBand ile HPC için iyileştirilmiş VM'ler (HBv3, HBv4, HBv5)
GPU Makine öğrenmesi, derin öğrenme, GPU hızlandırmalı bilgi işlem GPU VM'leri (NC serisi, ND serisi)

Bölüm yapılandırma seçenekleri için Slurm Scheduler Tümleştirmesi'ne bakın.


1. Adım: Kimlik doğrulama düğümüne bağlanma

Kümenize bağlanmak için iki seçeneğiniz vardır.

Seçenek A: CycleCloud VM ile bağlanma

CycleCloud VM'sine erişiminiz varsa CycleCloud CLI'yı kullanın:

# First, SSH to the CycleCloud VM
ssh -i ~/.ssh/your_private_key username@cyclecloud-vm-ip

# Initialize CycleCloud (first time only)
cyclecloud initialize

# Connect to the login node
cyclecloud connect login-1 -c your-cluster-name

Seçenek B: Doğrudan SSH Bağlantısı

Kimlik doğrulama düğümlerinin IP adresine sahipseniz:

ssh -i ~/.ssh/your_private_key username@login-node-ip

Uyarı

Kümeniz genel IP'lere izin vermiyorsa Azure Bastion üzerinden bağlanın. Kurulum yönergeleri için Bkz. Azure Bastion belgeleri .


2. Adım: Küme Durumunu Denetleme

Kimlik doğrulama düğümüne bağlandığınızda kümenin hazır olup olmadığını denetleyin:

# View available partitions and their status
sinfo

Örnek çıkış:

PARTITION  AVAIL  TIMELIMIT  NODES  STATE  NODELIST
htc*       up     infinite   10     idle~  htc-[1-10]
hpc        up     infinite   10     idle~  hpc-[1-10]
gpu        up     infinite   4      idle~  gpu-[1-4]

Çıktıyı okuma:

  • idle~ düğümlerin kullanılabilir olduğu ancak henüz çalışmadığı anlamına gelir (CycleCloud gerektiğinde bunları başlatır)
  • idle düğümlerin çalıştığı ve hazır olduğu anlamına gelir
  • alloc düğümlerin şu anda işleri çalıştırdığını gösterir

Daha fazla ayrıntı için:

# Detailed partition and node information
sinfo -l

3. Adım: İş betiği oluşturma

İş betikleri Slurm'a ihtiyacınız olan kaynakları ve çalıştırılacak komutları bildirir. Basit bir test betiği oluşturun:

# Create the script file
nano hello-world.sh

Bu içeriği yapıştır:

#!/bin/bash
#SBATCH --job-name=hello_world    # Name to identify your job
#SBATCH --output=hello_world.out  # File for standard output
#SBATCH --partition=hpc           # Which partition to use
#SBATCH --nodes=1                 # Number of nodes needed
#SBATCH --ntasks=1                # Number of tasks to run
#SBATCH --time=00:05:00           # Maximum run time (HH:MM:SS)

echo "Hello from $(hostname)"
echo "Job started at $(date)"
echo "Running on partition: $SLURM_JOB_PARTITION"
sleep 10
echo "Job completed at $(date)"

Kaydedin ve çıkın (Ctrl+X, sonra Y, ardından Enter).

Yaygın SBATCH seçenekleri

Seçenek Description Example
--job-name İşinizin tanımlayıcısı --job-name=my_analysis
--output Çıkış nereye yazılmalı? --output=results_%j.out (%j = iş kimliği)
--partition Kullanılacak kaynak havuzu --partition=gpu
--nodes İşlem düğümlerinin sayısı --nodes=4
--ntasks Tüm düğümlerdeki toplam görev sayısı --ntasks=16
--cpus-per-task Her görev için CPU'lar --cpus-per-task=4
--mem Düğüm başına bellek --mem=32G
--time En fazla çalışma zamanı --time=02:00:00
--gres Genel kaynaklar (GPU'lar gibi) --gres=gpu:1

4. Adım: İşinizi gönderin

İşi kuyruğa gönderin:

sbatch hello-world.sh

İş kimliğinizi içeren bir onay görürsünüz:

Submitted batch job 1

Arka Planda Ne Olur?

  1. Kuyruğa alınan iş — Slurm işinizi kuyruğa ekler.
  2. İstenen kaynaklar — Slurm, CycleCloud'a işlem düğümlerine ihtiyacı olduğunu söyler.
  3. Sağlanan düğümler — CycleCloud, VM'leri Azure'da oluşturur (yeni düğümler için 2-5 dakika sürer).
  4. İş çalışmaları — Betiğiniz ayrılan düğümlerde yürütülür.
  5. Bırakılan düğümler — İş tamamlandıktan sonra, maliyet tasarrufu sağlamak için boşta kalan düğümler nihayet sonlandırılır.

5. Adım: İşinizi izleme

İş Durumunu Denetle

# View all jobs in the queue
squeue

Örnek çıkış:

JOBID  PARTITION  NAME         USER     ST  TIME  NODES  NODELIST(REASON)
1      hpc        hello_world  hpcuser  R   0:05  1      hpc-1

İş durumları:

  • PD (Beklemede) — Kaynaklar bekleniyor
  • CF (Yapılandırma) — Ayarlanmakta olan düğümler
  • R (Çalışıyor) — Görev yürütülüyor
  • CG (Tamamlanıyor) — İşin tamamlanması
  • CD (Tamamlandı) — İş başarıyla tamamlandı
  • F (Başarısız) — İş bir hatayla karşılaştı

Düğüm Ayırmayı Denetle

# See which nodes are allocated
sinfo

# View detailed job information
scontrol show job 1

CycleCloud Web Arayüzünden İzleme

Kümenizi görsel olarak da izleyebilirsiniz:

  1. Tarayıcınızı açın ve https://your-cyclecloud-vm-ip
  2. CycleCloud kimlik bilgilerinizle oturum açın
  3. Düğüm durumunu ve sağlama işlemi ilerlemesini görmek için kümenizi seçin

6. Adım: İş sonuçlarını görüntüleme

İşiniz bittiğinde çıkış dosyasını denetleyin:

# View the output
cat hello_world.out

Örnek çıkış:

Hello from hpc-1
Job started at Mon Dec  1 14:23:45 UTC 2025
Running on partition: hpc
Job completed at Mon Dec  1 14:23:55 UTC 2025

Çıktı dosyası konumu

Varsayılan olarak, sistem işi gönderdiğiniz dizinde çıkış dosyaları oluşturur. Bu dizin genellikle Azure NetApp Files gibi paylaşılan bir dosya sisteminde olduğundan tüm düğümler çıkışlara erişebilir.


Pratik örnekler

Örnek 1: Basit Python betiği

#!/bin/bash
#SBATCH --job-name=python_analysis
#SBATCH --output=analysis_%j.out
#SBATCH --partition=htc
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --time=01:00:00

module load python/3.9  # Load Python if using modules
python my_analysis.py

Örnek 2: Çok düğümlü MPI işi

#!/bin/bash
#SBATCH --job-name=mpi_simulation
#SBATCH --output=sim_%j.out
#SBATCH --partition=hpc
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=120
#SBATCH --time=04:00:00

module load mpi/openmpi
srun ./my_mpi_program

Örnek 3: GPU işi

#!/bin/bash
#SBATCH --job-name=ml_training
#SBATCH --output=training_%j.out
#SBATCH --partition=gpu
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --gres=gpu:1
#SBATCH --time=08:00:00

module load cuda/11.8
python train_model.py

Yaygın Slurm Komutları Başvuru Kaynağı

Command Description
sbatch script.sh Toplu iş gönder
squeue İş kuyruğu görüntüleme
squeue -u $USER Yalnızca işlerinizi görüntüleme
sinfo Bölüm ve düğüm durumunu görüntüleme
scancel JOB_ID Bir işi iptal et
scancel -u $USER Tüm işlerinizi iptal etme
scontrol show job JOB_ID Ayrıntılı iş bilgileri
sacct -j JOB_ID İş muhasebe bilgileri (tamamlandıktan sonra)
srun command Ayrılan kaynaklarda etkileşimli komut çalıştırma
salloc Etkileşimli kaynak ayırma isteğinde bulunma

Sorun giderme

Görev Beklemede (PD) Durumunda Takıldı

Nedeni kontrol et.

squeue -j JOB_ID -o "%j %T %r"

Yaygın nedenler:

  • (Resources) — Düğümlerin sağlanması bekleniyor (normal, 2-5 dakika bekleyin)
  • (Priority) — Diğer işler daha yüksek önceliğe sahiptir
  • (QOSMaxJobsPerUserLimit) — İş sınırınıza ulaştınız

Düğümler başlatılmıyor

Sağlama hataları için CycleCloud'a bakın:

# From CycleCloud VM
cyclecloud show_cluster your-cluster-name

İş hemen başarısız oldu

Çıkış dosyasını ve Slurm günlüklerini denetleyin:

# View your output file
cat your_output_file.out

# Check Slurm's record
sacct -j JOB_ID --format=JobID,State,ExitCode,Reason

Sonraki Adımlar

  • Ölçeği büyütmek: Birden çok düğüm kullanan işleri gönderme
  • Kapsayıcıları kullanma: Slurm için CycleCloud Çalışma Alanı, kapsayıcılı iş yükleri için Pyxis ve Enroot içerir
  • İş hesaplamayı ayarlama: Zaman içinde kaynak kullanımını izlemek için MySQL tümleştirmesini etkinleştirme
  • Open OnDemand'i keşfedin: Kümenize web arabirimi aracılığıyla erişme