Yapay zeka modellerini üretime almak, modern veri bilimi ekipleri için kritik bir adımdır.
Yapay zeka modellerini üretime almak, modern veri bilimi ekipleri için kritik bir adımdır. Kubernetes, bu süreçte ölçeklenebilirlik, yüksek erişilebilirlik ve otomasyon sağlayan güçlü bir orkestrasyon platformudur. Bu makalede, bir AI modelini Kubernetes kümesine etkili bir şekilde deploy etme sürecini adım adım ele alacağız. Bu rehber, geliştiricilerin ve DevOps mühendislerinin pratik uygulamalarla model servisini hızlıca ayağa kaldırmasına yardımcı olacak şekilde tasarlanmıştır. Kubernetes’in container orkestrasyon yetenekleri sayesinde, modeliniz trafiğe göre otomatik ölçeklenebilir ve kesintisiz güncellenebilir hale gelecektir.
AI modelinizi Kubernetes’e deploy etmeden önce, modeli Docker container’ına dönüştürmeniz gerekir. Bu aşama, modelin bağımlılıklarını standartlaştırarak taşınabilirliğini sağlar. Öncelikle, Python tabanlı bir model için Dockerfile oluşturun. Örneğin, TensorFlow veya PyTorch modelinizi içeren bir dizinde, temel imaj olarak python:3.9-slim kullanın. Model dosyanızı COPY komutuyla ekleyin ve FastAPI veya Flask gibi bir framework ile servis endpoint’i tanımlayın. Gunicorn ile worker sayısını ayarlayarak performansı optimize edin: CMD [“gunicorn”, “–bind”, “0.0.0.0:8080”, “–workers”, “4”, “app:app”].
Docker imajını derleyin ve registry’ye (örneğin Docker Hub veya özel bir Harbor) yükleyin. docker build -t username/ai-model:v1 . komutuyla imajı oluşturun, ardından docker push ile paylaşın. Bu imaj, Kubernetes pod’larında çalışacak temel birimdir. Güvenlik için multi-stage build kullanarak gereksiz katmanları temizleyin ve non-root kullanıcı tanımlayın. Bu hazırlık, deployment sırasında tutarlılık sağlar ve küme genelinde aynı ortamı garanti eder. Yaklaşık 100-200 MB boyutunda hafif bir imaj hedefleyin ki pod’lar hızlı başlasın.
Deployment, pod’ların replika sayısını ve güncelleme stratejisini yönetir. apiVersion: apps/v1 altında kind: Deployment belirtin. spec.template.spec.containers altında image: username/ai-model:v1 ve ports: – containerPort: 8080 tanımlayın. Replicas: 3 ile başlangıç ölçeğini ayarlayın. Strategy altında rollingUpdate ile maxUnavailable: 1 yaparak sıfır kesinti sağlayın. resources.requests ve limits ile CPU/memory kısıtları ekleyin: requests: cpu: “500m”, memory: “512Mi”; limits: cpu: “1”, memory: “1Gi”. Bu YAML’ı kubectl apply -f deployment.yaml ile uygulayın. kubectl get deployments ile durumu kontrol edin.
Modelinize erişim için Service oluşturun. kind: Service, selector ile deployment’ı eşleştirin ve type: LoadBalancer seçin. ports: – port: 80, targetPort: 8080. Bu, trafiği pod’lar arasında dağıtır. Ingress için nginx-ingress controller kurun ve host bazlı routing tanımlayın. TLS terminasyonu ekleyerek güvenliği artırın. kubectl expose deployment ai-model –type=LoadBalancer –port=80 ile hızlı service oluşturun. Bu yapı, model tahmin isteklerini (örneğin POST /predict) dış dünyaya açar ve health check’lerle pod sağlığını izler. Pratikte, 1000+ RPS trafiği için horizontal pod autoscaler ekleyin.
Horizontal Pod Autoscaler (HPA) ile CPU kullanımına göre pod sayısını dinamik yönetin. kubectl autoscale deployment ai-model –cpu-percent=70 –min=3 –max=10 ile kurun. Metrics server etkinleştirin ki Kubernetes CPU metriğini okuyabilsin. Prometheus ve Grafana entegrasyonuyla dashboard oluşturun: model latency, throughput ve error rate’leri izleyin. Bu sayede, pik yüklerde otomatik ölçeklenme sağlanır. Örneğin, trafik %70 CPU’ya ulaştığında pod’lar 10’a kadar artar, maliyetleri optimize eder.
Yeni model versiyonu için imajı güncelleyin ve kubectl set image deployment/ai-model ai-model=username/ai-model:v2 ile rolling update tetikleyin. İlerleme durumunu kubectl rollout status deployment/ai-model ile takip edin. Sorun olursa kubectl rollout undo deployment/ai-model ile önceki versiyona dönün. Canary deployment için ayrı namespace veya istio ile trafik bölümü uygulayın: %10 trafiği yeni versiyona yönlendirin. Log rotasyonu ve persistent volume ile model artifact’larını saklayın. Bu stratejiler, üretimde sıfır downtime ve hızlı iterasyon sağlar.
Sonuç olarak, AI modelinizi Kubernetes’e deploy etmek, ölçeklenebilir ve güvenilir bir servis mimarisi kurmanızı sağlar. Bu adımları takip ederek, ekipleriniz model performansını maksimize edebilir ve operasyonel verimliliği artırabilir. Pratik uygulamalarda, CI/CD pipeline’ları (Jenkins veya GitHub Actions) entegre ederek otomasyonu tamamlayın. Bu yaklaşım, kurumsal düzeyde AI operasyonlarını dönüştürür ve rekabet avantajı yaratır.