Makine öğrenmesi sistemlerinin yönetimi ve dağıtımı için bir platform: Kubernetes
A platform for management and distribution of machine learning systems: Kubernetes
Yazar: HASAN ÜNVER
Danışman: DOÇ. DR. SADİYE NERGİS TURAL POLAT
Yıldız Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Elektronik ve Haberleşme Mühendisliği Ana Bilim Dalı / Haberleşme Bilim Dalı
Derece: Yüksek Lisans, 2023
Konu: Elektrik ve Elektronik Mühendisliği = Electrical and Electronics Engineering

Özet:
Makine öğrenimi uygulamaları günümüzde her alanda ve sektörde yaygın olarak kullanılmaktadır. Bu uygulamaların yaygınlaşmasıyla birlikte, daha karmaşık ve büyük yapılara sahip uygulamalar ortaya çıkmıştır. Modellerin oluşturulması ve eğitilmesi genellikle yerel geliştirme ortamlarında veya tekil sunucu sistemlerinde gerçekleştirilir. Bu ortamlar sadece ilgili uygulamaya ait olmasıyla birlikte dışarıdan kullanıcıların erişimine açık olmayan, kontrollü, stabil ve yönetimi kolay ortamlar olarak değerlendirilebilir. Geliştirilen uygulamanın kullanıcıların erişimine sunulması için üretim ortamı(production) olarak nitelendirilen, birden fazla uygulamanın aynı anda çalıştığı daha karmaşık sunucu sistemleri ve yapılar kullanılmaktadır. Üretim ortamları yüksek erişilebilirlik ve yüksek ölçeklenebilirlik gibi günümüz bilgi teknolojileri dünyasının standart performans gerekliliklerini sağlamalıdır.

Makine öğrenmesi modellerini üretim ortamlarında dağıtmak ve yönetmek kendi içerisinde karmaşık ve zaman alan bir süreç olarak karşımıza çıkmaktadır. Konteyner tabanlı uygulamaları yönetmek için kullanılan ve açık kaynak bir proje olan Kubernetes, makine öğrenmesi modellerinin dağıtım ve yönetim sürecini kolaylaştırır. Bu çalışmada makine öğrenmesi modellerinin Kubernetes ile nasıl dağıtılıp yönetilebileceği ve bu sürecin kuruluşlar ve geliştiriciler için nasıl basitleştirilebileceği araştırılmış. Modellerinin Kubernetes ile dağıtılması ve yönetilmesinin geliştiricilere ve şirketlere sağladığı yararlar incelenmiştir. Ayrıca, Kubernetes'in makine öğrenmesi modellerinin dağıtımı sırasında oluşan karmaşıklığı ve ek yükü azaltarak, kuruluşların ve geliştiricilerin makine öğremesinin gücünden daha verimli bir şekilde yararlanmasına yardımcı olabileceği öngörülmüştür.

Bu çalışmada teorik araştırmaların yanında, pratik uygulama olarak önceden eğitilmiş bir ResNet-50 makine öğrenmesi modeli kullanılmış, bu model bir web uygulaması olarak Kubernetes üzerinde dağıtılmıştır. Dağıtım için gerekli olan API dönüşüm ve Konteyner imajı oluşturma adımları gerçekleştirilmiş ve açıklanmıştır. Kubernetes platformu olarak, Kubernetes'in kişisel bilgisayarlar üzerinde çalıştırılabilen kompakt bir versiyonu olan Minikube kullanılmıştır. Dağıtım için gerekli olan Kubernetes objeleri oluşturulmuş, tanım dosyaları ve entegrasyon adımları açıklanmıştır.

Abstract:
Machine learning applications are currently being widely used in various sectors. As these applications have become more widespread, more complex and larger-scale applications have emerged. The creation and training of models is generally carried out in local development environments or single server systems, which can be considered controlled, stable, and easily managed environments that are not accessible to external users, but only to the relevant applications. More complex server systems and structures, referred to as production environments, where multiple applications can run simultaneously, are used to make the developed application available to users. Production environments must meet standard performance requirements such as high availability and high scalability in the current information technology world.

Deploying and managing machine learning models in production environments can be a complex and time-consuming process. Kubernetes, an open-source project used for managing container-based applications, simplifies the process of deploying and managing machine learning models. This study investigates how machine learning models can be deployed and managed using Kubernetes, and how this process can be made simpler for organizations and developers. The benefits that deploying and managing models with Kubernetes provides to developers and companies are also explored. In addition, the potential of Kubernetes to reduce complexity and additional workload during the deployment of machine learning models, enabling organizations and developers to more effectively leverage the power of machine learning, is examined. 

In this study, besides theoretical research, a pre-trained ResNet-50 machine learning model was used as a practical application, and this model was deployed on Kubernetes as a web application. The API transformation and container image creation steps required for deployment have been performed and explained. Minikube, a compact version of Kubernetes that can be run on personal computers, is used as the Kubernetes platform. The Kubernetes objects required for deployment were created, the required definition files, and the integration steps were explained.