Sözlük

Kubernetes

Kubernetes'in ölçeklenebilir model dağıtımı, dağıtılmış eğitim ve verimli kaynak yönetimi ile AI/ML iş yüklerini nasıl kolaylaştırdığını keşfedin.

YOLO modellerini Ultralytics HUB ile basitçe
eğitin

Daha fazla bilgi edinin

Genellikle K8s olarak kısaltılan Kubernetes, uygulama kapsayıcılarını dağıtmayı, ölçeklendirmeyi ve çalıştırmayı otomatikleştirmek için tasarlanmış açık kaynaklı bir platformdur. Başlangıçta Google tarafından tasarlanan Kubernetes, artık Cloud Native Computing Foundation tarafından sürdürülmektedir. Özünde, konteynerleştirilmiş uygulamalar için bir orkestratör görevi görür ve bunları verimli ve güvenilir bir şekilde çalışmaları için bir bilgisayar kümesi boyunca yönetir. Makine öğrenimine aşina olan kullanıcılar Kubernetes'i bir orkestranın şefi olarak düşünebilir ve tüm farklı enstrümanların (AI/ML uygulama bileşenlerinizin) uyumlu ve uygun ölçekte birlikte çalmasını sağlayabilir.

Kubernetes nedir?

Kubernetes, özünde konteynerleştirilmiş uygulamaları yönetmeye yönelik bir sistemdir. Konteynerler, yazılım kodunu ve bağımlılıklarını paketleyerek uygulamaların farklı bilgi işlem ortamlarında tek tip ve tutarlı bir şekilde çalışmasını sağlar. Docker, Kubernetes ile sıklıkla kullanılan popüler bir konteynerleştirme teknolojisidir. Kubernetes, bu konteynerli uygulamaların dağıtılması, yönetilmesi ve ölçeklendirilmesiyle ilgili manuel süreçlerin çoğunu otomatikleştirir. Kolay yönetim ve keşif için bir uygulamayı oluşturan konteynerleri mantıksal birimler halinde gruplandırır. Pod adı verilen bu birimler bir makine kümesine dağıtılır. Kubernetes daha sonra aşağıdaki gibi görevleri yerine getirir:

  • Hizmet keşfi ve yük dengeleme: Kubernetes, DNS adını veya kendi IP adresini kullanarak bir konteyneri açığa çıkarabilir. Bir konteynere giden trafik yüksekse, Kubernetes yük dengelemesi yapabilir ve ağ trafiğini dağıtabilir, böylece dağıtım kararlı olur.
  • Depolama düzenlemesi: Kubernetes, yerel depolama, genel bulut sağlayıcıları ve daha fazlası gibi seçtiğiniz depolama sistemini otomatik olarak bağlamanıza olanak tanır.
  • Otomatik kullanıma sunma ve geri alma: Kubernetes'i kullanarak konuşlandırılmış konteynerleriniz için istediğiniz durumu tanımlayabilirsiniz ve gerçek durumu kontrollü bir oranda istenen duruma değiştirir. Örneğin, Kubernetes dağıtımınız için yeni kapsayıcıların oluşturulmasını otomatikleştirebilir, mevcut kapsayıcıları kaldırabilir ve tüm kaynaklarını yeni kapsayıcıya uyarlayabilir.
  • Otomatik kutu paketleme: Kubernetes, her bir konteynerin ne kadar CPU ve RAM (bellek) ihtiyacı olduğunu belirlemenize olanak tanır. Kubernetes, kaynaklarınızı en iyi şekilde kullanmak için konteynerleri düğümlerinize sığdırabilir.
  • Kendi kendini iyileştirme: Kubernetes arızalanan kapsayıcıları yeniden başlatır, düğümler öldüğünde kapsayıcıları değiştirir ve yeniden programlar, kullanıcı tanımlı sağlık kontrolünüze yanıt vermeyen kapsayıcıları öldürür ve hizmet vermeye hazır olana kadar bunları istemcilere duyurmaz.
  • Sır ve yapılandırma yönetimi: Kubernetes parolalar, OAuth belirteçleri ve SSH anahtarları gibi hassas bilgileri depolamanıza ve yönetmenize olanak tanır. Kapsayıcı imajlarınızı yeniden oluşturmadan ve yığın yapılandırmanızdaki gizli bilgileri açığa çıkarmadan gizli bilgileri ve uygulama yapılandırmasını dağıtabilir ve güncelleyebilirsiniz.

Kubernetes Yapay Zeka ve Makine Öğrenimi ile Neden İlgili?

Kubernetes, makine öğrenimi iş yüklerinin kaynak yoğun ve ölçeklenebilir doğası nedeniyle yapay zeka ve makine öğrenimi alanında özellikle önemlidir. Büyük modellerin, özellikle de nesne algılama için Ultralytics YOLO modellerinin eğitilmesi genellikle birden fazla GPU veya TPU'da dağıtılmış bilgi işlem gerektirir. Kubernetes, bu dağıtılmış kaynakları verimli bir şekilde yönetmek için altyapı sağlar.

Ayrıca, yapay zeka/ML modellerinin geniş ölçekte çıkarım için dağıtılması sağlam ve ölçeklenebilir bir altyapı gerektirir. Kubernetes, kullanıcıların modellerini konteynerleştirmelerine ve ölçeklenebilir API'ler aracılığıyla sunmalarına olanak tanıyarak model dağıtımını basitleştirir. Bu, düşük çıkarım gecikmesi ve yüksek verim gerektiren gerçek dünya uygulamaları için çok önemlidir.

Yapay Zeka/ML'de Kubernetes Uygulamaları

  1. Ölçeklenebilir Model Sunumu: Akıllı şehir trafik yönetim sistemi gibi gerçek zamanlı bir nesne algılama uygulaması düşünün. Ultralytics YOLOv8. Şehir büyüdükçe, daha fazla kameradan gelen video akışlarını işleme talebi artar. Kubernetes, model hizmet altyapısını dinamik olarak ölçeklendirmenize olanak tanır. YOLOv8 modelinizi Kubernetes üzerinde kapsayıcılı bir hizmet olarak dağıtarak, gelen trafiğe göre model örneklerinin sayısını kolayca artırabilir veya azaltabilir ve ağır yük altında bile tutarlı performans sağlayabilirsiniz. Bu ölçeklenebilirlik, gerçek zamanlı yapay zeka uygulamalarında düşük gecikme süresini ve yüksek kullanılabilirliği korumak için çok önemlidir.

  2. Dağıtılmış Eğitim: Son teknoloji yapay zeka modellerinin eğitimi genellikle büyük veri kümeleri ve önemli hesaplama gücü gerektirir. Eğitim süresini azaltmak için bir makine kümesi genelinde dağıtılmış eğitim gerekli hale gelir. Kubernetes, iş yükünün birden fazla düğüm arasında dağıtımını yöneterek, ilerlemeyi izleyerek ve arızaları ele alarak dağıtılmış eğitim işlerini düzenleyebilir. Örneğin, ImageNet gibi bir veri kümesi kullanan büyük bir görüntü sınıflandırma modeli için dağıtılmış bir eğitim işini yönetmek üzere Kubernetes'i kullanabilirsiniz. Kubernetes, her bir eğitim düğümünün uygun şekilde yapılandırılmasını, verilerin verimli bir şekilde dağıtılmasını ve genel eğitim sürecinin düğüm arızalarına karşı dirençli olmasını sağlar.

Özetle Kubernetes, yapay zeka ve makine öğrenimi iş yüklerinin karmaşıklığını yönetmek için güçlü bir araçtır ve hem eğitim hem de dağıtım aşamaları için ölçeklenebilirlik, esneklik ve verimlilik sağlar. Konteynerli uygulamaları düzenleme yeteneği, onu modern, ölçeklenebilir YZ sistemleri oluşturmak ve çalıştırmak için ideal bir platform haline getirir.

Tümünü okuyun