Aracılığıyla paylaş


Microsoft Fabric'te makine öğrenmesi modeli

Makine öğrenmesi modeli, belirli desen türlerini tanımak için eğitilmiş bir dosyadır. Modeli bir veri kümesi üzerinde eğitip bu veri kümesinden mantık yürütmeyi ve bu veri kümesinden öğrenmeyi sağlayan bir algoritma sağlarsınız. Modeli eğitdikten sonra, daha önce hiç görmediği veriler üzerinde mantık oluşturmak ve bu veriler hakkında tahminlerde bulunmak için kullanabilirsiniz.

MLflow'da bir makine öğrenmesi modeli birden çok model sürümü içerebilir. Burada, her sürüm bir model yinelemesini temsil edebilir.

Bu makalede şunların nasıl yapılacağını öğreneceksiniz:

  • Microsoft Fabric'te makine öğrenmesi modelleri oluşturma
  • Model sürümlerini yönetme ve izleme
  • Sürümler arasında model performansını karşılaştırma
  • Puanlama ve çıkarım için modelleri uygulama

Makine öğrenmesi modeli oluşturma

MLflow'da makine öğrenmesi modelleri standart bir paketleme biçimi içerir. Bu biçim, Apache Spark'ta toplu çıkarım da dahil olmak üzere çeşitli aşağı akış araçlarında bu modellerin kullanılmasına olanak tanır. Format, bir modelin farklı ardıl araçların anlayabileceği farklı varyantlarda kaydedilmesine yönelik bir konvansiyon tanımlar.

Fabric kullanıcı arabiriminden doğrudan bir makine öğrenmesi modeli oluşturabilirsiniz. MLflow API'si de modeli doğrudan oluşturabilir.

Kullanıcı arabiriminden makine öğrenmesi modeli oluşturmak için:

  1. Mevcut bir veri bilimi çalışma alanını seçin veya yeni bir çalışma alanı oluşturun.
  2. Çalışma alanı aracılığıyla veya Oluştur düğmesini kullanarak yeni bir öğe oluşturun:
    1. Çalışma alanı:
      1. Çalışma alanınızı seçin.
      2. Yeni öğe seçin.
      3. Verileri analiz etme ve eğit bölümündeML Modeli'ni seçin. Verileri analiz et ve eğit bölümünde ML Modeli seçeneğinin vurgulandığı Yeni öğe menüsünün ekran görüntüsü.
    2. Oluştur düğmesi:
      1. Dikey menüden ... içinde bulunabilecek Oluştur'u seçin. Dikey menü gezintisinde bulunan Oluştur düğmesinin ekran görüntüsü.
      2. Veri Bilimi'nin altında ML Modeli'ne tıklayın. Veri Bilimi bölümünün altındaki ML Modeli seçeneğini gösteren Oluştur menüsünün ekran görüntüsü.
  3. Model oluşturulduktan sonra çalıştırma ölçümlerini ve parametrelerini izlemek için model sürümleri eklemeye başlayabilirsiniz. Deneme çalıştırmalarını mevcut bir modele kaydedin veya saklayın.

Ayrıca doğrudan API ile yazma deneyiminizden bir makine öğrenmesi mlflow.register_model() modeli oluşturabilirsiniz. Belirtilen ada sahip kayıtlı bir makine öğrenmesi modeli yoksa, API bunu otomatik olarak oluşturur.

import mlflow

model_uri = "runs:/{}/model-uri-name".format(run.info.run_id)
mv = mlflow.register_model(model_uri, "model-name")

print("Name: {}".format(mv.name))
print("Version: {}".format(mv.version))

Makine öğrenmesi modeli içindeki sürümleri yönetme

Makine öğrenmesi modeli, basitleştirilmiş izleme ve karşılaştırma için bir model sürümleri koleksiyonu içerir. Bir modelde, veri bilimcisi temel alınan parametreleri ve ölçümleri keşfetmek için çeşitli model sürümleri arasında gezinebilir. Veri bilimciler, daha yeni modellerin daha iyi sonuçlar verip vermeyeceğini belirlemek için model sürümleri arasında karşılaştırmalar da yapabilir.

Makine öğrenmesi modellerini izleme

Makine öğrenmesi modeli sürümü, izleme için kayıtlı tek bir modeli temsil eder.

Ölçümleri, parametreleri ve izleme bilgilerini gösteren makine öğrenmesi modeli sürüm ayrıntıları sayfasının ekran görüntüsü.

Her model sürümü aşağıdaki bilgileri içerir:

  • Oluşturulma Zamanı: Model oluşturma tarihi ve saati.
  • Çalıştırma Adı: Bu özel model sürümünü oluşturmak için kullanılan deneme çalıştırmalarının tanımlayıcısı.
  • Hiper parametreler: Hiper parametreler anahtar-değer çiftleri olarak kaydedilir. Hem anahtarlar hem de değerler dizelerdir.
  • Ölçümler: Anahtar-değer çiftleri olarak kaydedilen ölçümleri çalıştırın. Değer sayısaldır.
  • Model Şeması/İmzası: Model girişlerinin ve çıkışlarının açıklaması.
  • Günlüğe kaydedilen dosyalar: Herhangi bir formatta günlüğe kaydedilen dosyalar. Örneğin, görüntüleri, ortamı, modelleri ve veri dosyalarını kaydedebilirsiniz.
  • Etiketler: Çalıştırmalara anahtar-değer çiftleri olarak atanan meta veriler.

Makine öğrenmesi modellerine etiket uygulama

Model sürümleri için MLflow etiketlemesi, kullanıcıların MLflow Model Kayıt Defteri'nde kayıtlı bir modelin belirli sürümlerine özel meta veriler eklemesini sağlar. Anahtar-değer çiftleri olarak depolanan bu etiketler, model sürümlerini düzenlemeye, izlemeye ve ayırt etmeye yardımcı olarak model yaşam döngülerini yönetmeyi kolaylaştırır. Etiketler modelin amacını, dağıtım ortamını veya diğer ilgili bilgileri belirtmek için kullanılabilir ve ekipler içinde daha verimli model yönetimi ve karar alma sürecini kolaylaştırır.

Bu kod, Scikit-learn kullanarak RandomForestRegressor modelini eğitmeyi, modeli ve parametreleri MLflow ile günlüğe kaydetmeyi ve ardından modeli özel etiketlerle MLflow Model Kayıt Defteri'ne kaydetmeyi gösterir. Bu etiketler proje adı, departman, ekip ve proje üç aylık dönemi gibi yararlı meta veriler sağlayarak model sürümünü yönetmeyi ve izlemeyi kolaylaştırır.

import mlflow.sklearn
from mlflow.models import infer_signature
from sklearn.datasets import make_regression
from sklearn.ensemble import RandomForestRegressor

# Generate synthetic regression data
X, y = make_regression(n_features=4, n_informative=2, random_state=0, shuffle=False)

# Model parameters
params = {"n_estimators": 3, "random_state": 42}

# Model tags for MLflow
model_tags = {
    "project_name": "grocery-forecasting",
    "store_dept": "produce",
    "team": "stores-ml",
    "project_quarter": "Q3-2023"
}

# Log MLflow entities
with mlflow.start_run() as run:
    # Train the model
    model = RandomForestRegressor(**params).fit(X, y)
    
    # Infer the model signature
    signature = infer_signature(X, model.predict(X))
    
    # Log parameters and the model
    mlflow.log_params(params)
    mlflow.sklearn.log_model(model, artifact_path="sklearn-model", signature=signature)

# Register the model with tags
model_uri = f"runs:/{run.info.run_id}/sklearn-model"
model_version = mlflow.register_model(model_uri, "RandomForestRegressionModel", tags=model_tags)

# Output model registration details
print(f"Model Name: {model_version.name}")
print(f"Model Version: {model_version.version}")

Etiketleri uyguladıktan sonra, bunları doğrudan model sürümü ayrıntıları sayfasında görüntüleyebilirsiniz. Ayrıca, etiketler bu sayfadan istediğiniz zaman eklenebilir, güncelleştirilebilir veya kaldırılabilir.

Proje adı ve ekip bilgileri gibi özel etiketleri görüntüleyen model sürümü ayrıntıları sayfasının ekran görüntüsü.

Makine öğrenmesi modellerini karşılaştırma ve filtreleme

Makine öğrenmesi modeli sürümlerinin kalitesini karşılaştırmak ve değerlendirmek için, seçili sürümler arasındaki parametreleri, ölçümleri ve meta verileri karşılaştırabilirsiniz.

Makine öğrenmesi modellerini görsel olarak karşılaştırma

Mevcut bir model içindeki çalıştırmaları görsel olarak karşılaştırabilirsiniz. Görsel karşılaştırma, birden çok sürüm arasında kolay gezintiye ve farklı sürümlerde sıralamaya olanak tanır.

Ölçümler ve parametreler içeren birden çok makine öğrenmesi modeli sürümünü gösteren model karşılaştırma görünümünün ekran görüntüsü.

Çalıştırmaları karşılaştırmak için şunları yapabilirsiniz:

  1. Birden çok sürüm içeren mevcut bir makine öğrenmesi modelini seçin.
  2. Görünüm sekmesini seçin ve model listesi görünümüne gidin. Model listesini doğrudan ayrıntılar görünümünden görüntüleme seçeneğini de belirleyebilirsiniz.
  3. Tablo içindeki sütunları özelleştirebilirsiniz. Sütunları özelleştir bölmesini genişletin. Buradan, görmek istediğiniz özellikleri, ölçümleri, etiketleri ve hiper parametreleri seçebilirsiniz.
  4. Son olarak, ölçüm karşılaştırma bölmesinde sonuçları karşılaştırmak için birden çok sürüm seçebilirsiniz. Bu bölmeden grafik başlığında, görselleştirme türünde, X ekseninde, Y ekseninde ve daha fazla değişiklikle grafikleri özelleştirebilirsiniz.

MLflow API'sini kullanarak makine öğrenmesi modellerini karşılaştırma

Veri bilimciler çalışma alanına kaydedilmiş birden çok model arasında arama yapmak için MLflow da kullanabilir. Model etkileşimi için diğer MLflow API'lerini keşfetmek için MLflow belgelerini ziyaret edin.

from pprint import pprint

client = MlflowClient()
for rm in client.list_registered_models():
    pprint(dict(rm), indent=4)

Makine öğrenmesi modelleri uygulama

Bir modeli bir veri kümesinde eğitdikten sonra, tahmin oluşturmak için hiç görmediği verilere bu modeli uygulayabilirsiniz. Bu model kullanım tekniğine puanlama veya çıkarım diyoruz.

Sonraki adımlar: