MLFlow ile kurduğumuz modelleri nasıl yönetebiliriz?

Hıdır Can Saltık
MLOpsTurkey
Published in
4 min readMar 7, 2022

Günümüzde ve gelecekte makine öğrenimi modelleri geliştirmede, bu modelleri dağıtmada ve izleme süreçlerinde hayatımızı kolaylaştırmak için araçlara ihtiyaç duymaktayız.

MLFlow aslında tam bu kısımda hayatımıza dahil oluyor. MLFlow, makine öğrenmesi yaşam döngüsünü yönetebildiğimiz açık kaynaklı bir platformdur. Kurulan tüm modellerin performanslarının izlenmesini ve yönetilmesini sağlayarak veri bilimi sürecini doğrudan hızlandırmaktadır.

MLFlow 4 temel bileşen içermektedir:

1- Tracking: Geliştirilen modellerde kullanılan parametreleri, metrikleri, kod versiyonlarını ve çıktıları günlüğe kaydetmek için kullanılan bir tür API ve kullanıcı arabirimidir. Tracking ile aşağıdaki bilgiler kaydedilebilmektedir.

Code Version: Bir MLflow projesi çalıştırıldığında kullanılan git commit hash’i yani çalıştırılan her bir modelin veya kod’un versiyonu

Start&End Time: Kodun çalışmasının başlangıç ve bitiş zamanı

Source: Projenin adı ve giriş noktası

Parameters: Kurulan modellerin parametreleri

Metrics: Belirlenen başarı kriterlerine göre modelin başarısını gösteren ölçülerdir(accuracy,f1 score vs.). Metrik çalıştırma boyunca güncellenebilirdir ve MlFlow’a kaydedildiği için metrik ile ilgili geçmiş görselleştirmesi yapılabilir.

Artifacts: Çıktılar görüntü (PNG,JPEG vs.) veya model (scikit-learn modeli vs.) ise yapay olarak kaydedilmesi sağlanır.

Aşağıda Tracking bileşeni ile ilgili örnek bir görüntü bulunmaktadır.

2- Projects: Kodun yeniden kullanılabilir ve üretilebilir bir biçimde, esasında sözleşmelere dayalı olarak paketlemek için kullanılan bir formattır. Projects bileşeni projeleri yürütmek için bir API ve komut satırı araçlarını içerir ve bu da projeleri iş akışları olarak zincirlemeyi mümkün kılmaktadır.

Aslında MLFlow Projects kodun başka bir geliştirici veya otomatik araçların çalıştırmasına izin verildiği düzenlemeye ve açıklamaya yönelik bir kuraldır. Esasında her bir proje kodun bulunduğu bir dosya dizini veya Git deposudur.

Name: Projenin ismi

Entry Points: Proje içinde çalıştırılacak komutlar ve parametreler ile ilgili bilgileri içermektedir. Birçok proje diğer kullanıcılar tarafından aranması istenilen en az bir entry point içermektedir.

Environment: Projedeki entry points ‘i yürütmek için kullanılan bir yazılım ortamıdır. Kodun gerektirdiği tüm kitaplık bağımlılıklarını içermektedir. Bunlara örnek olarak Conda veya Docker ortamları gibi MLFlow Projects tarafından desteklenen yazılım ortamları olabilir.

Aşağıda Projects bileşeni ile ilgili örnek bir görüntü bulunmaktadır.

Aşağıdaki görselde örnek bir “conda.yaml” dosyası içeriği bulunmaktadır.

3- Models: Akışta kullanılabilen makine öğrenimi modellerini paketlemek için kullanılan standart bir formattır.

MLModel YAML formatı, model flavors ‘ı listeleyen bir flavor alanı dışında aşağıdaki alanları içerebilmektedir.

time_created: Modelin oluşturulduğu tarih ve saat, UTC ISO 8601 formatında.

run_id: MLFlow Tracking kullanılarak kaydedildiyse, modeli oluşturan çalıştırmanın kimliği

signature: Modelin JSON formatında imzası.

Aşağıda MLModel ile ilgili örnek bir görüntü bulunmaktadır.

4- Model Registry: Bir MLFlow modelinin tüm yaşam döngüsünü işbirliği içinde yönetmek için kullanılan merkezi bir model deposu işlevi görmektedir. Bu kısımda versiyonlar, model açıklamaları ile ilgili bilgiler bulunmaktadır.

UYGULAMA

Üst kısımda yer alan kodda kullanılan veri ve uygulanan modeller ile ilgili kodlar ve modellerin sonucu olarak da yer alan metriklerin çıktı olarak mlflow ekranında gösterilmesi üzerine örnek bir çalışma bulunmaktadır.

Aşağıdaki komut’un komut satırında çalıştırılması ile modeller çalıştırılarak sonuçlar mlflow’a kaydedilir.

python train.py

Komutun çalıştırılması sonucunda komut satırında aşağıdaki gibi her bir modelin verdiği metrik sonuçları görülecektir.

Aşağıdaki komut’un komut satırında çalıştırılması ile mlflow’un gösterimi sağlanmaktadır.

mlflow ui

Komutun çalıştırılmasının ardından komut satırında aşağıda görüldüğü üzere mlflow’un görüntüleneceği link gösterilecektir.

Yukarıda verilen link’e tarayıcıdan gidildiğinde mlflow ekranına ulaşılmaktadır.

MLFlow ile modellerin karşılaştırılmasına yönelik örnek bir uygulamanın kodları ve projenin nasıl çalıştırılacağına ilişkin komutların yer aldığı github linki aşağıda yer almaktadır.

https://github.com/hcansaltik/mlflow

--

--