Kurs
MLOps, makine öğreniminin önemli bir parçasıdır; çünkü makine öğrenimi modellerinin eğitimini ve dağıtımını otomatikleştirmeye yardımcı olur. Bu otomasyon, makine öğrenimi modellerinin geliştirilmesi ve dağıtılması sürecini hızlandırabilir ve modellerin doğru şekilde dağıtılmasını sağlar. MLOps ayrıca makine öğrenimi modellerinin performansını izlemeye ve üretimde ele alınması gereken sorunları proaktif olarak tespit etmeye yardımcı olabilir.
2022’de MLOps ortamı, kuruluşların makine öğrenimi modellerini oluşturma, eğitme ve dağıtma süreçlerini otomatikleştirmesine yardımcı olacak çeşitli araç ve hizmetlerden oluşmaktadır. Bu araç ve hizmetler, MLOps sürecini daha verimli ve yönetimi daha kolay hale getirmek üzere birlikte çalışacak şekilde tasarlanmıştır. MLflow bu blog yazısında inceleyeceğimiz önemli araçlardan biridir.
MLflow, uçtan uca makine öğrenimi yaşam döngüsü için açık kaynaklı bir platformdur. Veri bilimcilerin deneylerini takip etmelerine, çalışmaları yeniden üretmelerine ve modellerini uç nokta olarak sunmalarına olanak tanır. Bu yazıda MLflow’un ne olduğunu ve makine öğrenimi deneylerinizi izlemek ve dağıtmak için bu harika açık kaynaklı platformdan nasıl yararlanabileceğinizi derinlemesine inceleyeceğiz.
MLOps’a daha yakından bakmak isterseniz Makine Öğrenimi, Boru Hatları, Dağıtım ve MLOps Eğitimimizi inceleyin.
MLflow nedir
MLFlow, uçtan uca makine öğrenimi yaşam döngüsünü yönetmek için açık kaynaklı bir platformdur. Denemeleri izlemek, kod ve modelleri paylaşmak ve modelleri üretime dağıtmak için merkezi bir yer sağlar. MLflow ayrıca popüler ML araç takımları için birkaç yerleşik algoritma ve paket içerir. Dört temel işleve sahiptir:
- MLflow Tracking. Makine öğrenimi deneylerini takip ederek sonuçları ve parametreleri kaydetmenizi, analiz etmenizi ve karşılaştırmanızı sağlar.
- MLflow Projects. Makine öğrenimi kodunu, diğer veri bilimcilerle paylaşılabilecek veya üretim ortamına taşınabilecek şekilde yeniden üretilebilir bir biçimde paketler.
- MLflow Models. Çeşitli makine öğrenimi kütüphanelerinden gelen modelleri Amazon Sagemaker gibi farklı model sunma ve çıkarım platformlarına yönetir ve dağıtır.
- MLflow Model Registry. Model versiyonlama, aşama geçişleri ve açıklamalar dahil olmak üzere bir MLflow modelinin tüm yaşam döngüsünü iş birliğiyle yönetmek için merkezi bir model deposu sağlar.

Görsel Kaynağı: https://www.databricks.com/wp-content/uploads/2021/02/mlflow-components2.png
MLflow herhangi bir kütüphaneye bağlı değildir. Tüm işlevlere bir REST API ve komut satırı arayüzü üzerinden erişilebildiği için, onu herhangi bir makine öğrenimi kütüphanesi ve programlama diliyle kullanabilirsiniz. Kolaylık olması için projeye bir Python API’si, bir R API’si ve bir Java API’si dâhil edilmiştir.
MLflow’daki temel kavramlar
MLflow Tracking
Makine öğrenimi kodunu çalıştırdığınızda, MLflow Tracking bileşeni parametreleri, kod sürümlerini, metrikleri ve çıktı dosyalarını günlüğe kaydetmek için bir API ve grafiksel bir kullanıcı arayüzü (UI) sunar. Ardından, bu günlük sonuçlarını görselleştirebilirsiniz. MLflow Tracking sayesinde Python, REST, R API ve Java API kullanarak deneyleri kaydedip sorgulayabilirsiniz.
MLflow Tracking, çalıştırmalar kavramı etrafında organize edilmiştir. Her çalıştırma; başlangıç ve bitiş zamanı, kaynak dosyası, parametreler, artefaktlar, metrikler, etiketler vb. gibi temel bilgileri ve metaverileri kaydeder.
Kodunuz nerede çalışırsa çalışsın, MLflow’un Python, R veya Java API’lerini kullanarak çalıştırmaları kaydedebilirsiniz. Örneğin, bunları bağımsız bir programda, uzak bir bulut makinesinde veya etkileşimli bir not defterinde kaydedebilirsiniz.
Benzer şekilde, bireysel çalıştırmaları belirli bir amaç için bir araya getirilmiş çalıştırma koleksiyonları olan deneyler içinde organize edebilirsiniz. Bir deneyi oluşturmayı başlatmak için komut satırı arayüzü (CLI), mlflow.create experiment() yöntemi veya REST API gibi birkaç seçenek vardır. Kullanıcılar MLflow UI’ı kullanarak da deney oluşturabilir.
Gerekirse MLflow çalıştırmalarının kayıtlarını yerel dosyalara kaydedebilir, SQLAlchemy ile uyumlu bir veritabanına yükleyebilir veya uzaktaki bir izleme sunucusuna gönderebilirsiniz. MLflow Python API’si, varsayılan davranış olarak, çalıştırmayı programınızın çalıştığı konumdaki mlruns dizinine yerel dosyalara günlüğe kaydeder. Daha sonra mlflow ui uygulamasını başlatarak günlüğe kaydedilen çalıştırmaları görüntüleyebilirsiniz.

Görsel Kaynağı: https://mlflow.org/docs/latest/_images/scenario_1.png
MLflow Projects
MLflow Projects, makine öğrenimi kodunuzu yeniden kullanılabilir ve yeniden üretilebilir bir şekilde yapılandırmanın bir yoludur. Projeleri herhangi bir makine öğrenimi kütüphanesi ve geliştirme ortamıyla kullanabilirsiniz. Her proje; proje ortamını ve parametreleri tanımlayan bir MLproject dosyasını içeren bir dizinden ve makine öğrenimi kodunu barındıran bir dizi dosyadan oluşur.
MLflow şu anda aşağıdaki proje ortamı türlerini destekler:
- Conda ortamı,
- Virtualenv ortamı,
- Docker konteyneri,
- sistem ortamı.
Basitçe bir YAML dosyası olan bir MLProject dosyası ekleyerek MLflow projesi üzerinde daha ayrıntılı kontrol elde edebilirsiniz. Aşağıda örnek bir MLProject dosyası yer almaktadır:

Kaynak: https://mlflow.org/docs/latest/projects.html#overview
Proje bir MLproject dosyası içermediğinde, MLflow bazı varsayılan kuralları kabul eder, örneğin:
- Proje adı, dizinin adıdır.
- Conda ortamı kullanılır ve aynı dizinde bulunması gereken conda.yaml dosyasında belirtilir.
- Herhangi bir .py veya .sh dosyası giriş noktası olabilir.
- Varsayılan olarak, giriş noktalarının parametresi yoktur.

MLflow Models
Bir MLflow Model, makine öğrenimi modellerini ardışık düzenin sonraki aşamalarında çeşitli araçlarda kullanılabilecek şekilde paketlemek için standartlaştırılmış bir formattır. Buna bir REST API üzerinden gerçek zamanlı sunum veya toplu çıkarım süreci dâhil olabilir. MLflow Model, MLflow’un temel bileşenlerinden biridir. Modeli, her biri farklı bir alt araç seti tarafından anlaşılabilen birden çok "tatta" kaydetmeyi mümkün kılan bir protokol tanımlar.
Her MLflow Modeli aslında, dizinin tabanında bulunan ve modelin görüntülenebileceği birkaç tadı tanımlayabilen bir MLmodel dosyası ile çeşitli dosyaları saklayan bir dizindir. Bu dosyaların tümü birlikte MLflow Model olarak anılır.
MLflow Models’in gücünün arkasındaki temel fikir, dağıtım araçlarının modeli anlaması için bir standart işlevi gören tatların kullanımıdır. Bu sayede geliştiriciler, her aracı her kütüphaneyle tek tek entegre etmek zorunda kalmadan herhangi bir ML kütüphanesinden gelen modellerle etkileşime girebilen araçlar oluşturabilir. MLflow’un yerleşik dağıtım araçlarının tümü tarafından desteklenen "standart" tatlardan biri, modelin bir Python fonksiyonu olarak nasıl çalıştırılacağını tanımlayan "Python Function" tatıdır.
Scikit-learn tadını kullanan bir MLflow Models dizini örneği:

Görsel Kaynağı: https://mlflow.org/docs/latest/models.html
MLflow, aşağıdaki kütüphaneleri (model tatları olarak) hazır destekler:
- Scikit-learn
- TensorFlow
- PyTorch
- Keras
- Spark MLlib
- XGBoost
- LightGBM
- CatBoost
- Spacy
- Fastai
- Statsmodels
- Prophet
- Python function (genel)
- R function (genel)
- Tam listeyi burada görün
MLflow Model Registry
MLflow Model Registry, ML modellerini saklamak ve sürümlendirmek için merkezi bir depodur. Modellerin soyağacını izlemeyi, modelleri karşılaştırmayı ve modelleri dağıtmayı sağlar.
MLflow Model Registry bileşeni, bir MLflow Modelinin tüm yaşam döngüsünü iş birliğiyle yönetmek için bir dizi API ve kullanıcı arayüzü sunar.
Model Registry’yi kullanmak istiyorsanız, kullanıcı arayüzü (UI) veya uygulama programlama arayüzü (API) üzerinden model kaydına erişmek için veritabanı destekli bir arka uç deposu kullanmanız gerekir.
MLflow UI kullanarak model kaydetme:

Görsel Kaynağı: https://mlflow.org/docs/latest/model-registry.html#concepts
MLflow Pipelines (deneysel)
MLflow Pipelines yeni bir yetenektir ve hâlen deneysel aşamadadır.
MLOps iş akışlarını yapılandırmak için benimsenmiş bir çerçeve olan MLflow Pipelines, makine öğrenimi uygulamalarının geliştirilmesini ve üretime alınmasını kolaylaştırır ve standartlaştırır. MLflow Pipelines sayesinde veri bilimciler, üretime hazır makine öğrenimi çıktıları oluştururken sektör standartlarına uymayı kolaylaştırarak yüksek kaliteli modeller oluşturmaya daha fazla zaman ayırabilir.
MLflow Pipelines ayrıca makine öğrenimi mühendisleri ve DevOps ekiplerinin bu modelleri uygulamalara gömerek sorunsuz şekilde üretime almalarını mümkün kılar.
MLflow Pipelines, regresyon ve sınıflandırma gibi tipik makine öğrenimi sorun türleri ve toplu skorlamaya benzer MLOps işlemleri için üretim kalitesinde boru hattı şablonları sunar. Boru hatları, YAML tabanlı yapılandırma dosyaları ve Python kodundan oluşan git depoları olarak yapılandırılır. Bu, geliştiricilere ML uygulamalarının inşasında deklaratif bir yaklaşım sunarak şablon kod miktarını azaltır.
MLflow Pipelines ayrıca boru hattı adımları için önbellek farkındalığı olan bir yürütücü uygular. Bu, yalnızca ilgili kod veya yapılandırmada bir değişiklik olduğunda adımların yürütülmesini sağlar. Böylece veri bilimciler, makine öğrenimi mühendisleri ve DevOps ekipleri kendi uzmanlık alanlarında çok hızlı yineleme yapabilir. Ek olarak, boru hatlarını yürütmek ve çıktılarını incelemek, MLflow’un sağladığı API’ler ve komut satırı arayüzü (CLI) aracılığıyla yapılabilir.
|
Modern araçlarla üretimde makine öğrenimi modellerini dağıtmak kolay görünse de, modelin üretimde geliştirmeden daha kötü performans göstermesi sık rastlanan bir hayal kırıklığıdır. Zamana dayanıklı makine öğrenimi iş akışlarını Python’da nasıl tasarlayacağınızı öğrenmek isterseniz Designing Machine Learning Workflows in Python kursumuza göz atın. |
MLflow vs. Kubeflow
Artık MLflow’un ne olduğunu anladığınıza göre, alandaki çok yaygın bir soruyu ele alalım; MLflow ile Kubeflow arasındaki fark nedir?
Önce Kubeflow nedir?
Kubeflow, seçilmiş bir araç ve çerçeve setini içeren açık kaynaklı bir projedir. Kubeflow’un birincil hedefi, taşınabilir ve ölçeklenebilir makine öğrenimi iş akışlarını geliştirmeyi, dağıtmayı ve yönetmeyi kolaylaştırmaktır.
Kubeflow, konteynerleri çalıştırmak ve düzenlemek için açık kaynaklı bir platform olan Kubernetes üzerine inşa edilmiştir. Kubernetes, farklı ortamlarda tutarlı şekilde çalışacak biçimde tasarlanmıştır ve bu, Kubeflow’un çalışma biçiminin anahtarıdır.
Kubeflow hakkında daha fazla bilgi edinmek için Kubeflow üzerine detaylı eğitimimizi okuyun.
MLflow ve Kubeflow’u karşılaştırırken, bu iki proje arasındaki tek benzerlik her ikisinin de açık kaynaklı olmasıdır; ancak tamamen farklı ihtiyaçlara hizmet ederler. Kubeflow, Kubernetes üzerinde makine öğrenimi uygulamaları geliştirmek, dağıtmak ve yönetmek için bir açık kaynak konteyner orkestrasyon sistemidir. Öte yandan MLflow, orkestrasyon ortamından bağımsız olarak deney takibi ve model sürümlendirme/dağıtımı için bir Python kütüphanesidir.
MLflow Eğitimi
MLflow’u kullanmak son derece kolaydır. Mevcut kodunuza MLflow günlüklemesini entegre etmek yalnızca birkaç satır kod gerektirir. Ancak önce, pip kullanarak MLflow’u kurmanız gerekir.
# install mlflow
pip install mlflow
Basit bir Python betiği oluşturarak bir lojistik regresyon modelini eğitelim ve metrik ile modeli MLflow kullanarak günlüğe kaydedelim. Bu, MLflow’un resmi bir örneğidir, buradan alınmıştır.
import numpy as np
from sklearn.linear_model import LogisticRegression
import mlflow
import mlflow.sklearn
if __name__ == "__main__":
X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1)
y = np.array([0, 0, 1, 1, 1, 0])
lr = LogisticRegression()
lr.fit(X, y)
score = lr.score(X, y)
print("Score: %s" % score)
mlflow.log_metric("score", score)
mlflow.sklearn.log_model(lr, "model")
print("Model saved in run %s" % mlflow.active_run().info.run_uuid)
ÇIKTI:
>>> Score: 0.6666666666666666
>>> Model saved in run 9def2bd1c55b4f0985aa5c050b8f71cd
Aynı dizinde, Python dosyanızın bulunduğu yerde komut satırına `mlflow ui` yazarak MLflow UI’ını başlatabilirsiniz.
mlflow ui
Sonra https://localhost:5000 adresine gidin; şu sayfayı göreceksiniz:

Yalnızca bir kayıt olduğunu görebilirsiniz; yani yukarıdaki betikte eğitip günlüğe kaydettiğimiz model. Ada tıklayın ve ayrıntılı bir sayfa göreceksiniz:

|
KENDİNİZİ HEMEN GELİŞTİRİN! BUGÜN KAYDOLUN: Machine Learning Scientist with Python Makine öğrenimi bilimcisi olarak iş bulmak için gerekli temel becerilere hâkim olun. Python programlama beceri setinizi; gözetimli, gözetimsiz ve derin öğrenme yapmanızı sağlayacak araçlarla güçlendireceksiniz. Şunları öğreneceksiniz:
|
Sonuç
MLflow, açık kaynaklı bir platform ve uçtan uca makine öğrenimi yaşam döngüsünü yönetmek için harika bir araçtır. Popüler Apache Spark platformunun arkasındaki şirket olan Databricks tarafından oluşturulmuştur ve herhangi bir makine öğrenimi kütüphanesi, algoritması veya diliyle çalışacak şekilde tasarlanmıştır.
MLflow, makine öğrenimi geliştiricileri ve veri bilimcileri için bir dizi fayda sunar. Deneyleri takip etmek ve makine öğrenimi projelerini yönetmek için merkezi bir yer sağlar. Bu, farklı ekip üyelerinin birbirlerinin yaptıklarını görmesine ve sonuçları karşılaştırmasına imkân tanıdığı için iş birliği açısından değerli bir araç olabilir.
MLflow, veri ön işleme aşamasından model eğitimine ve dağıtıma kadar makine öğrenimi iş akışını otomatikleştirebilir. Bu, zaman ve emek tasarrufu sağlayabilir ve sonuçları yeniden üretmeyi kolaylaştırır.
Genel olarak MLflow, makine öğrenimi projelerini yönetmek için değerli bir araçtır. Deneyleri takip etmenize, iş akışını otomatikleştirmenize ve modelleri optimize etmenize yardımcı olabilir. Makine öğrenimi projeleri üzerinde çalışıyorsanız MLflow’u kesinlikle incelemelisiniz.
|
Makine Öğrenimi’nin temellerini ve iş dünyasındaki uygulamasını öğrenerek kendinizi geliştirmek istiyorsanız, DataCamp’teki Machine Learning for Business kursumuza göz atın. |
