/ Çözümler

Konteyner Platformu (Singularity/Apptainer)

HPC ortamında konteyner kullanımı: Singularity/Apptainer, Podman ve Docker entegrasyonu. Reproducible computing ve yazılım dağıtımı.

Konteyner Platformu Nedir?

HPC ortamlarında onlarca farklı araştırma grubu veya uygulama ekibi aynı sistemi paylaşır. Her grubun farklı Python sürümleri, birbirleriyle çakışan kütüphaneler ve özel derleme gereksinimleri bulunur. Geleneksel yaklaşımda bu durum ya sistem yöneticisi için süregelen bir yük ya da kullanıcı için kısıtlı bir çalışma ortamı anlamına gelir.

Konteyner teknolojisi bu sorunu kökten çözer. Bir konteyner; uygulamayı, tüm bağımlılıklarını ve çalışma ortamını tek bir taşınabilir dosyaya paketler. Bu dosya herhangi bir uyumlu sistemde açılır ve içindeki uygulama tam olarak paketlendiği gibi çalışır. Böylece “bende çalışıyor, sende neden çalışmıyor?” problemi ortadan kalkar.

HPC ortamları için özel olarak tasarlanmış Singularity (güncel adıyla Apptainer), Docker’ın sunduğu bu izolasyon ve taşınabilirlik avantajlarını yüksek performanslı hesaplama gerekliliklerine uygun biçimde sunar: kök yetkisi gerektirmez, MPI iş yükleriyle sorunsuz çalışır, GPU’lara doğrudan erişir ve paylaşımlı dosya sistemleriyle tam uyumludur.

Neden HPC’de Docker Değil, Singularity/Apptainer?

Docker, geliştirme ve üretim ortamlarında son derece yaygın kullanılan bir konteyner çözümüdür; ancak HPC için tasarlanmamıştır. Temel sorunlar şunlardır:

KriterDockerSingularity / Apptainer
Kök yetkisiDaemon kök olarak çalışır, güvenlik riski yaratırKullanıcı yetkisiyle çalışır, root gerekmez
MPI entegrasyonuKarmaşık, ağ ayarları gerektirirDoğal uyumlu, host MPI ile çalışır
GPU erişimiNVIDIA Container Runtime gerektirir--nv bayrağıyla doğrudan erişim
Paylaşımlı dosya sistemiSınırlı, ek yapılandırma isterLustre, BeeGFS ile sorunsuz çalışır
Imaj formatıKatmanlı, daemon bağımlıTek .sif dosyası, daemon yok
SLURM uyumuKısıtlıTam uyumlu, job içinde doğal çalışır

Apptainer, Open Container Initiative (OCI) standartlarına uygun olduğundan mevcut Docker imajlarını içe aktarabilir. Bu özellik, geçiş sürecini önemli ölçüde kolaylaştırır.

Apptainer Nasıl Çalışır?

Imaj Oluşturma

Konteyner imajı iki yöntemle hazırlanır. İlki, Singularity Definition File (.def) kullanmaktır:

# pytorch-env.def
Bootstrap: docker
From: nvidia/cuda:12.4.1-cudnn9-runtime-ubuntu22.04

%post
    apt-get update && apt-get install -y python3-pip git
    pip3 install torch==2.3.0 torchvision torchaudio \
        --index-url https://download.pytorch.org/whl/cu124
    pip3 install transformers accelerate deepspeed

%environment
    export PYTHONPATH=/opt/project:$PYTHONPATH

%labels
    Maintainer mevasis-hpc
    Version 1.0

Imaj bu tanım dosyasından şu komutla derlenir:

apptainer build pytorch-env.sif pytorch-env.def

Sonuçta elde edilen pytorch-env.sif dosyası, başka bir sisteme kopyalanabilir ve doğrudan çalıştırılabilir.

SLURM ile Birlikte Kullanım

Apptainer, SLURM job script’leri içinde sorunsuz çalışır:

#!/bin/bash
#SBATCH --job-name=dl-training
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=4
#SBATCH --gres=gpu:4
#SBATCH --time=12:00:00

# GPU'lara erişim için --nv bayrağı
srun apptainer exec --nv \
    --bind /scratch/$USER:/data \
    /shared/containers/pytorch-env.sif \
    python3 /data/train.py --config config.yaml

--nv bayrağı host NVIDIA sürücüsünü konteynere bağlar; donanım sürücüsü konteynere gömülmediğinden farklı sürücü sürümlerine sahip sistemlerde de aynı imaj çalışır.

Docker Imajlarını İçe Aktarma

Mevcut Docker Hub veya özel registry’den imaj çekmek tek komutla yapılır:

# Docker Hub'dan dönüştür
apptainer pull tensorflow.sif docker://tensorflow/tensorflow:2.16.0-gpu

# Özel registry'den çek
apptainer pull myapp.sif docker://registry.example.com/myapp:latest

Merkezi Imaj Deposu

Büyük HPC kurulumlarında her kullanıcının kendi imajını ayrı ayrı derlemesi hem disk alanı israfına hem de versiyon karmaşasına yol açar. Mevasis, merkezi bir imaj deposu (container registry) yapısı kurar:

/shared/containers/
├── pytorch/
│   ├── pytorch-2.3-cuda124.sif
│   └── pytorch-2.2-cuda121.sif
├── tensorflow/
│   └── tensorflow-2.16-gpu.sif
├── bioinformatics/
│   ├── gatk-4.5.sif
│   └── alphafold-2.3.sif
└── custom/
    └── <ekip-özel-imajları>

Kullanıcılar ortak imajları doğrudan kullanır; ihtiyaç duyduklarında kendi özel imajlarını /shared/containers/custom/ altına yerleştirebilir.

Reproducible Computing: Tekrarlanabilir Araştırma

Bilimsel hesaplamada sonuçların yeniden üretilebilmesi kritik önem taşır. Apptainer bu soruna kalıcı bir çözüm getirir:

  • Bir .sif dosyası dondurulmuş bir ortamdır; kütüphane sürümleri değişmez.
  • Makalenin yayımlanmasından yıllar sonra bile aynı ortam açılabilir.
  • İmaj versiyonu, iş numarası ve commit hash’i ile birlikte arşivlenebilir.
  • Farklı HPC sistemleri veya bulut platformları arasında taşınabilir.

Mevasis’in Uygulama Yöntemi

1. Mevcut Ortam Analizi

Proje başlangıcında HPC sistemindeki mevcut yazılım yığını, kullanıcı alışkanlıkları ve aktif iş yükleri incelenir. Hangi uygulamaların konteynere taşınacağı, hangilerinin sistem seviyesinde kalacağı ve imaj boyutu ile performans arasındaki denge belirlenir.

2. Apptainer Kurulumu ve Yapılandırması

Apptainer, sistem yöneticisi yetkisiyle kurulur; ancak kullanıcıların kök yetkisi olmadan imaj çalıştırabilmesi için gerekli güvenlik profilleri yapılandırılır. SLURM entegrasyonu, otomatik GPU bağlama ve paylaşımlı dosya sistemi mount ayarları tamamlanır.

3. İmaj Kütüphanesi Oluşturma

Yaygın kullanılan araştırma ve hesaplama ortamları için hazır .sif imajları derlenir. CUDA sürümlerine ve Python versiyonlarına göre matris halinde hazırlanan imajlar merkezi depoya yerleştirilir. İmajlar güvenlik taramasından geçirilir ve versiyon etiketleriyle belgelenir.

4. Kullanıcı ve Ekip Eğitimi

Apptainer komut satırı kullanımı, kendi imajını oluşturma ve iş script’lerine entegrasyon konularında uygulamalı eğitim verilir. Kullanıcı belgeleri ve örnek script’ler sisteme eklenir.

5. İzleme ve Bakım

İmaj deposunun disk kullanımı izlenir, eski imajlar arşivlenir. Yeni CUDA veya kütüphane sürümleri için imaj güncellemeleri düzenli aralıklarla yapılır.

Kimler İçin Uygundur?

  • Farklı yazılım bağımlılıklarına sahip birden fazla araştırma grubunun aynı HPC sistemini paylaştığı üniversiteler ve araştırma kurumları
  • Deneylerinin tekrarlanabilirliğini garanti altına almak isteyen bilim insanları ve veri bilimciler
  • Geliştirme ortamını (laptop/workstation) ile üretim ortamını (HPC cluster) birebir eşleştirmek isteyen mühendislik ekipleri
  • Konteyner tabanlı yapay zeka ve makine öğrenmesi pipeline’larını HPC altyapısına taşımak isteyen organizasyonlar

Sonraki Adım

Konteyner platformu kurulumu ve HPC altyapınıza entegrasyonu için Mevasis mühendis ekibiyle görüşmek üzere iletişim sayfamızı ziyaret edin. Gereksinimlerinizi paylaşın; mevcut altyapınıza özel çözüm önerisi ve fiyatlandırma ile en kısa sürede dönelim.

← Tüm Çözümler

Sıkça Sorulan Sorular

Bu çözüm ne zaman tercih edilmeli?

Farklı araştırma grupları veya ekipler aynı HPC cluster'ı paylaşıyor ve her birinin farklı yazılım bağımlılıkları varsa, konteyner platformu vazgeçilmezdir. Özellikle bir Python ortamının ya da kütüphane versiyonunun sistem genelinde değiştirilmesinin mümkün olmadığı çok kiracılı yapılar; üretilen sonuçların ileride tekrar üretilmesi (reproducibility) gereken bilimsel iş yükleri; ve kendi veri merkezinizde test ettiğiniz uygulamayı buluta veya başka bir HPC sistemine taşımak istediğiniz senaryolarda konteyner çözümü tercih edilmelidir.

Mevasis bu çözümü nasıl sağlıyor?

Mevasis, Apptainer/Singularity kurulumu ve yapılandırmasından Docker/OCI imaj dönüşümüne, merkezi imaj deposu oluşturmaya ve SLURM ile entegrasyona kadar uçtan uca konteyner platformu hizmeti sunar. Deneyimli HPC mühendisleri, mevcut altyapınızı analiz eder; en uygun dağıtım mimarisini belirler ve kullanıcı ekiplerine uygulamalı eğitim vererek geçişi sorunsuz hale getirir.

Fiyatlandırma nasıl?

Konteyner platformu hizmetinin kapsamı — mevcut altyapı büyüklüğü, kullanıcı sayısı, özel imaj deposu gereksinimi ve eğitim ihtiyacı gibi faktörlere göre değiştiğinden — fiyatlandırma projeye özeldir. Gereksinimlerinizi teklif formu aracılığıyla paylaşın; ekibimiz size en kısa sürede detaylı teklif sunsun.