MLflow ile Deney Takibi: Parametreleri, Ölçütleri ve Yapıtları Günlüğe Kaydetme
Bir eğitim betiğine mlflow.log_param ve mlflow.log_metric ekleyecek, MLflow arayüzünü başlatacak ve hiperparametre ayarları arasındaki çalıştırmaları karşılaştıracaksınız.
MLflow ile Deney Takibi: Parametreleri, Ölçütleri ve Yapıtları Günlüğe Kaydetme, CoddyKit'te ücretsiz bir Machine Learning Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Machine Learning Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Machine Learning Academy kursu toplamda 4 dersten oluşur.
Deneme Takibi Neden Önemlidir
Farklı hiperparametrelerle birden fazla model eğittiğinizde, en iyi sonucu hangi çalışmanın elde ettiğini takip etmek kolayca zorlaşır. Deneme takibi, her eğitim çalışmasının parametrelerini, ölçümlerini ve kod sürümünü aranabilir bir veritabanına otomatik olarak kaydeder. Bu olmadan ekipler düzensiz elektronik tablolara başvurur veya neyin işe yaradığını basitçe unutur. MLflow, makine öğrenmesi denemelerini izlemek ve model yaşam döngüsünü yönetmek için sektörde standart hâline gelmiş açık kaynaklı bir araçtır.
MLflow'u Kurma ve Başlatma
MLflow, başlangıç için harici bir veritabanı gerektirmeyen tamamen Python tabanlı bir pakettir; çalışmaları yerel olarak mlruns/ dizininde saklar. pip ile kurduktan sonra çalışmaları bir tarayıcıda görselleştirmek için izleme arayüzünü başlatın. Arayüz tüm denemeleri, her çalışmanın parametrelerini ve ölçümlerini gösterir; etkileşimli grafiklerle çalışmaları yan yana karşılaştırmanıza olanak tanır.
# Install MLflow
# pip install mlflow scikit-learn
import mlflow
import mlflow.sklearn
# Start the tracking UI (run this in a terminal):
# mlflow ui --host 0.0.0.0 --port 5000
# Then open http://localhost:5000
# Check MLflow version
print('MLflow version:', mlflow.__version__)
# Default tracking URI stores to ./mlruns
print('Tracking URI:', mlflow.get_tracking_uri())Denemeler Oluşturma
MLflow, çalışmaları ilişkili çalışmaların mantıksal grupları olan denemeler hâlinde düzenler. mlflow.set_experiment ile adlandırılmış bir deneme oluşturun. Bundan sonraki tüm çalışmalar bu denemeye ait olur. Projeyi ve tarihi belirten açıklayıcı adlar kullanın; örneğin 'random_forest_imdb_2024'. Bir deneme içindeki her çalışma benzersiz bir ID, insanların okuyabileceği bir ad ve kendine ait bir parametre/ölçüm/yapay ürün deposu alır.
import mlflow
# Create or switch to an experiment
experiment_name = 'sentiment_classification'
mlflow.set_experiment(experiment_name)
# List all experiments
for exp in mlflow.search_experiments():
print(f'ID: {exp.experiment_id} Name: {exp.name}')
# Get current experiment info
experiment = mlflow.get_experiment_by_name(experiment_name)
print('Artifact location:', experiment.artifact_location)mlflow.log_param ile Parametreleri Kaydetme
Parametreler, eğitim başlamadan önce yapılan yapılandırma seçimleridir: öğrenme oranı, tahminci sayısı ve düzenlileştirme gücü gibi hiperparametreler. Bunları etkin bir çalışma bağlamı içinde mlflow.log_param(key, value) ile kaydedin. Parametreler kaydedildikten sonra değiştirilemez; deneme kurulumunu tanımlar ve en iyi sonucu veren yapılandırmayı bulmak üzere çalışmaları filtrelemenize yardımcı olur.
import mlflow
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
with mlflow.start_run(run_name='rf_baseline'):
n_estimators = 100
max_depth = 5
mlflow.log_param('n_estimators', n_estimators)
mlflow.log_param('max_depth', max_depth)
mlflow.log_param('random_state', 42)
clf = RandomForestClassifier(n_estimators=n_estimators, max_depth=max_depth, random_state=42)
clf.fit(X_train, y_train)
print('Params logged.')mlflow.log_metric ile Ölçümleri Kaydetme
Ölçümler, eğitim sırasında ve sonrasında üretilen nicel sonuçlardır: doğruluk, F1 ve kayıp değerleri. Dönemler boyunca ilerlemeyi izlemek için bunları mlflow.log_metric(key, value) veya mlflow.log_metric(key, value, step=i) ile kaydedin. Ölçümlerin her dönemde kaydedilmesi, MLflow'un arayüzde öğrenme eğrilerini çizmesini sağlar ve çalışmalar arasındaki yakınsama hızını karşılaştırmayı kolaylaştırır.
import mlflow
from sklearn.metrics import accuracy_score, f1_score
with mlflow.start_run(run_name='rf_run_1'):
mlflow.log_param('n_estimators', 100)
mlflow.log_param('max_depth', 5)
# Train model (abbreviated)
clf = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42)
clf.fit(X_train, y_train)
preds = clf.predict(X_test)
acc = accuracy_score(y_test, preds)
f1 = f1_score(y_test, preds)
mlflow.log_metric('test_accuracy', acc)
mlflow.log_metric('test_f1', f1)
print(f'Logged accuracy={acc:.4f}, f1={f1:.4f}')Yapay Ürünleri Kaydetme
Yapay ürünler, bir çalışmayla ilişkili dosyalardır: eğitilmiş model ağırlıkları, grafikler, karışıklık matrisleri veya özellik önem grafikleri. Bunları mlflow.log_artifact(local_path) ile kaydedin. MLflow, dosyayı çalışmanın yapay ürünler dizininde saklar ve arayüzden indirilebilir hâle getirir. Karışıklık matrisi görselini ölçümlerle birlikte kaydetmek, inceleyen kişilere koda girmeden eksiksiz bir görünüm sunar.
import mlflow
import matplotlib.pyplot as plt
from sklearn.metrics import ConfusionMatrixDisplay
import numpy as np
with mlflow.start_run():
clf.fit(X_train, y_train)
preds = clf.predict(X_test)
# Save confusion matrix as an artifact
fig, ax = plt.subplots(figsize=(5, 4))
ConfusionMatrixDisplay.from_predictions(y_test, preds, ax=ax)
plt.tight_layout()
plt.savefig('/tmp/confusion_matrix.png')
plt.close()
mlflow.log_artifact('/tmp/confusion_matrix.png')
print('Artifact logged.')mlflow.sklearn.autolog ile Otomatik Kayıt
scikit-learn için MLflow, herhangi bir el ile günlük kaydı çağrısı olmadan tüm parametreleri, ölçümleri ve eğitilmiş modeli otomatik olarak yakalayan otomatik kayıt özelliği sunar. Uyum işleminden önce yalnızca mlflow.sklearn.autolog() çağrısını yapın. Otomatik kayıt, benzer tek satırlık etkinleştirmeyle XGBoost, LightGBM, PyTorch, TensorFlow ve daha fazlasını destekler. Mevcut eğitim kodunu değiştirmeden takibe başlamanın en hızlı yoludur.
import mlflow
import mlflow.sklearn
from sklearn.ensemble import GradientBoostingClassifier
# Enable auto-logging -- no manual log calls needed
mlflow.sklearn.autolog()
with mlflow.start_run(run_name='gb_autolog'):
clf = GradientBoostingClassifier(n_estimators=200, max_depth=3, learning_rate=0.05)
clf.fit(X_train, y_train)
# MLflow automatically logs:
# - All constructor params
# - Training accuracy
# - Model artifact
print('Auto-logged run complete.')MLflow Arayüzünde Çalışmaları Karşılaştırma
Farklı hiperparametrelerle birkaç çalıştırma yaptıktan sonra MLflow arayüzünü http://localhost:5000 adresinde açın. Onay kutularını kullanarak birden fazla çalıştırma seçin ve bunları yan yana görüntülemek için Karşılaştır seçeneğine tıklayın. Karşılaştırma sayfasında, her eksenin bir parametreyi veya metriği temsil ettiği paralel koordinatlar grafiği gösterilir; bu grafik, en yüksek doğruluğu sağlayan parametre birleşimini kolayca belirlemenizi sağlar. Çalıştırma tablosunu herhangi bir metrik sütununa göre de sıralayabilirsiniz.
import mlflow
# Search runs programmatically (useful in CI/CD pipelines)
runs = mlflow.search_runs(
experiment_names=['sentiment_classification'],
order_by=['metrics.test_accuracy DESC']
)
if not runs.empty:
best_run = runs.iloc[0]
print('Best run ID:', best_run['run_id'])
print('Best accuracy:', best_run['metrics.test_accuracy'])
print('n_estimators:', best_run['params.n_estimators'])
print('max_depth:', best_run['params.max_depth'])mlflow.sklearn.log_model ile Modelleri Günlüğe Kaydetme
Model dosyalarını genel yapıtlar olarak günlüğe kaydetmenin yanı sıra modeli MLflow'un standartlaştırılmış biçiminde günlüğe kaydetmek için mlflow.sklearn.log_model kullanın. Bu biçim model nesnesini, model türüne özgü üst verileri ve otomatik olarak oluşturulan bir MLmodel yapılandırma dosyasını içerir. Standartlaştırılmış biçim, yerel REST sunucularına (mlflow models serve) ve Azure ML ile AWS SageMaker gibi bulut platformlarına tek tıklamayla dağıtım yapılmasını sağlar.
import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
with mlflow.start_run(run_name='rf_logged_model'):
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)
mlflow.log_metric('accuracy', accuracy_score(y_test, clf.predict(X_test)))
# Log in sklearn flavour -- enables mlflow models serve
mlflow.sklearn.log_model(
sk_model=clf,
artifact_path='random_forest',
registered_model_name='SentimentRF'
)
print('Model registered in Model Registry.')Düzenleme İçin Çalıştırmaları Etiketleme
MLflow çalıştırmaları etiketlere sahip olabilir: yapılandırılmış parametrelerin ve metriklerin ötesine geçen anahtar-değer üst verileri. Veri kümesi sürümünü, kod işleme karmasını, deneyi yapan kişinin adını veya nelerin değiştiğine ilişkin notları saklamak için etiketleri kullanın. Etiketler kullanıcı arayüzünde aranabilir ve filtrelenebilir. Her çalıştırmada dataset_version ve git_sha değerlerini günlüğe kaydetmek gibi iyi bir etiketleme kuralı, aylar sonra bile her çalıştırmanın yeniden üretilebilir ve denetlenebilir olmasını sağlar.
import mlflow
import subprocess
def get_git_sha():
try:
return subprocess.check_output(
['git', 'rev-parse', 'HEAD'], text=True
).strip()
except Exception:
return 'unknown'
with mlflow.start_run():
mlflow.set_tag('dataset_version', 'imdb_v2')
mlflow.set_tag('git_sha', get_git_sha())
mlflow.set_tag('author', 'mehmet.canker')
mlflow.set_tag('notes', 'Testing higher max_depth after previous plateau')
mlflow.log_param('max_depth', 8)
print('Run tagged.')Uzak İzleme Sunucusunu Kurma
Ekip çalışması için MLflow'u yerel mlruns/ klasörü yerine bir uzak izleme sunucusuna yönlendirin. Herhangi bir MLflow çağrısı yapmadan önce izleme URI'sini sunucunuzun URL'si olarak ayarlayın. Tüm ekip üyeleri aynı sunucuya günlük kaydı yapar, birbirlerinin çalıştırmalarını görür ve paylaşılan yapıtların erişimini sağlar. Sunucu arka ucu, üst veriler için bir PostgreSQL veritabanı ve yapıt depolama için S3/GCS kullanabilir; böylece kurumsal düzeyde dayanıklılık ve erişim denetimi sağlanır.
import mlflow
import os
# Point to a remote MLflow tracking server
os.environ['MLFLOW_TRACKING_URI'] = 'http://mlflow.yourcompany.com:5000'
os.environ['MLFLOW_TRACKING_USERNAME'] = 'data_team'
os.environ['MLFLOW_TRACKING_PASSWORD'] = 'secret'
mlflow.set_tracking_uri(os.environ['MLFLOW_TRACKING_URI'])
# All subsequent mlflow calls go to the remote server
mlflow.set_experiment('shared_team_experiment')
with mlflow.start_run():
mlflow.log_param('model_type', 'xgboost')
mlflow.log_metric('auc', 0.94)
print('Logged to remote server.')Kısa Kontrol
Bu dersteki Python ile Makine Öğrenmesi kavramlarını anlayıp anlamadığınızı sınayın.
Ders Özeti
Bu derste şunları öğrendiniz: MLflow, her eğitim çalıştırması için parametreleri, metrikleri ve yapıtları aranabilir bir veritabanında izler, mlflow.sklearn.autolog(), elle günlük kaydı çağrıları yapmadan her şeyi otomatik olarak yakalar ve sklearn türünde günlüğe kaydedilen modeller REST API'leri olarak sunulabilir veya Model Registry üzerinden aşamalara geçirilebilir. Sırada, makineler arasındaki ortam farklılıklarını ortadan kaldırmak için Makine Öğrenmesi eğitimi amacıyla yeniden üretilebilir Docker kapsayıcıları oluşturacağız.
Yapay zeka eğitmeniyle Python öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 30
- Dersler
- 120
Sıkça Sorulan Sorular
“MLflow ile Deney Takibi: Parametreleri, Ölçütleri ve Yapıtları Günlüğe Kaydetme” dersi ücretsiz mi?
Evet — “MLflow ile Deney Takibi: Parametreleri, Ölçütleri ve Yapıtları Günlüğe Kaydetme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Machine Learning Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Machine Learning Academy kursu toplamda 4 dersten oluşur.
“MLflow ile Deney Takibi: Parametreleri, Ölçütleri ve Yapıtları Günlüğe Kaydetme” dersinde ne öğreneceğim?
Bir eğitim betiğine mlflow.log_param ve mlflow.log_metric ekleyecek, MLflow arayüzünü başlatacak ve hiperparametre ayarları arasındaki çalıştırmaları karşılaştıracaksınız. Machine Learning Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Machine Learning Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Machine Learning Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“MLflow ile Deney Takibi: Parametreleri, Ölçütleri ve Yapıtları Günlüğe Kaydetme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Machine Learning Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Machine Learning Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- MLflow ile Deney Takibi: Parametreleri, Ölçütleri ve Yapıtları Günlüğe Kaydetme
- Makine Öğrenimi İçin Docker ile Tekrarlanabilir Ortamlar Oluşturmak
- Model Kayıt Defteri: Hazırlama, Üretim ve Arşivleme
- GitHub Actions ile Otomatik Yeniden Eğitim İşlem Hatları