Im folgenden Artikel habe ich den von Databricks verwalteten MLflow verwendet, um das Modell zu trainieren und den Lebenszyklus zu verwalten.
Verwenden von MLflow mit Databricks ① - Experimentelles Tracking auf Notebook- Verwenden von MLflow mit Databricks ② - Visualisierung experimenteller Parameter und Metriken- Verwenden von MLflow mit Databricks ③ --Model Life Cycle Management-
Dieses Mal möchte ich das trainierte und inszenierte Modell von einem anderen Notebook laden. Als Bild wird das trainierte Modell als benutzerdefinierte Pyspark-Funktion gelesen und die verteilte Verarbeitung wird auf den Pyspark-Datenrahmen angewendet.
["ID ausführen"](https://qiita.com/knt078/items/c40c449a512b79c7fd6e#%E3%83%A2%E3%83%87%E3%83%AB%E3%81%] für das Modell, das Sie aufrufen möchten Lesen Sie AE% E7% 99% BB% E9% 8C% B2).
python
# run_id = "<run-id>"
run_id = "d35dff588112486fa1684f38******"
model_uri = "runs:/" + run_id + "/model"
Laden Sie das getestete Trainingsmodell mit der MLflow-API.
python
import mlflow.sklearn
model = mlflow.sklearn.load_model(model_uri=model_uri)
model.coef_
Lesen Sie als Nächstes den Diabetes-Datensatz, der auch für das Training verwendet wurde, und löschen Sie die Spalte "Progression". Konvertieren Sie dann den geladenen Pandas-Datenrahmen in einen Pyspark-Datenrahmen.
python
# Import various libraries including sklearn, mlflow, numpy, pandas
from sklearn import datasets
import numpy as np
import pandas as pd
# Load Diabetes datasets
diabetes = datasets.load_diabetes()
X = diabetes.data
y = diabetes.target
# Create pandas DataFrame for sklearn ElasticNet linear_model
Y = np.array([y]).transpose()
d = np.concatenate((X, Y), axis=1)
cols = ['age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6', 'progression']
data = pd.DataFrame(d, columns=cols)
dataframe = spark.createDataFrame(data.drop(["progression"], axis=1))
Rufen Sie das trainierte Modell mithilfe der MLflow-API als benutzerdefinierte Pyspark-Funktion auf.
python
import mlflow.pyfunc
pyfunc_udf = mlflow.pyfunc.spark_udf(spark, model_uri=model_uri)
Machen Sie Vorhersagen mit benutzerdefinierten Funktionen.
python
predicted_df = dataframe.withColumn("prediction", pyfunc_udf('age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6'))
display(predicted_df)
Ich konnte die verteilte Verarbeitung mit dem Pyspark-Modell durchführen.
Dieses Mal konnte ich das trainierte Modell mithilfe der MLflow-API aufrufen und in Pyspark verteilen. Databricks wird täglich mit neuen Funktionen aktualisiert, um die Verwendung zu vereinfachen. Ich möchte weiterhin nach neuen Funktionen suchen.
Recommended Posts