Kubernetes
Kubernetes'in yapay zeka modellerinin dağıtımını ve ölçeklendirilmesini nasıl otomatikleştirdiğini keşfet. Yüksek performanslı bilgisayarlı görme için Ultralytics YOLO26'yı K8s üzerinde yönetmeyi öğren.
Genellikle K8s olarak bilinen Kubernetes, konteynerleştirilmiş uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmek için tasarlanmış açık kaynaklı bir platformdur. Başlangıçta Google tarafından geliştirilen ve günümüzde Cloud Native Computing Foundation (CNCF) tarafından sürdürülen Kubernetes, bulut üzerinde yazılım yönetimi için standart haline gelmiştir. Yapay Zeka (AI) ve Makine Öğrenimi (ML) bağlamında, mühendislik ekiplerinin dağıtık eğitimden yüksek erişilebilirlikli üretim çıkarımına kadar karmaşık iş akışlarını yönetmelerini sağlayan kritik bir altyapı katmanı işlevi görür. Kubernetes, temel donanımı soyutlayarak uygulamaların şirket içi (on-premise) veya genel bulut sağlayıcıları üzerinden barındırılmasından bağımsız olarak güvenilir ve verimli bir şekilde çalışmasını sağlar.
Link to this sectionTemel Mimari ve Kavramlar#
Özünde Kubernetes, düğüm (node) adı verilen bir dizi çalışan makineden oluşan bir küme mimarisi üzerinde çalışır. Bu düğümler konteynerleştirme iş yüklerini çalıştırırken, bir kontrol düzlemi (control plane) kümenin genel durumunu yönetir. Kubernetes'teki en küçük dağıtılabilir birim, depolama ve ağ kaynaklarını paylaşan bir veya daha fazla konteyneri kapsayan "Pod"dur. Bu soyutlama, bilgisayarlı görü uygulamaları için hayati önem taşır; çünkü geliştiricilerin Grafik İşleme Birimleri (GPU'lar) için belirli CUDA kütüphaneleri gibi bağımlılıkları tutarlı bir ortamda paketlemelerine olanak tanır. Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS) ve Google Kubernetes Engine (GKE) gibi büyük bulut hizmetleri, bu mimarinin yönetilen sürümlerini sunarak veri bilimi ekipleri için bakım yükünü basitleştirir.
Link to this sectionKubernetes Neden AI İçin Önemlidir?#
Kubernetes'in Makine Öğrenimi Operasyonları (MLOps) alanındaki temel değeri, dinamik iş yüklerini yönetme yeteneğinde yatar. AI modelleri genellikle eğitim sırasında büyük miktarda hesaplama gücüne, dağıtım sırasında ise düşük çıkarım gecikmesine ihtiyaç duyar.
- Ölçeklenebilirlik: Kubernetes, kaynakları otomatik olarak ayarlamak için otomasyon ölçeklendirme kullanır. Ani bir trafik artışı meydana gelirse, Horizontal Pod Autoscaler, manuel müdahaleye gerek kalmadan ölçeklenebilirliği korumak için çıkarım pod'larının sayısını artırabilir.
- Kaynak Optimizasyonu: Pahalı donanımların verimli bir şekilde tahsis edilmesi çok önemlidir. Kubernetes, kısmi GPU paylaşımı ve düğüm yakınlığı (node affinity) sağlayarak derin öğrenme modellerinin yalnızca aktif işler gerektirdiğinde kaynak tüketmesini garanti eder.
- Dayanıklı Dağıtım: Model dağıtımı sırasında yüksek erişilebilirliği sağlamak esastır. Bir düğüm başarısız olursa, Kubernetes etkilenen pod'ları sağlıklı düğümlerde otomatik olarak yeniden başlatır ve kritik API servislerinin kesintiye uğramasını önler.
Link to this sectionGerçek Dünya Uygulamaları#
Kubernetes, çeşitli endüstrilerdeki birçok büyük ölçekli AI uygulamasının belkemiğidir:
-
Akıllı Şehir Trafik Yönetimi: Bir belediye, binlerce kavşaktan gelen video akışlarını analiz etmek için Ultralytics YOLO26 modellerini dağıtabilir. Kubernetes kullanarak sistem, mesai saatlerinde artan nesne algılama yükünü karşılamak için kaynakları dinamik olarak artırabilir ve gece maliyetlerden tasarruf etmek için azaltabilir. Bu yaklaşım, modern trafik yönetim sistemlerinin temelini oluşturur.
-
E-ticaret Kişiselleştirme: Çevrimiçi perakendeciler, mikro hizmetler üzerine inşa edilmiş karmaşık öneri sistemleri kullanırlar. Bir hizmet aday üretimiyle ilgilenirken diğeri yeniden sıralamayı yönetebilir. Kubernetes, bu farklı hizmetleri düzenleyerek ekiplerin tüm alışveriş deneyimini aksatmadan sıralama yapan sinir ağını bağımsız olarak güncellemelerine olanak tanır ve sürekli entegrasyonu kolaylaştırır.
Link to this sectionKubernetes ve Docker Arasındaki Farklar#
Yaygın bir kafa karışıklığı noktası, Kubernetes ile Docker arasındaki ilişkidir. Bunlar rakip değil, birbirini tamamlayan teknolojilerdir. Docker, bireysel konteynerler oluşturmak ve çalıştırmak (uygulamayı paketlemek) için bir araçtır; Kubernetes ise bu konteynerlerden oluşan bir filoyu birden fazla makine genelinde yönetmek için bir araçtır. Model ağırlıklarını ve kodu bir imaj haline getirmek için Docker'ı kullanır, ardından bu imajın kaç kopyasının nerede, ne zaman ve nasıl çalışacağını belirlemek için Kubernetes'i kullanırsın.
Link to this sectionÖrnek: Konteynerleştirme için Çıkarım Betiği#
Bir modeli Kubernetes üzerinde dağıtmak için geliştiriciler genellikle konteynerin giriş noktası (entry point) işlevi gören bir Python betiği ile başlarlar. Aşağıdaki kod, Ultralytics YOLO26 modelini kullanarak basit bir çıkarım görevini göstermektedir. Bu betik, gelen istekleri işleyerek bir pod içinde çalışacaktır.
from ultralytics import YOLO
# Load the lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a K8s pod, this would likely process API payloads
results = model("https://ultralytics.com/images/bus.jpg")
# Output the detection count for logging
print(f"Detected {len(results[0].boxes)} objects in the frame.")Link to this sectionAraçlar ve Ekosistem#
Kubernetes ekosistemi, veri bilimi için uyarlanmış geniş bir araç yelpazesi içerir. Kubeflow, ML iş akışlarının Kubernetes üzerindeki dağıtımlarını basit, taşınabilir ve ölçeklenebilir hale getirmeye adanmış popüler bir araç setidir. Küme sağlığını ve uygulama metriklerini izlemek için mühendisler genellikle Prometheus'a güvenirler. Modellerin bu ortamlara eğitilip dağıtılmasının karmaşıklığını daha da basitleştirmek için, Ultralytics Platform, veri kümesi yönetimini ve model eğitimini otomatikleştiren, kullanıcıların bulut bilişim kümeleri için hazır modelleri dışa aktarmasına olanak tanıyan birleşik bir arayüz sunar. Ayrıca Helm gibi paket yöneticileri, yeniden kullanılabilir grafikler (charts) aracılığıyla karmaşık Kubernetes uygulamalarını yönetmeye yardımcı olur.






