MLOps : Projelerde Uçtan Uca Pipeline

Hıdır Can Saltık
LCW Digital
Published in
4 min readOct 6, 2022

Herkese Merhabalar,

Bu yazımızda LC Waikiki içerisinde bir projemizde nasıl bir pipeline uyguladığımızı, MLOps kavramlarını projemizde nasıl kullandığımızdan bahsedeceğiz.

Projeler günümüz dünyasında otonom ve canlı çalışır şekilde dizayn edilmeye başlanmıştır. Artık insan eliyle bir işlem yapılması yerine otonom şekilde çalışan sistemler ön plandadır. Biz de projelerimizde bu ilkeler ışığında çalışıyoruz. MLOps kavramları bu ilkelere sahiptir.

İlk olarak MLOps’tan biraz bahsedelim.

MLOps Nedir?

MLOps kelimesi makine öğrenimi ve operasyon olmak üzere iki farklı alanın birleşimidir.

MLOPS = ML(Machine Learning) + OPS(Operations)

MLOps ile makine öğrenimi projelerinde manuel şekilde yönetilen süreçlerin otomatikleştirilmesi, hızlı entegrasyon ve yönetim kolaylığı gibi iyileşmeler sağlanmıştır. MLOps ile projelerde daha sistematik bir yönetim biçimi sağlanmaktadır.

MLOps aracılığıyla projelerde ulaşılmak istenilen yaygın hedefler aşağıda özetlenmiştir:

  • Otomasyon (Automation)
  • Ölçeklenebilirlik (Scalability)
  • Yeniden üretilebilirlik (Reproducibility)
  • İzleme (Monitoring)
  • Yönetim (Management)

Pipeline Tasarımı

Öncelikle pipeline nedir bundan bahsedelim. Pipeline projenin uçtan uca çalışacak şekilde tasarlanmasına verilen addır. Pipeline ile tüm süreç bir boru hattı gibi dizayn edilir.

Temel bir pipeline tasarımında aşağıdaki gibi belirli süreçlerin işletilmesi sağlanmaktadır:

  • Verilerin alınması,
  • ETL süreçlerinin oluşturulması,
  • Model kurulması,
  • Modelin canlı sisteme entegrasyonu vs.

gibi süreçler bir pipeline ile birbirine bağlanmaktadır. Aşağıdaki görselde örnek bir pipeline tasarımını görmektesiniz.

Şimdi bizim projemizde kendi tasarladığımız pipeline’dan bahsedelim. Aşağıda projemizde kullandığımız pipeline tasarımını görmektesiniz.

Burada ilk olarak projeyi iki ayrı kısma böldük. İlk kısım modelin eğitildiği kısım, diğer kısım ise API kısmıdır. Modelin eğitildiği kısımda belli başlı süreçlerin işletilmesi gerekmektedir. Bu süreçler sırasıyla verinin alınması, ETL süreçlerinin işletilmesi, modelin kurulması ve kurulan bu modelin canlı bir ortama entegrasyonun sağlanmasıdır.

Ayrıca projenin gereksinimlerinden dolayı ETL süreçlerinde oluşan belirli data’ların da API’da kullanılmak üzere belirli ortamlara atılması gerekiyordu. Biz de pipeline tasarımını bu konular çerçevesinde dizayn ettik.

Burada modelin eğitileceği kısım için öncelik olarak bir Linux işletim sistemli makinede Airflow kurarak projenin başlangıcını sağladık. Airflow’u kullanma amacımız tasklar arasında orkestrasyonu sağlamak içindir. Daha sonrasında modeli yönetebileceğimiz bir tool’a ihtiyacımız bulunmaktaydı. Burada ise devreye MLFlow girmiştir. Devamında ise API tarafında gereken dataların depolanması için MongoDB ve Minio’dan yararlanılmıştır.

Pipeline’da kullanılan teknolojiler:

  • SQL Server
  • Airflow
  • MLFlow
  • Minio
  • MongoDB

Airflow

Airflow uçtan uca projelerin çalışmasını ve hiyerarşik olarak tasklar halinde yürütülmesini sağlayan bir orkestrasyon aracıdır.

Proje yürütülürken taskların hazırlanmasını ve loglanmasını sağlar. Bu durum oluşabilecek hatanın yönetimi konusunda kolaylık sağlamaktadır.

Airflow taskları ya da süreçleri “DAG” (Directed Acylic Graph) diye adlandırılan bir yapı ile sürdürmektedir. Airflow DAG yapısı ile her bir task özelinde ayrı ayrı loglama yaptığı için oluşabilecek hatanın yönetimi de oldukça kolaylaşmaktadır.

Airflow’un projemizdeki yeri:

  • Projenin task halinde hazırlanması,
  • Alınabilecek hatalara yönelik logların sağlanması,
  • Tasklar arasındaki orkestrasyonun sağlanması,
  • Bu işlemlerin schedule edilmesi

amaçları ile kullanılmıştır. Aşağıdaki görselde projemizin Airflow’da oluşmuş olan dizaynını görmektesiniz.

Airflow ile ilk olarak veriler alınmıştır. Daha sonra “preData” taskı ile ETL süreci işletilmiştir. Son olarak “mlflow_model” taskında ise model eğitilerek hem monitör hem de yönetim işlemleri için MLFlow ile entegrasyon sağlanmıştır. Daha önceden bahsettiğimiz ETL sürecinde oluşacak olan dataların da bu işlem sonucunda Minio ve MongoDB ortamlarına basılması sağlanmaktadır.

MLFlow

MLFlow, ML modellerini yönetmeye yönelik açık kaynak kodlu bir araçtır.

Kurulan tüm modellerin performanslarının izlenmesini ve yönetilmesini sağlar.

Modelin başarı metriklerini ve değerlerini kayıt eder.

Modeli canlı ortama taşımak için versiyonlayarak kaydetme imkanı sağlar.

MLFlow’un projemizdeki yeri:

  • Modelin başarı metriklerinin kaydedilmesi,
  • Modelin Minio ortamına atılmak üzere versiyonlanarak kaydedilmesi,
  • Geçmiş modeller ile karşılaştırılması

amaçları ile kullanılmaktadır. Aşağıdaki görselde oluşan modelin skorlarını da görebildiğimiz MLFlow ekranını görmektesiniz.

Bundan sonraki süreçte Minio ve MongoDB’ye basılan veriler yazılan API tarafında alınarak proje canlı ve otonom bir sistem haline getirilmiştir.

Bu yazımızda canlı bir projenin pipeline’ını nasıl kurduğumuzu ve hangi teknolojileri kullandığımızdan bahsettik.

Yeni yazılarımızda görüşmek üzere.

--

--