MLflow: Makine Öğrenmesi Hayat Döngüsü Platformu

Merhabalar bu yazımızda MLflow’u tanımaya çalışacağız. MLflow nedir sorusuna “MLflow, açık kaynaklı bir makine öğrenmesi hayat döngüsü platformudur.” şeklinde cevap verebiliriz.

Makine öğrenmesi çalışmalarında;

  • Bir çok farklı veri seti kullanılır.
  • Uğraştırıcı veri hazırlık süreci vardır.
  • Farklı bir çok algoritma denenir.
  • Belirlenen bir başarı metriğini en iyi elde eden algoritma ve hiper parametreler aranır.
  • Bir model oluşturduktan sonra iş bitmez.
  • Modeli canlı ortamda sunmak (deploy),
  • Model performansını izlemek,
  • 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.”

İşte 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.

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 ve bunların değerleri neydi bunların 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 Temel Bileşenleri

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

  • Tracking: Tracking ile model geliştirme deneyimlerinizi kayıt altına alırsınız. Size bir API ve web ara yüzü sunar.
    • Parameters: Model hiperparametreleri
    • Metrics: Kullanılan metrikler
    • Source: Kaynak kodlar
    • Version: Her eğitim denemesini versiyonlar
    • Artifacts: Dosya, veri ve modeller (reproducibility)
    • Tags and Notes: İlave bilgiler/notlar eklenebilir. Örneğin bu çalışmanın hangi iş problemi ve insanı ile ilgili olduğu.
MLflow tracking server
Şekil-1: Geliştiricler ve MLflow Tracking Server
    • Şekil-1’deki 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ı (Entity (Metadata) Store) 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 store‘lara kaydedilir.
    • Stateless olduğu için ölçeklenebilir. 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.
Şekil-2: MLflow Tracking Server Experiments
Şekil-2: MLflow Tracking Server Experiments
  • Projects: ML kodunu paylaşmak veya canlı ortama (production) aktarmak için yeniden kullanılabilir ve tekrarlanabilir bir formda paketlemek için vardır.
    • Niçin?
    • Bir çok farklı ML geliştirme aracı var.
    • Bir çok farklı ML geliştirme ortamı var.
    • Bir bilgisayar içinde çalışan kod yanındakinde çalışmaz.
    • 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.
Şekil-3 Example MLflow Project
      • Örnek bir conda.yml dosyası
    channels:
    - defaults
    - conda-forge
    dependencies:
    - python=3.6.8
    - pyspark=3.0.0
    - pip
    - pip:
      - mlflow
    name: mlflow-env
  • Models: Modelleri yönetmek ve sunmak (deploy) ve bunu farklı ML kütüphaneleri ile farklı platform ve ara yüzler üzerinden yapmak için vardır.
    • ML Projects gibi bir dizindir. Bu dizinde;
    • Flavour: language and tool-specific representation of ml flow model
    • ML Projects gibi bir dizindir. Bu dizinde;
    • Packaging format for ML Models
    • Reproducibility için dependencies
    • Model creation utilities
    • Deployment APIs
artifact_path: model
flavors:
  python_function:
    data: sparkml
    env: conda.yaml
    loader_module: mlflow.spark
    python_version: 3.6.8
  spark:
    model_data: sparkml
    pyspark_version: 3.0.0
run_id: 8d4c661d6f9647d7abe5b307d431b7da
signature:
  inputs: '[{"name": "ID", "type": "integer"}, {"name": "TV", "type": "double"}, {"name":
    "Radio", "type": "double"}, {"name": "Newspaper", "type": "double"}]'
  outputs: '[{"name": "ID", "type": "integer"}, {"name": "TV", "type": "double"},
    {"name": "Radio", "type": "double"}, {"name": "Newspaper", "type": "double"},
    {"name": "Sales", "type": "double"}, {"name": "prediction", "type": "double"}]'
utc_time_created: '2021-03-14 18:24:43.071997'
  • 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.
    • Tracking için SQL veri tabanı Entity (Metadata) Store kullanmak gerekiyor. Varsayılan dosya sistemi ile çalışmıyor.
    • Aşağıda Şekil-4’te yapılan denemelerden birisinin model olarak kaydedildiği görülmektedir. Aradan zaman geçtikten sonra modelin girdi olarak ne aldığı ve çıktı olarak ne ürettiğini görmek güzel olsa gerek.
Şekil-4: Model Registry

MLflow Benzerleri

  • TF Extended
  • Michelangelo
  • TFBoards
  • Neptune
  • Kubeflow

Sonuç

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şir. Nginx ile bir kimlik doğrulama katmanı eklenebilir [9].

Başka bir yazıda görüşmek dileğiyle hoşçakalın.

Kaynaklar

  1. https://mlflow.org/
  2. https://www.youtube.com/watch?v=859OxXrt_TI&t=504s
  3. https://github.com/dbczumar
  4. http://neptune.ai/
  5. https://www.wandb.com/
  6. https://www.comet.ml/site/
  7. https://valohai.com/
  8. https://polyaxon.com/
  9. https://karimlahrichi.com/2020/03/13/add-authentication-to-mlflow/
  10. https://towardsdatascience.com/deploy-mlflow-with-docker-compose-8059f16b6039

 

Kapak görseli: Stackie Jia on Unsplash

Yazar Hakkında
Toplam 147 yazı
Erkan ŞİRİN
Erkan ŞİRİN
2014'ten beri hem akademik alanda hem de sektörde pratik anlamda büyük veri ve veri bilimi ile ilgili çalışmalar yürütmektedir. Büyük veri ve veri bilimi ile ilgili birçok kurum ve şirkete danışmanlık ve eğitimler vermekte, projeler icra etmektedir. Çalışma alanları: büyük veri platformlarının kurulum ve yönetimi, büyük veri üzerinde makine öğrenmesi, olağan dışılık ve sahtecilik tespiti, akan veri işleme ve veri hazırlama sürecidir.
Yorumlar (Yorum yapılmamış)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara