Dans l'article suivant, j'ai utilisé le MLflow géré par Databricks pour entraîner le modèle et gérer le cycle de vie.
Utilisation de MLflow avec Databricks ① - Suivi expérimental sur notebook- Utilisation de MLflow avec Databricks ② --Visualisation des paramètres expérimentaux et des métriques- Utilisation de MLflow avec Databricks ③ --Model life cycle management-
Cette fois, je voudrais charger le modèle entraîné et intermédiaire à partir d'un autre ordinateur portable. En tant qu'image, le modèle entraîné est lu comme une fonction définie par l'utilisateur Pyspark et le traitement distribué est appliqué à la trame de données pyspark.
["ID d'exécution"](https://qiita.com/knt078/items/c40c449a512b79c7fd6e#%E3%83%A2%E3%83%87%E3%83%AB%E3%81%] pour le modèle que vous souhaitez appeler Charge AE% E7% 99% BB% E9% 8C% B2).
python
# run_id = "<run-id>"
run_id = "d35dff588112486fa1684f38******"
model_uri = "runs:/" + run_id + "/model"
Chargez le modèle d'entraînement testé à l'aide de l'API MLflow.
python
import mlflow.sklearn
model = mlflow.sklearn.load_model(model_uri=model_uri)
model.coef_
Ensuite, lisez l'ensemble de données sur le diabète qui a également été utilisé pour l'entraînement et supprimez la colonne «progression». Puis convertissez la trame de données pandas chargée en une trame de données pyspark.
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))
Appelez le modèle entraîné en tant que fonction définie par l'utilisateur Pyspark à l'aide de l'API MLflow.
python
import mlflow.pyfunc
pyfunc_udf = mlflow.pyfunc.spark_udf(spark, model_uri=model_uri)
Faites des prédictions à l'aide de fonctions définies par l'utilisateur.
python
predicted_df = dataframe.withColumn("prediction", pyfunc_udf('age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6'))
display(predicted_df)
J'ai pu faire du traitement distribué en utilisant le modèle Pyspark.
Cette fois, j'ai pu appeler le modèle entraîné à l'aide de l'API MLflow et le distribuer dans Pyspark. Databricks est mis à jour avec de nouvelles fonctionnalités tous les jours, ce qui facilite son utilisation. Je voudrais continuer à courir après de nouvelles fonctionnalités.
Recommended Posts