Headlamp Kubeflow Eklentisi: AI/ML İşlerine Küme Gözüyle
Kubernetes, yapay zeka ve makine öğrenmesi iş yüklerinin varsayılan çalıştırma platformuna dönüştü. Veri bilimcilerin notebook sunucuları, dağıtık eğitim işleri, hiperparametre araması ve çok adımlı ML boru hatları çoğunlukla bir Kubernetes kümesinde son buluyor. Kubeflow bu yığını Kubernetes yerlisi bir yaklaşımla bir araya getiriyor: Her yetenek bir Custom Resource Definition (CRD) olarak açığa çıkıyor.
Bu tasarım küme operatörleri için avantajlı; çünkü ML iş yükleri kümedeki diğer nesnelerle aynı temel yapıtaşlarıyla gözlemlenebiliyor. Fakat pratikte bu platformlarla birlikte gelen özel ML panoları, altta yatan Kubernetes katmanını gizliyor. Bir notebook takıldığında ya da eğitim çalışması başarısız olduğunda operatör Pod düzeyinde ne olup bittiğini anlamak için sık sık kubectl‘e dönmek zorunda kalıyor. Headlamp Kubeflow eklentisi bu boşluğu, Kubeflow’un özel kaynaklarını genel amaçlı bir Kubernetes arayüzünün içinde göstererek kapatmayı hedefliyor.
Neden operatörlerin farklı bir görünüme ihtiyacı var?
Amaca özel ML panoları veri bilimcilerin deney, boru hattı ve notebook göndermesine yardım eder. Küme operatörleri ve site reliability engineer (SRE) rolündeki kişiler ise altta yatan Kubernetes kaynaklarını incelerken farklı sorular sorar:
- Notebook neden takılı? Durum
ImagePullBackOffmu,OOMKilledmi, yoksa Pod bir PersistentVolumeClaim mi bekliyor? - Namespace’ler genelinde son dönemde hangi Run kaynakları başarısız oldu?
- Katib Experiment hangi parametre setini en iyi olarak raporluyor?
- TrainJob kaynakları beklenen TrainingRuntime kaynaklarına referans veriyor mu?
- Hangi batch iş yükleri çalışıyor ve Kubernetes bunlar için hangi durumu bildiriyor?
Headlamp Kubeflow eklentisi bu soruları doğrudan Kubernetes API sunucusundan okuduğu verilerle yanıtlıyor. Pod koşullarını, Kubernetes tarafından üretilen hata nedenlerini ve namespace’ler arası kaynakları araya bir ML servisi veya veritabanı sokmadan gösteriyor.
Eklentinin kapsamı
Kubeflow modüler bir yapıya sahip olduğundan ekipler genellikle yalnızca ihtiyaç duydukları bileşenleri kurar. Eklenti de kümedeki Kubeflow API gruplarını keşfediyor ve yalnızca karşılık gelen bölümleri gösteriyor. Desteklenen bileşen aileleri ve API kaynakları şu şekilde:
| Bileşen | Amaç | API kaynakları |
|---|---|---|
| Notebooks | Jupyter, VS Code, RStudio gibi geliştirme ortamları sağlar | Notebook, Profile, PodDefault |
| Pipelines | Pipeline, sürüm, deney, çalıştırma ve zamanlamaları tanımlar ve izler | Pipeline, PipelineVersion, Run, RecurringRun, Experiment |
| Katib | Hiperparametre ayarı ve sinir ağı mimari araması otomasyonu | Experiment, Trial, Suggestion |
| Training | PyTorch ve TensorFlow gibi dağıtık eğitim iş yüklerini çalıştırır | TrainJob, TrainingRuntime, ClusterTrainingRuntime |
| Spark | Apache Spark ile büyük ölçekli veri işleme | SparkApplication, ScheduledSparkApplication |
Arayüzde neler görülüyor?
Notebook Pod’larının incelenmesi
Notebook detay görünümü Pod koşullarını ve bunların reason ile message alanlarını gösteriyor. Bunun yanında CPU, bellek ve GPU istekleri ile limitleri; PersistentVolumeClaim, ConfigMap, Secret veya emptyDir gibi destekleyici tipleriyle birlikte volume mount’ları; Secret veya ConfigMap nesnelerine referans veren ortam değişkenlerini; sidecar container’ları ve node toleration bilgilerini bir arada sunuyor. Böylece normalde birkaç kubectl describe komutu gerektirecek bilgi tek görünümde toplanıyor.
Hiperparametre ayarının incelenmesi
Katib görünümleri; kullanılan ayar algoritmasını, arama uzayını, canlı durumuyla her Trial’ı ve mevcut en iyi Trial’ı metrik değerleri ile parametre atamalarıyla birlikte gösteriyor. Erken durdurma yapılandırması ve erken duran Trial sayısı da bu arayüzde görülüyor, böylece arama süreci küme arayüzünden ayrılmadan takip edilebiliyor.
Pipeline durumunu backend olmadan görme
Pipelines görünümleri Kubernetes API kaynaklarını doğrudan okuyor; Kubeflow Pipelines API servisine veya backend veritabanına sorgu göndermiyor. Bu sayede söz konusu servis erişilemez olduğunda bile kayıtlı pipeline durumu incelenebiliyor. Pipeline detay görünümü, en son ve önceki PipelineVersion tanımlarını yan yana YAML diff olarak karşılaştırıyor. Run görünümleri durumu ve süreyi, RecurringRun görünümleri okunabilir zamanlamaları gösteriyor; artefakt görünümü ise son Run kaynaklarındaki pipelineRoot değerlerini bir araya getiriyor.
ML kaynaklarını haritalama
Eklenti bir Headlamp map source kaydediyor; Notebook, Profile, PodDefault, Experiment, Pipeline, SparkApplication ve TrainJob kaynaklarını graf düğümleri olarak çiziyor. Düğümler arasındaki kenarlar .metadata.ownerReferences alanına göre kuruluyor. Headlamp ayrıca bu kaynak türleri üzerine gelindiğinde satır içi özetler de gösteriyor.
Kurulum ve deneme
Kubeflow eklentisinin README dosyası kurulumu ve yerel küme hazırlığını açıklıyor; değerlendirme için yalnızca CRD’lerin kullanıldığı hafif bir yol da yer alıyor. Eklenti kurulu API gruplarını keşfettiğinden hem mevcut modüler bir Kubeflow kurulumuyla hem de yalnızca CRD’ler ve örnek kaynaklarla oluşturulmuş bir değerlendirme kümesiyle çalışabiliyor.
Bu deseni diğer platformlara uygulamak
Kubeflow burada daha geniş bir örüntüyü örnekliyor. Platformlar alanlarına özgü iş akışlarını sıklıkla custom resource’larla modelliyor. Bu platformların panoları söz konusu iş akışlarına odaklanırken Kubernetes operatörleri altta yatan API kaynaklarının ve Pod’ların durumunu da görmek istiyor. Genel bir Kubernetes arayüzüne eklenen CRD odaklı bir eklenti, operatörleri farklı araçlar arasında gezinmeye zorlamadan bu durumu ortaya çıkarabiliyor.
Eklenti Apache 2.0 lisansıyla ve Kubernetes SIG UI altında geliştiriliyor. Sorun bildirmek veya katkı sunmak isteyenler Headlamp plugins deposunun issue ve pull request kanallarını kullanabilir.
Kaynaklar ve İleri Okuma
- Operating AI/ML Workloads on Kubernetes: A Headlamp Plugin for Kubeflow (kubernetes.io)
- Kubeflow resmi sitesi
- Headlamp GitHub deposu
- Headlamp Kubeflow eklentisi README
- Headlamp eklenti issue takipçisi
- Headlamp eklenti pull request’leri
- Kubernetes Dashboard’dan Headlamp’a: Neden Geçiş Mantıklı?
- Headlamp Cluster API Eklentisi: CAPI Artık Görsel Arayüzde
- Headlamp Knative Eklentisi: Serverless’ı Görsel Takip
- Headlamp’e Volcano Eklentisi: Batch İşlerini Tek Ekranda İncele









1 yorum