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.
Kubernetes, genellikle K8s olarak adlandırılan, kapsüllenmiş uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmek için tasarlanmış açık kaynaklı bir platformdur. Orijinal olarak Google tarafından geliştirilen ve artık Cloud Native Computing Foundation (CNCF) tarafından sürdürülen Kubernetes, bulutta yazılım düzenleme için standart haline gelmiştir. Artificial Intelligence (AI) ve Machine Learning (ML) bağlamında, mühendislik ekiplerinin distributed training süreçlerinden yüksek kullanılabilirlik üretim çıkarımına kadar karmaşık iş akışlarını yönetmesini sağlayan kritik altyapı katmanı olarak hizmet verir. Kubernetes, temel donanımı soyutlayarak, uygulamaların şirket içinde (on-premise) veya genel bulut sağlayıcıları aracılığıyla barındırılıp barındırılmadığına bakılmaksızın güvenilir ve verimli bir şekilde çalışmasını sağlar.
Temel Mimari ve Kavramlar#
Özünde Kubernetes, düğüm adı verilen bir dizi çalışan makineden oluşan bir küme mimarisi üzerinde çalışır. Bu düğümler containerization iş yüklerini çalıştırırken, bir kontrol düzlemi 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 kapsülleyen bir "Pod"dur. Bu soyutlama, computer vision uygulamaları için hayati önem taşır; çünkü geliştiricilerin, Graphics Processing Units (GPUs) için özel CUDA kütüphaneleri gibi bağımlılıkları tutarlı bir ortamda paketlemesine olanak tanır. Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS) ve Google Kubernetes Engine (GKE) gibi büyük bulut servisleri, bu mimarinin yönetilen sürümlerini sağlayarak veri bilimi ekiplerinin bakım yükünü basitleştirir.
Kubernetes Neden AI İçin Önemlidir?#
Machine Learning Operations (MLOps) içinde Kubernetes'in birincil değeri, dinamik iş yüklerini işleme yeteneğinde yatar. Yapay zeka modelleri genellikle eğitim sırasında devasa hesaplama gücüne ve dağıtım sırasında düşük inference latency değerine ihtiyaç duyar.
- Ölçeklenebilirlik: Kubernetes, kaynakları otomatik olarak ayarlamak için otomatik ölçeklendirmeyi kullanır. Ani bir trafik artışı meydana gelirse, Yatay Pod Otomatik Ölçeklendiricisi (Horizontal Pod Autoscaler), manuel müdahaleye gerek kalmadan scalability özelliğini 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.
- Esnek Dağıtım: model deployment sırasında yüksek kullanılabilirliği sağlamak esastır. Bir düğüm arızalanırsa, Kubernetes etkilenen pod'ları sağlıklı düğümlerde otomatik olarak yeniden başlatarak kritik API servisleri için kesinti süresini önler.
Gerç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, artan object detection yükünü karşılamak için yoğun saatlerde kaynakları dinamik olarak artırabilir ve maliyetlerden tasarruf etmek için geceleri azaltabilir. Bu yaklaşım, modern traffic management systems için temel niteliktedir.
-
E-ticaret Kişiselleştirmesi: Çevrimiçi perakendeciler, mikro hizmetler üzerine inşa edilmiş karmaşık recommendation systems kullanır. Bir hizmet aday üretimiyle ilgilenirken diğeri yeniden sıralamayı yönetebilir. Kubernetes, bu farklı hizmetleri koordine ederek ekiplerin sıralama yapan neural network yapısını tüm alışveriş deneyimini aksatmadan bağımsız olarak güncellemesine olanak tanır ve sürekli entegrasyonu kolaylaştırır.
Kubernetes ve Docker Arasındaki Farklar#
Yaygın bir kafa karışıklığı noktası, Kubernetes ile Docker arasındaki ilişkiyi anlamaktır. Bunlar rakip değil, birbirini tamamlayan teknolojilerdir. Docker, bireysel konteynerler oluşturmak ve çalıştırmak (uygulamayı paketlemek) için bir araçken, Kubernetes bu konteyner filosunu birden fazla makinede yönetmek için bir araçtır. model weights ve kodunuzu bir imaj haline getirmek için Docker kullanır ve ardından bu imajın kopyalarının üretimde nerede, ne zaman ve kaç tane çalışacağını belirlemek için Kubernetes kullanırsınız.
Örnek: Konteynerleştirme için Çıkarım Betiği#
Kubernetes üzerinde bir model dağıtmak için geliştiriciler genellikle konteyner için giriş noktası görevi gören bir Python betiği ile başlar. Aşağıdaki kod, Ultralytics YOLO26 modelini kullanan 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.")Araçlar ve Ekosistem#
Kubernetes ekosistemi, veri bilimi için uyarlanmış geniş bir araç yelpazesi içerir. Kubeflow, Kubernetes üzerinde ML iş akışlarının 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 kullanır. Modelleri bu ortamlara eğitme ve dağıtma karmaşıklığını daha da basitleştirmek için Ultralytics Platform, veri kümesi yönetimini ve model eğitimini otomatikleştiren birleşik bir arayüz sunarak kullanıcıların cloud computing kümelerine hazır modeller dışarı aktarmasına olanak tanır. Ek olarak, Helm gibi paket yöneticileri, yeniden kullanılabilir grafikler aracılığıyla karmaşık Kubernetes uygulamalarını yönetmeye yardımcı olur.






