Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questa esercitazione si apprenderà come importare il modello LightGBMClassifier registrato sottoposto a training nella parte 3 usando il registro dei modelli MLflow di Microsoft Fabric ed eseguire stime batch su un set di dati di test caricato da un lakehouse.
Microsoft Fabric consente di rendere operativi i modelli di Machine Learning con una funzione scalabile denominata PREDICT, che supporta l'assegnazione dei punteggi batch in qualsiasi motore di calcolo. È possibile generare previsioni di batch direttamente da un notebook di Microsoft Fabric o dalla pagina degli elementi di un determinato modello. Informazioni su PREDICT.
Per generare previsioni di batch nel set di dati di test, si userà la versione 1 del modello LightGBM sottoposto a training che ha dimostrato le migliori prestazioni tra tutti i modelli di Machine Learning con training. Il set di dati di test verrà caricato in un DataFrame spark e verrà creato un oggetto MLFlowTransformer per generare previsioni di batch. È quindi possibile richiamare la funzione PREDICT usando uno dei tre modi seguenti:
- API Transformer da SynapseML
- Spark SQL API
- Funzione PySpark definita dall'utente (UDF)
Prerequisiti
Ottenere una sottoscrizione di Microsoft Fabric. In alternativa, iscriversi per ottenere una versione di valutazione di Microsoft Fabric gratuita.
Accedere a Microsoft Fabric.
Usare il selettore dell'esperienza nella parte inferiore sinistra della home page per passare a Fabric.
Questa è la parte 4 di 5 di questa serie di esercitazioni. Per procedere con questa esercitazione, è necessario completare:
- Parte 1: inserire dati in un lakehouse di Microsoft Fabric usando Apache Spark.
- Parte 2: esplorare e visualizzare i dati usando i notebook di Microsoft Fabric per altre informazioni sui dati.
- Parte 3: eseguire il training e la registrazione di modelli di Machine Learning.
Seguire la procedura in Notebook
4-predict.ipynb è il notebook che accompagna questa esercitazione.
Per aprire il notebook di accompagnamento per questa esercitazione, seguire le istruzioni riportate in Preparare il sistema per le esercitazioni di data science per importare il notebook nell'area di lavoro.
Se si preferisce copiare e incollare il codice da questa pagina, è possibile creare un nuovo notebook.
Assicurarsi di collegare un lakehouse al notebook prima di iniziare a eseguire il codice.
Importante
Collegare lo stesso lakehouse usato nelle altre parti di questa serie.
Caricare il set di dati di test
Caricare i dati di test salvati nella Parte 3.
df_test = spark.read.format("delta").load("Tables/df_test")
display(df_test)
PREDICT con l'API Transformer
Per usare l'API Transformer di SynapseML, è prima necessario creare un oggetto MLFlowTransformer.
Creare un'istanza dell'oggetto MLFlowTransformer
L'oggetto MLFlowTransformer è un wrapper intorno al modello MLFlow registrato nella Parte 3. Consente di generare previsioni di batch in un determinato DataFrame. Per creare un'istanza dell'oggetto MLFlowTransformer, è necessario specificare i parametri seguenti:
- Le colonne del DataFrame di test necessarie come input per il modello (in questo caso, sono tutte necessarie).
- Nome della nuova colonna di output(in questo caso, previsioni).
- Nome del modello e versione del modello corretti per generare le previsioni (in questo caso,
lgbm_sme versione 1).
from synapse.ml.predict import MLFlowTransformer
model = MLFlowTransformer(
inputCols=list(df_test.columns),
outputCol='predictions',
modelName='lgbm_sm',
modelVersion=1
)
Ora che si dispone dell'oggetto MLFlowTransformer, è possibile usarlo per generare previsioni di batch.
import pandas
predictions = model.transform(df_test)
display(predictions)
PREDICT con l'API SPARK SQL
Il codice seguente richiama la funzione PREDICT con l'API SQL Spark.
from pyspark.ml.feature import SQLTransformer
# Substitute "model_name", "model_version", and "features" below with values for your own model name, model version, and feature columns
model_name = 'lgbm_sm'
model_version = 1
features = df_test.columns
sqlt = SQLTransformer().setStatement(
f"SELECT PREDICT('{model_name}/{model_version}', {','.join(features)}) as predictions FROM __THIS__")
# Substitute "X_test" below with your own test dataset
display(sqlt.transform(df_test))
PREDICT con una funzione definita dall'utente (UDF)
Il codice seguente richiama la funzione PREDICT con una UDF PySpark.
from pyspark.sql.functions import col, pandas_udf, udf, lit
# Substitute "model" and "features" below with values for your own model name and feature columns
my_udf = model.to_udf()
features = df_test.columns
display(df_test.withColumn("predictions", my_udf(*[col(f) for f in features])))
Si noti che è anche possibile generare codice PREDICT dalla pagina degli elementi di un modello. Informazioni su PREDICT.
Scrivere i risultati della previsione del modello nel lakehouse
Dopo aver generato previsioni di batch, scrivere nuovamente i risultati della previsione del modello nel lakehouse.
# Save predictions to lakehouse to be used for generating a Power BI report
table_name = "customer_churn_test_predictions"
predictions.write.format('delta').mode("overwrite").save(f"Tables/{table_name}")
print(f"Spark DataFrame saved to delta table: {table_name}")
Passaggio successivo
Continuare con: