/ Blog

HPC'de Konteyner Platformu: Apptainer/Singularity Teknik Rehberi

HPC ortamlarında Apptainer/Singularity kurulumu, SLURM entegrasyonu, merkezi imaj deposu ve reproducible computing için adım adım teknik rehber.

HPC ortamlarında yazılım bağımlılığı yönetimi, sistem yöneticilerinin en sık karşılaştığı güçlüklerden biridir. Onlarca araştırma grubunun aynı cluster’ı paylaştığı ortamlarda her grubun farklı Python sürümlerine, çakışan kütüphanelere ve özel derleme gereksinimlerine sahip olması kaçınılmazdır. Konteyner teknolojisi bu soruna kökten çözüm getirir; Apptainer (eski adıyla Singularity) ise bu çözümü HPC güvenlik ve performans gerekliliklerine uygun biçimde sunar.

Neden Docker Değil Apptainer?

Docker, uygulama geliştirme ve üretim ortamlarında yaygın kullanılsa da HPC için tasarlanmamıştır. En kritik sorun güvenliktir: Docker daemon kök yetkileriyle çalışır ve bu durum paylaşımlı HPC sistemlerinde kabul edilemez bir güvenlik riski oluşturur. Apptainer ise kullanıcı yetkisiyle çalışır; root erişimi olmadan imaj çalıştırılabilir.

Performans açısından da fark belirgindir. Docker’ın katmanlı imaj yapısı ve daemon bağımlılığı, yüksek hız gerektiren MPI iş yüklerinde ek gecikmeye yol açar. Apptainer’ın tek dosya formatı (.sif), bu yükü ortadan kaldırır. Bunun yanı sıra Lustre ve BeeGFS gibi HPC’ye özgü paralel dosya sistemleriyle tam uyumlu çalışır; SLURM job script’leri içinde herhangi bir ek yapılandırma gerekmez.

Apptainer, Open Container Initiative (OCI) standartlarına uyduğundan mevcut Docker imajları hiçbir değişiklik yapılmadan içe aktarılabilir. Bu özellik, mevcut Docker tabanlı iş akışlarının HPC ortamına geçişini önemli ölçüde hızlandırır.

Temel Mimari Bileşenler

Bir Apptainer kurulumu üç ana bileşenden oluşur.

İmaj dosyası (.sif): Uygulamayı, tüm bağımlılıklarını ve çalışma ortamını içeren tek bir sıkıştırılmış dosyadır. Değiştirilemez (immutable) yapısı sayesinde versiyonlama ve arşivleme kolaylaşır.

Definition file (.def): İmajın nasıl oluşturulacağını tanımlayan metin dosyasıdır. Temel imaj seçimi, kurulacak paketler, ortam değişkenleri ve meta veriler bu dosyada belirtilir. Bir CI/CD pipeline’ına entegre edilerek imaj üretimi otomatikleştirilebilir.

Merkezi imaj deposu: Büyük kurulumlar için ortak bir /shared/containers/ dizini altında organize edilen imaj kütüphanesidir. Farklı CUDA sürümleri ve Python versiyonları için matris halinde hazırlanan imajlar bu yapıda yönetilir.

Kurulum ve Yapılandırma Süreci

Apptainer kurulumu sistem yöneticisi yetkisiyle gerçekleştirilir; ancak kullanıcıların kök erişimi olmadan imaj çalıştırabilmesi için doğru güvenlik profilleri yapılandırılmalıdır.

İlk adımda kullanıcı ad alanı (user namespace) desteğinin etkin olduğu doğrulanır. Ardından Apptainer paketi kurulur ve /etc/apptainer/apptainer.conf dosyasından izin verilen mount noktaları, bind path’ler ve ağ ayarları düzenlenir. SLURM entegrasyonu için herhangi bir ek eklenti gerekmez; srun komutu apptainer exec ile doğrudan kullanılabilir.

GPU destekli iş yükleri için --nv bayrağı host NVIDIA sürücüsünü konteynere bağlar. Bu yöntem, sürücünün konteynere gömülmesine gerek bırakmaz; farklı sürücü sürümlerine sahip sistemlerde de aynı imaj sorunsuz çalışır.

Yaygın Sorunlar ve Çözümleri

Imaj derleme süresi: Büyük imajlar (özellikle CUDA tabanlı olanlar) saatler sürebilir. Çözüm olarak imaj derlemelerini derleme sunucularında gerçekleştirip tamamlanmış .sif dosyalarını merkezi depoya kopyalamak önerilir. Sık değişmeyen katmanlar için ara imajlar oluşturmak da derleme süresini kısaltır.

Bind mount çakışmaları: Konteyner içindeki dizin yapısı ile host dizinleri çakıştığında beklenmedik davranışlar ortaya çıkabilir. --no-home bayrağı kullanılarak ev dizininin otomatik bağlanması devre dışı bırakılabilir; yalnızca gerekli dizinler açıkça bind edilmelidir.

MPI sürüm uyumsuzluğu: Konteyner içindeki MPI kütüphanesi ile host MPI sürümü uyuşmazsa iş yükleri başarısız olur. Bu durumda ya her iki ortamda aynı MPI sürümü kullanılmalı ya da hybrid bind modeli tercih edilmelidir: host MPI çalıştırır, konteyner uygulamayı barındırır.

Disk kota sorunları: Apptainer varsayılan olarak imaj önbelleğini ~/.apptainer/cache altında tutar. Kullanıcı disk kotalarının aşılmaması için sistem genelinde merkezi bir önbellek dizini (APPTAINER_CACHEDIR) tanımlanmalıdır.

En İyi Uygulamalar

Reproducible computing için imaj .def dosyaları, iş numaraları ve commit hash’leriyle birlikte versiyon kontrol sisteminde saklanmalıdır. Her imaj %labels bölümünde maintainer bilgisi, sürüm numarası ve oluşturma tarihi içermelidir.

İmaj güvenliği açısından temel imajlar düzenli aralıklarla güvenlik güncellemeleriyle yeniden derlenmelidir. Apptainer’ın SIF imza doğrulama özelliği ile imaj bütünlüğü kontrol altında tutulabilir.

Performans için imaj dosyaları paralel dosya sistemi üzerinde değil, yerel diskte (node-local scratch) çalıştırılmalıdır. Büyük veri setleri ise --bind ile ayrıca bağlanmalıdır; imaja dahil edilmemelidir.

Sonuç

Apptainer/Singularity tabanlı konteyner platformu, HPC ortamlarında yazılım bağımlılığı sorununu kalıcı olarak çözer. Doğru kurulum ve merkezi imaj deposu yapılandırmasıyla hem sistem yöneticilerinin yükü azalır hem de araştırmacılar ihtiyaç duydukları ortamları bağımsız biçimde yönetebilir hale gelir.

Konteyner platformu çözümü hakkında daha fazla bilgi almak için /cozumler/container-platform/ sayfasını ziyaret edin. HPC altyapınıza özel kurulum ve yapılandırma için Mevasis mühendis ekibiyle iletişime geçin; gereksinimlerinizi paylaşın, en kısa sürede detaylı teklif sunalım.