Microsoft Fabric'de 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, model yinelemelerini izlemek ve karşılaştırmak için ML modelleriyle nasıl etkileşim kuracağınızı öğreneceksiniz.

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

  • Microsoft Fabric'de 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

Fabric kullanıcı arabiriminden veya MLflow API'siyle program aracılığıyla bir makine öğrenmesi modeli oluşturabilirsiniz. MLflow'da modeller, Apache Spark'ta toplu çıkarım da dahil olmak üzere çeşitli aşağı akış araçlarıyla çalışan standart bir paketleme biçimi kullanır. Biçim, bir modeli farklı "varyasyonlarda" kaydederek, farklı alt akış araçlarının anlayabileceği hale getirir.

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:

Mülkiyet Description
Oluşturulma Zamanı Model oluşturma tarihi ve saati.
Çalıştırma Adı Bu belirli model sürümünü oluşturmak için kullanılan deney çalışmasının tanımlayıcısı.
Hiper Parametreler Anahtar-değer çiftleri olarak kaydedilir. Hem anahtarlar hem de değerler dizelerdir.
Metrics 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ı.
Loglanan dosyalar Herhangi bir formatta kaydedilmiş dosyalar. Örneğin, görüntüleri, ortamı, modelleri ve veri dosyalarını kaydedebilirsiniz.
Etiketler Çalıştırmalara eklenen anahtar-değer çiftleri olarak özel meta veriler. Etiketleri uygulamayı öğrenin.

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
from mlflow import MlflowClient

client = MlflowClient()
for rm in client.search_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.

Fabric, eğitilen modellerinizi uygulamak için birden çok yaklaşımı destekler:

  • Toplu puanlama Apache Spark kullanarak modelinizi büyük veri kümelerinde ölçeklenebilir şekilde uygulayın. Bu, geçmiş veya zamanlanmış veriler üzerinde tahmin oluşturmak için idealdir.
  • Gerçek zamanlı puanlama Modelinizi isteğe bağlı tahminler için bir uç noktaya dağıtın; anında sonuç gerektiren uygulamalar için kullanışlıdır.

Modellerinizi uygulamaya başlamak için senaryonuza uygun yaklaşımı seçin: