Makine öğrenmesi projelerinde deney takibi, modellerin performansını karşılaştırmak ve tekrarlanabilirliği sağlamak için kritik öneme sahiptir. MLflow, açık kaynaklı bir platform olarak bu süreci standartlaştırır ve ekiplerin işbirliğini kolaylaştırır. Bu yazıda, MLflow'un temel bileşenlerini, pratik ipuçlarıyla birlikte adım adım inceleyecek ve bir kontrol listesi sunacağız.
MLflow'un Temel Bileşenleri
MLflow dört ana bileşenden oluşur: Tracking, Projects, Models ve Registry. Her biri farklı bir ihtiyacı karşılar:
- MLflow Tracking: Deney parametrelerini, metrikleri ve artefaktları kaydeder ve sorgulamanızı sağlar.
- MLflow Projects: Kodu yeniden üretilebilir şekilde paketler.
- MLflow Models: Farklı frameworklerdeki modelleri standart bir formatta dağıtmanıza olanak tanır.
- Model Registry: Modellerin yaşam döngüsünü (aşama, versiyon) yönetir.
Pratik İpuçları ve Kontrol Listesi
1. Deney Ortamınızı Kurun
- MLflow'u pip ile yükleyin:
pip install mlflow - Tracking sunucusunu başlatın:
mlflow server --host 0.0.0.0 --port 5000 - Arka uç veritabanı olarak SQLite (geliştirme) veya PostgreSQL (üretim) kullanın.
- Artefakt deposu olarak yerel dosya sistemi, S3 veya Google Cloud Storage tercih edin.
- Her deney için benzersiz bir run name belirleyin, örneğin
exp1_lr0.001.
2. Deney Parametrelerini ve Metriklerini Kaydedin
mlflow.log_param()ile hiperparametreleri (learning rate, batch size vb.) kaydedin.mlflow.log_metric()ile doğruluk, kayıp gibi metrikleri adım adım kaydedin.- Metrikleri zaman serisi olarak izlemek için
mlflow.log_metric()çağrılarını döngü içinde yapın. - Model ağırlıkları, confusion matrix gibi büyük dosyaları
mlflow.log_artifact()ile saklayın. - Kullanılan veri setinin hash'ini veya versiyonunu da kaydederek tekrarlanabilirliği garanti altına alın.
3. MLflow Projects ile Kodunuzu Paketleyin
- Bir
MLprojectdosyası oluşturun ve gerekli bağımlılıkları (conda.yaml veya requirements.txt) belirtin. - Proje giriş noktalarını (entry points) tanımlayın:
main.pygibi bir betik. - Parametreleri komut satırı argümanı olarak alın ve
mlflow.projects.run()ile çalıştırın. - Otomatik hiperparametre denemeleri için araçlarla entegre edin. Örneğin, AutoML Araçları Karşılaştırması yazımızda belirtilen yöntemlerle deneylerinizi otomatikleştirebilirsiniz.
4. Modelleri MLflow Formatında Kaydedin
- Eğitim sonrası modeli
mlflow.pytorch.log_model(),mlflow.sklearn.log_model()gibi framework'e özel fonksiyonlarla kaydedin. - Model imzası (signature) ve giriş örneği (input example) ekleyerek dağıtımda hata olasılığını azaltın.
- Farklı frameworkler için MLflow'un sağladığı flavor'ları kullanın (python_function, pytorch, sklearn vb.).
- Modeli kaydettikten sonra
mlflow.register_model()ile Model Registry'ye ekleyin.
5. Model Registry ile Yaşam Döngüsü Yönetimi
- Her model versiyonuna bir aşama atayın: None, Staging, Production, Archived.
- İyi performans gösteren modelleri Staging'e alıp test edin; doğrulama sonrası Production'a geçirin.
- Aşama değişikliklerini otomatikleştirmek için MLflow REST API veya Python istemcisini kullanın.
- Model Registry'den modeli yüklerken
model_versionbelirterek sürüm kontrolü yapın.
6. Dağıtım ve İzleme
- MLflow Serving ile modeli REST API olarak sunun:
mlflow models serve -m runs://model --port 5001 - Docker konteynerinde dağıtmak için
mlflow models build-dockerkomutunu kullanın. - Dağıtım sonrası metrikleri izlemek için Prometheus ve Grafana gibi araçları entegre edin.
- Alternatif olarak, Streamlit veya Gradio ile hızlı demo uygulamaları oluşturabilir ve MLflow modelinizi bu uygulamalarda kullanabilirsiniz.
Sık Yapılan Hatalar ve Dikkat Edilmesi Gerekenler
- Tracking server'a URL'yi yanlış ayarlamak:
MLFLOW_TRACKING_URIçevre değişkenini doğru tanımlayın. - Artefakt boyutunu ihmal etmek: Büyük artefaktlar (örneğin, 1 GB üzeri model dosyaları) için uzak depolama kullanın.
- Deney isimlendirme karmaşası: Tutarlı bir adlandırma kuralı belirleyin, örneğin
tarih_model_hiperparametre. - Model Registry aşamalarını manuel yönetmek: Sürekli entegrasyon (CI) hattınıza aşama geçiş adımları ekleyin.
- Güvenlik açıkları: Tracking sunucusunu şifreleme ve kimlik doğrulama ile koruyun (örneğin, nginx reverse proxy).
MLflow'u Gerçek Projelerde Kullanma
MLflow, tek bir veri bilimciden büyük ekiplere kadar her ölçekte projeye uyarlanabilir. Örneğin, bir Doğal Dil İşleme (NLP) projesinde, farklı transformer modellerinin ince ayarı sırasında parametreleri ve metrikleri kaydetmek için MLflow kullanabilirsiniz. Daha sonra bu kayıtları karşılaştırarak en iyi modeli seçer ve Model Registry'ye eklersiniz. Ayrıca, LlamaIndex veya LangChain gibi frameworklerle oluşturduğunuz RAG sisteminizin performansını da MLflow ile izleyebilirsiniz.
Sonuç
MLflow, makine öğrenmesi yaşam döngüsünü yönetmek için güçlü bir araçtır. Takip, proje paketleme, model kaydı ve registry özellikleriyle deneylerinizi düzenli, tekrarlanabilir ve işbirliğine açık hale getirir. Yukarıdaki kontrol listesini adım adım uygulayarak MLflow'dan maksimum verim alabilir ve MLOps süreçlerinizi profesyonelleştirebilirsiniz.
Sık Sorulan Sorular
MLflow nedir ve neden kullanılmalıdır?
MLflow, makine öğrenmesi deneylerini takip etmek, modelleri yönetmek ve dağıtmak için açık kaynaklı bir platformdur. Deneylerin tekrarlanabilirliğini sağlar, ekipler arası işbirliğini kolaylaştırır ve model yaşam döngüsünü standartlaştırır.
MLflow Tracking sunucusu nasıl kurulur?
Tracking sunucusunu başlatmak için terminalde `mlflow server --host 0.0.0.0 --port 5000` komutunu çalıştırın. Arka uç olarak SQLite (varsayılan) veya PostgreSQL gibi bir veritabanı kullanabilir, artefakt deposu olarak S3 veya Google Cloud Storage ayarlayabilirsiniz.
MLflow Projects ile kod nasıl paketlenir?
Proje kök dizinine bir `MLproject` dosyası ve bağımlılıkları içeren `conda.yaml` veya `requirements.txt` ekleyin. `MLproject` dosyasında giriş noktalarını (örneğin, `main.py`) ve parametreleri tanımlayın. Ardından `mlflow run .` komutu ile projeyi çalıştırabilirsiniz.
Model Registry'de aşamalar nasıl yönetilir?
Model Registry'de her model versiyonuna None, Staging, Production veya Archived aşamaları atayabilirsiniz. Python istemcisi ile `client.transition_model_version_stage()` fonksiyonunu kullanarak aşamaları otomatikleştirebilirsiniz. Aşama geçişlerini CI/CD sürecinize entegre etmeniz önerilir.
MLflow modellerini dağıtmak için hangi yöntemler vardır?
MLflow, `mlflow models serve` ile REST API olarak sunma, `mlflow models build-docker` ile Docker imajı oluşturma ve doğrudan bulut platformlarına (AWS SageMaker, Azure ML) dağıtma desteği sağlar. Ayrıca, Streamlit veya Gradio ile hızlı demo uygulamaları oluşturabilirsiniz.






