MLflow: Makine öğrenmesi hayat döngüsü platformu

MLflow: Makine öğrenmesi hayat döngüsü platformu

Açık kaynaklı bir makine öğrenmesi hayat döngüsü platformu olarak tanımlayabileceğimiz MLflow'a giriş yapıyoruz.
Erkan Şirin08 Nis 2021

Makine öğrenmesi çalışmaları birçok farklı veri seti içerebilir ve bu çalışmaların uğraştırıcı veri hazırlık süreçleri vardır. Çalışmalarda farklı birçok algoritma denenebilir ve belirlenen bir başarı metriğini en iyi elde eden algoritma ile hiper parametreler aranır. Bir model oluşturduktan sonra iş bitmez. Modeli canlı ortamda sunmak (deploy), model performansını izlemek ve modeli sürekli olarak yeni veriler üzerinde yeniden eğitmek ve alternatif modellerle karşılaştırmak gerekir.

Özet olarak "makine öğrenmesi uygulamaları geliştirmek; accuracy bulmaktan çok daha fazlası ve sanıldığından daha karmaşık bir iştir.”

MLflow, makine öğrenmesi modelleri hayat döngüsünde karşılaşılan güçlükleri kolaylaştırmak amacıyla geliştirilmiş açık kaynak kodlu bir projedir. Peki MLflow ile neler yapabiliriz?

  • Model geliştirme esnasında tüm çalışmalarınızı kayıt altına alabilirsiniz.
  • Hangi algoritmayı hangi hiper parametrelerle kullandığınızın tarihçesini tutabilirsiniz.
  • Hangi modelde hangi başarı metriklerini kullandığınızın ve bunların değerlerinin neler olduğunun tarihçesini tutabilirsiniz.
  • Her geliştirdiğiniz modeli belki canlı ortamda kullanmak istersiniz diye saklayabilirsiniz.
  • Modeli geliştirdiğiniz ortam bilgilerini saklayıp canlı ortama aktarılmasını sağlayabilirsiniz.


MLflow'un temel bileşenleri

MLflow dört temel bileşenden oluşur. Bunların hepsini birden kullanmak zorunlu değildir ancak kullanmak isterseniz birbirleriyle uyumlu çalışırlar.

  1. Tracking: Tracking ile model geliştirme deneyimlerinizi kayıt altına alırsınız. Size bir API ve web arayüzü sunar.
    • Parameters: Model hiperparametreleri
    • Metrics: Kullanılan metrikler
    • Source: Kaynak kodlar
    • Version: Her eğitim denemesi versiyonları
    • Artifacts: Dosya, veri ve modeller (reproducibility)
    • Tags and Notes: İlave bilgiler/notlar. Örneğin çalışmanın hangi iş problemi ile ilgili olduğu.


      Geliştiriciler ve MLflow Tracking Server

      Görseldeki tracking server geliştiricilerin çalışmalarını loglar. Bunun için sadece model eğitim kodlarına birkaç ekleme yapmak yeterlidir. MLflow tracking serverı ilişkisel veri tabanı kullanan bir web uygulaması olarak düşünebiliriz. Model, kod, ortam bilgileri ve eğitim verileri ise daha büyük depolama sistemleri olan HDFS, S3 gibi artifact storelara kaydedilir. Stateless olduğu için ölçeklenebilirdir ve cloud native trendine uygundur. Artifacts model ve dosyalardır. Jenkins gibi devops/otomasyon araçlarıyla uyumlu çalışır. Aşağıda model geliştirme aşamasında her denemeyle ilgili tutulan kayıtların tracking server arayüzünden görünüşü yer almaktadır:

       
  2. Projects: ML kodunu paylaşmak veya canlı ortama (production) aktarmak için yeniden kullanılabilir ve tekrarlanabilir bir formda paketlemek için vardır. Peki ama neden? Birçok farklı ML geliştirme aracı ve birçok farklı ML geliştirme ortamı bulunuyor. Bir bilgisayar içinde çalışan kod bir diğerinde çalışmayabilir. Bu yüzden MLflow tüm kodları ortam, versiyonlar, dependencies ve konfigürasyonlarıyla beraber saklar. Aslında her proje, kodunuzu içeren bir dosya dizini veya Git deposudur.


    MLflow Tracking Server Experiments
     
  3. Models: Modelleri yönetmek ve sunmak (deploy) ve bunu farklı ML kütüphaneleri ile farklı platform ve arayüzler üzerinden yapmak için vardır.
     
  4. Model Registry: MLflow modellerini tüm yaşam döngüsü boyunca yönetmek için merkezi bir model deposu işlevi görmek için vardır. Burada versiyonlar, model açıklamaları gibi bilgiler yer alır.


MLflow Benzerleri

  • TF Extended
  • Michelangelo
  • TFBoards
  • Neptune
  • Kuberflow


Sonuç

MLflow'un makine öğrenmesi yaşam döngüsünde karşılaşılan tüm zorlukları aşmaya çalışması güzel. PMML tarzı model değişim araçları bu zorluklardan sadece bir tanesini çözmeye çalışıyor. Konteyner kullanabilmesi iyi bir özellik. Gelecekte bu ve buna benzer proje ve ürünler makine öğrenmesi hayat döngüsündeki boşlukları doldurmaya çalışacaktır. Spark’ı geliştirenler MLflow’u da geliştiriyor. Spark+AI Summit 2018’den beri epey yol kat etti. Geliştirme süreci hala hızla devam ediyor ancak eksikleri çok. Örneğin çalışan bir sunucuyu durdurmak için MLflow server stop komutu yok. Artifact store olarak Amazon S3 örnekleri var ancak HDFS örneği az. Kimlik doğrulama yok, elini kolunu sallayan çalışmalara erişebiliyor. Nginx ile bir kimlik doğrulama katmanı eklemek mümkün.
 

MLflow hakkında daha geniş ve kapsamlı bilgiye erişmek, kariyerinizde fark yaratacak adımlar atmak isterseniz Miuul'un sunduğu Konteyner Ortamları ve Makine Öğrenmesi Modellerinin Dağıtımı eğitimine göz atabilirsiniz.


Kaynaklar

Etiketler
MLflow
İlginizi Çekebilir
MLOps Nedir?
Seda Kayademir
Miuul topluluğunun bir parçası ol!

Abone ol butonuna tıklayarak Miuul'dan pazarlama ve haber içerikleri almayı onaylıyorum.