Aracılığıyla paylaş


Microsoft Fabric'te PREDICT ile makine öğrenmesi modeli puanlaması

Microsoft Fabric, kullanıcıların ölçeklenebilir PREDICT işleviyle makine öğrenmesi modellerini kullanıma hazır hale getirmesine olanak tanır. Bu işlev herhangi bir işlem altyapısında toplu puanlama desteği sağlar. Kullanıcılar toplu tahminleri doğrudan bir Microsoft Fabric not defterinden veya belirli bir ML modelinin öğe sayfasından oluşturabilir.

Bu makalede, kendiniz kod yazarak veya toplu puanlama işlemini işleyen kılavuzlu bir kullanıcı arabirimi deneyimi kullanarak PREDICT uygulamasını öğreneceksiniz.

Önkoşullar

Sınırlamalar

  • PREDICT işlevi şu anda bu sınırlı ML modeli çeşit kümesi için desteklenmektedir:
    • CatBoost
    • Keras
    • LightGBM
    • ONNX
    • Peygamber
    • PyTorch
    • Sklearn
    • Spark
    • İstatistik modelleri
    • TensorFlow
    • XGBoost
  • PREDICT, ML modellerini imzaları doldurulmuş şekilde MLflow biçiminde kaydetmenizi gerektirir
  • PREDICT, çok tensörlü girişlere veya çıkışlara sahip ML modellerini desteklemez

Not defterinden PREDICT çağrısı

PREDICT, Microsoft Fabric kayıt defterinde MLflow paketli modelleri destekler. Çalışma alanınızda zaten eğitilmiş ve kayıtlı bir ML modeli varsa, 2. adıma atlayabilirsiniz. Aksi takdirde, 1. adım örnek bir lojistik regresyon modelini eğitme konusunda size yol gösterecek örnek kod sağlar. Yordamın sonunda toplu tahminler oluşturmak için bu modeli kullanabilirsiniz.

  1. Ml modelini eğitin ve MLflow'a kaydedin. Sonraki kod örneği, makine öğrenmesi denemesi oluşturmak için MLflow API'sini kullanır ve ardından scikit-learn lojistik regresyon modeli için bir MLflow çalıştırması başlatır. Model sürümü daha sonra Microsoft Fabric kayıt defterinde depolanır ve kaydedilir. Modelleri eğitmek ve kendi denemelerinizi izlemek hakkında daha fazla bilgi için ml modellerini scikit-learn kaynağıyla eğitmeyi ziyaret edin.

    import mlflow
    import numpy as np 
    from sklearn.linear_model import LogisticRegression 
    from sklearn.datasets import load_diabetes
    from mlflow.models.signature import infer_signature 
    
    mlflow.set_experiment("diabetes-demo")
    with mlflow.start_run() as run:
        lr = LogisticRegression()
        data = load_diabetes(as_frame=True)
        lr.fit(data.data, data.target) 
        signature = infer_signature(data.data, data.target) 
    
        mlflow.sklearn.log_model(
            lr,
            "diabetes-model",
            signature=signature,
            registered_model_name="diabetes-model"
        ) 
    
  2. Test verilerini Spark DataFrame olarak yükleyin. Önceki adımda eğitilen ML modeliyle toplu tahminler oluşturmak için Spark DataFrame biçiminde test verilerine ihtiyacınız vardır. Aşağıdaki kodda değişken değerini kendi verilerinizle değiştirin test .

    # You can substitute "test" below with your own data
    test = spark.createDataFrame(data.frame.drop(['target'], axis=1))
    
  3. Çıkarım için ML modelini yüklemek için bir MLFlowTransformer nesne oluşturun. Toplu tahminler oluşturmak üzere bir MLFlowTransformer nesne oluşturmak için şu eylemleri gerçekleştirmeniz gerekir:

    • model girişi olarak ihtiyacınız olan test DataFrame sütunlarını belirtin (bu örnekte bunların tümü)
    • yeni çıkış sütunu için bir ad seçin (bu örnekte , predictions)
    • bu tahminlerin oluşturulması için doğru model adını ve model sürümünü sağlayın.

    Kendi ML modelinizi kullanıyorsanız, giriş sütunları, çıkış sütunu adı, model adı ve model sürümü değerlerini değiştirin.

    from synapse.ml.predict import MLFlowTransformer
    
    # You can substitute values below for your own input columns,
    # output column name, model name, and model version
    model = MLFlowTransformer(
        inputCols=test.columns,
        outputCol='predictions',
        modelName='diabetes-model',
        modelVersion=1
    )
    
  4. PREDICT işlevini kullanarak tahminler oluşturun. PREDICT işlevini çağırmak için Transformer API'sini, Spark SQL API'sini veya PySpark kullanıcı tanımlı işlevini (UDF) kullanın. Aşağıdaki bölümlerde, PREDICT işlevini çağırmak için farklı yöntemleri kullanarak önceki adımlarda tanımlanan test verileri ve ML modeliyle toplu tahminlerin nasıl oluşturulacağı gösterilmektedir.

Transformer API ile PREDICT

Bu kod Transformer API'siyle PREDICT işlevini çağırır. Kendi ML modelinizi kullanıyorsanız, modelin değerlerini değiştirin ve verileri test edin.

# You can substitute "model" and "test" below with values  
# for your own model and test data 
model.transform(test).show()

Spark SQL API'siyle PREDICT

Bu kod Spark SQL API'siyle PREDICT işlevini çağırır. Kendi ML modelinizi kullanıyorsanız , model_nameve model_version değerlerini featuresmodel adınız, model sürümünüz ve özellik sütunlarınızla değiştirin.

Not

Tahmin oluşturma için Spark SQL API'sinin kullanılması yine de bir MLFlowTransformer nesne oluşturulmasını gerektirir (3. adımda gösterildiği gibi).

from pyspark.ml.feature import SQLTransformer 

# You can substitute "model_name," "model_version," and "features" 
# with values for your own model name, model version, and feature columns
model_name = 'diabetes-model'
model_version = 1
features = test.columns

sqlt = SQLTransformer().setStatement( 
    f"SELECT PREDICT('{model_name}/{model_version}', {','.join(features)}) as predictions FROM __THIS__")

# You can substitute "test" below with your own test data
sqlt.transform(test).show()

Kullanıcı tanımlı bir işlevle PREDICT

Bu kod, PySpark UDF ile PREDICT işlevini çağırır. Kendi ML modelinizi kullanıyorsanız, modelin ve özelliklerin değerlerini değiştirin.

from pyspark.sql.functions import col, pandas_udf, udf, lit

# You can substitute "model" and "features" below with your own values
my_udf = model.to_udf()
features = test.columns

test.withColumn("PREDICT", my_udf(*[col(f) for f in features])).show()

ML modelinin öğe sayfasından PREDICT kodu oluşturma

Herhangi bir ML modelinin öğe sayfasından, PREDICT işleviyle belirli bir model sürümü için toplu tahmin oluşturmayı başlatmak için bu seçeneklerden birini belirleyebilirsiniz:

  • Not defterine kod şablonu kopyalama ve parametreleri kendiniz özelleştirme
  • PREDICT kodu oluşturmak için kılavuzlu kullanıcı arabirimi deneyimi kullanma

Kılavuzlu kullanıcı arabirimi deneyimi kullanma

Kılavuzlu kullanıcı arabirimi deneyimi şu adımlarda size yol gösterir:

  • Puanlama için kaynak verileri seçme
  • Ml modeli girişlerinizle verileri doğru eşleme
  • Model çıkışlarınız için hedefi belirtin
  • Tahmin sonuçları oluşturmak ve depolamak için PREDICT kullanan bir not defteri oluşturma

Destekli deneyimi kullanmak için

  1. Belirli bir ML modeli sürümünün öğe sayfasına gidin.

  2. Bu sürümü uygula açılan listesinde Bu modeli sihirbazda uygula'yı seçin.

    Bir ML modelini öğe sayfasından uygulayan istemi gösteren ekran görüntüsü.

    "Giriş tablosunu seçin" adımında "ML modeli tahminlerini uygula" penceresi açılır.

  3. Geçerli çalışma alanınızdaki bir göl evinden giriş tablosu seçin.

    ML modeli tahminleri için giriş tablosu seçimini gösteren ekran görüntüsü.

  4. "Giriş sütunlarını eşle" adımına gitmek için İleri'yi seçin.

  5. Kaynak tablodaki sütun adlarını, modelin imzasından çekilen ML modelinin giriş alanlarıyla eşleyin. Modelin tüm gerekli alanları için bir giriş sütunu sağlamanız gerekir. Ayrıca, kaynak sütun veri türlerinin modelin beklenen veri türleriyle eşleşmesi gerekir.

    İpucu

    Giriş tablosu sütunlarının adları ML modeli imzasında günlüğe kaydedilen sütun adlarıyla eşleşiyorsa sihirbaz bu eşlemeyi önceden doldurulur.

    ML modeli tahminleri için giriş sütunlarını eşleyen adımı gösteren ekran görüntüsü.

  6. "Çıkış tablosu oluştur" adımına gitmek için İleri'yi seçin.

  7. Geçerli çalışma alanınızın seçili lakehouse içindeki yeni tablo için bir ad belirtin. Bu çıkış tablosu ML modelinizin giriş değerlerini depolar ve tahmin değerlerini bu tabloya ekler. Varsayılan olarak, çıkış tablosu giriş tablosuyla aynı lakehouse'da oluşturulur. Hedef lakehouse'unu değiştirebilirsiniz.

    ML modeli tahminleri için çıkış tablosu oluşturan adımı gösteren ekran görüntüsü.

  8. "Çıkış sütunlarını eşle" adımına gitmek için İleri'yi seçin.

  9. Ml modeli tahminlerini depolayan çıktı tablosunun sütunlarını adlandırmak için sağlanan metin alanlarını kullanın.

    ML modeli tahminleri için çıkış sütunlarını eşleyen adımı gösteren ekran görüntüsü.

  10. "Not defterini yapılandır" adımına gitmek için İleri'yi seçin.

  11. Oluşturulan PREDICT kodunu çalıştıran yeni bir not defteri için bir ad sağlayın. Sihirbaz, bu adımda oluşturulan kodun önizlemesini görüntüler. İsterseniz, kodu panonuza kopyalayıp var olan bir not defterine yapıştırabilirsiniz.

    ML modeli tahminleri için not defterini yapılandıran adımı gösteren ekran görüntüsü.

  12. "Gözden geçir ve bitir" adımına gitmek için İleri'yi seçin.

  13. Özet sayfasındaki ayrıntıları gözden geçirin ve oluşturulan kodu içeren yeni not defterini çalışma alanınıza eklemek için Not defteri oluştur'u seçin. Doğrudan bu not defterine yönlendirilirsiniz; burada tahminleri oluşturmak ve depolamak için kodu çalıştırabilirsiniz.

    ML modeli tahminleri için gözden geçirme ve bitiş adımını gösteren ekran görüntüsü.

Özelleştirilebilir kod şablonu kullanma

Toplu tahminler oluşturmak için bir kod şablonu kullanmak için:

  1. Belirli bir ML modeli sürümü için öğe sayfasına gidin.
  2. Bu sürümü uygula açılan listesinden Uygulamak için Kodu kopyala'yı seçin. Seçim, özelleştirilebilir bir kod şablonunu kopyalamanıza olanak tanır.

ML modelinizle toplu tahminler oluşturmak için bu kod şablonunu bir not defterine yapıştırabilirsiniz. Kod şablonunu başarıyla çalıştırmak için aşağıdaki değerleri el ile değiştirmeniz gerekir:

  • <INPUT_TABLE>: ML modeline giriş sağlayan tablonun dosya yolu
  • <INPUT_COLS>: ML modeline beslemek için giriş tablosundan sütun adları dizisi
  • <OUTPUT_COLS>: Çıkış tablosunda tahminleri depolayan yeni bir sütunun adı
  • <MODEL_NAME>: Tahmin oluşturmak için kullanılacak ML modelinin adı
  • <MODEL_VERSION>: Tahmin oluşturmak için kullanılacak ML modelinin sürümü
  • <OUTPUT_TABLE>: Tahminleri depolayan tablonun dosya yolu

ML modeli tahminleri için kopya kodu şablonunu gösteren ekran görüntüsü.

import mlflow 
from synapse.ml.predict import MLFlowTransformer 
 
df = spark.read.format("delta").load( 
    <INPUT_TABLE> # Your input table filepath here
) 
 
model = MLFlowTransformer( 
    inputCols=<INPUT_COLS>, # Your input columns here
    outputCol=<OUTPUT_COLS>, # Your new column name here
    modelName=<MODEL_NAME>, # Your ML model name here
    modelVersion=<MODEL_VERSION> # Your ML model version here
) 
df = model.transform(df) 
 
df.write.format('delta').mode("overwrite").save( 
    <OUTPUT_TABLE> # Your output table filepath here
)