ML Yaşam Döngüsü Nasıl Yönetilir?
ML Yaşam Döngüsü Nedir?
Makine Öğrenimi Yaşam Döngüsü, büyük miktarda veriyi kullanan modelleri geliştirmek, eğitmek ve sunmak için veri bilimcisi ve veri mühendisleri tarafından yönetilen, üç aşamalı süreci (Pipeline development, Training phase, Inference phase) içeren döngüsel bir süreç olarak tanımlanır.
Makine öğrenimi yaşam döngüsünün ilk adımı, ham verileri temizlenmiş bir veri kümesine dönüştürmekten oluşur. Bu veri kümesi genellikle diğer takım üyeleriyle paylaşılabilir veya yeniden kullanılabilir. Daha sonra veriye uygun modeller geliştirilir ve uygun model canlıya alınır ve performansı izlenir. Bu sırada modelin önceki sürümlerine dönmek isteyebileceğimiz çeşitli durumlar yaşanabilir. Örneğin, model tahmin başarısı kaçınılmaz olarak düştüğü için birçok alternatif sürümü veya o modelin eski sürümlerinin aranması gerekebilir. Daha farklı durumda canlıya çıkarılan modelin performansının izlenmesi gerekebilir. İşte bütün bu işlemleri daha kolay izlemek ve yönetebilmek için çeşitli araçlar bulunmaktadır. Onlardan bazıları;
- TF Extended
- MLflow
- Michelangelo
- TFBoards
- Neptune
- Kubeflow
Bu yazımızda içlerinden MLflow’u inceleyeceğiz.
MLflow Nedir?
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 yönetim aracıdır.
MLflow Neler Yapar?
- Model geliştirme esnasında tüm çalışmalarınızın günlüklerini tutabilirsiniz.
- Hiper-parametrelerle kullandığınızın modellerin geçmiş bilgilerini saklar.
- Modelinizin başarı metriklerini ve değerlerini kayıt altına alabilirsiniz.
- Modeli canlı ortamda kullanmak için saklayabilirsiniz.
- Modeli geliştirdiğiniz ortam bilgilerini saklayıp canlı ortama aktarılmasını sağlayabilirsiniz.
MLflow Bileşenleri
MLflow 4 adet bileşenden oluşur.
1. MLflow Tracking
- Model geliştirirken kullandığınız bilgileri kayıt altına alır. Takiplerinizi kolaylaştırmak için çeşitli log türleri mevcuttur.
Parameters: Model hiperparametreleri
Metrics: Kullanılan metrikler
Source: Kaynak kodların lokasyonu
Version: Her eğitim denemesinin versiyonunu kayıt eder.
Artifacts: Çıktı dosyalarını yapay olarak kaydedebilirsiniz.
Tags and Notes: İlave bilgiler/notlar eklenebilir.
2. MLflow Projects
- ML kodunu paylaşmak veya canlı ortama (production) deploy etmek için yeniden kullanılabilir ve tekrarlanabilir bir formda paketlemek için kullanılır.
[!] Çalışma dizininize conda.yml adında bir konfigürasyon dosyası ekleyerek ihtiyacınız olan bağımlılıkları ekleyebilirsiniz. Bu dosya docker compoese mantığıyla benzer çalışmaktadır. Örnek;
name: startup
channels:
- conda-forge
dependencies:
- python=3.6
- pip
- pip:
- scikit-learn==0.23.2
- mlflow>=1.0
3. MLflow Models
- Çeşitli hizmet ortamlarında(Docker, Spark Hadoop vs.)makine öğrenimi modelleri dağıtımak için kullanılı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örür. Burada versiyonlar, model açıklamaları gibi bilgiler yer alır.
[!] Tracking için yapısal veritabanı Entity (Metadata) Store kullanmak gerekiyor. (SQLite, Postgre, MSSQL vb.) Kaynaklar bölümündeki ilk kaynaktan yardım alabilirsiniz.