[PYTHON] Utiliser MLflow avec Databricks ④ --Call model -

introduction

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.

installer

["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"

charger le modèle scikit-learn

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 MLflow

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.

2020-11-05_10h45_19.png

en conclusion

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

Utiliser MLflow avec Databricks ④ --Call model -
Utilisation de MLflow avec Databricks ③ --Gestion du cycle de vie des modèles -
Utilisation de MLflow avec Databricks ① - Suivi expérimental sur notebook -
Utiliser Python et word2vec (appris) avec Azure Databricks
Utilisez mecab-ipadic-neologd avec igo-python
Utilisez RTX 3090 avec PyTorch
Utiliser ansible avec cygwin
Utiliser pipdeptree avec virtualenv
[Python] Utiliser JSON avec Python
Utilisez Mock avec pytest
Utiliser l'indicateur avec pd.merge
Utiliser Gentelella avec Django
Utiliser mecab avec Python 3
Utiliser tensorboard avec Chainer
Utiliser DynamoDB avec Python
Utiliser pip avec MSYS2
Montage du modèle avec lmfit
Utilisez Python 3.8 avec Anaconda
Utiliser les droits d'auteur avec Spacemacs
Utiliser python avec docker
Utiliser TypeScript avec django-compresseur
Régression avec un modèle linéaire
Appeler bash avec Golang
Utilisez LESS avec Django
Utiliser MySQL avec Django
Utiliser Enum avec SQLAlchemy
Utiliser tensorboard avec NNabla
Utiliser le GPS avec Edison
Utilisez nim avec Jupyter
Utilisation de MLflow avec Databricks ② --Visualisation des paramètres expérimentaux et des métriques -
Utiliser l'API Trello avec python
Utiliser la mémoire partagée avec une bibliothèque partagée
Utiliser des balises personnalisées avec PyYAML
Utiliser des graphiques directionnels avec networkx
Utiliser TensorFlow avec Intellij IDEA
Utiliser l'API Twitter avec Python
Utiliser pip avec Jupyter Notebook
Utiliser DATE_FORMAT avec le filtre SQLAlchemy
Utiliser TUN / TAP avec Python
Utilisez sqlite3 avec NAO (Pepper)
Utilisez les load_extensions de sqlite avec Pyramid
Utiliser les polices Windows 10 avec WSL
Utilisation du chainer avec Jetson TK1
Utiliser SSL avec Celery + Redis
Utiliser Cython avec Jupyter Notebook
Utilisez Maxout + CNN avec Pylearn2
Utiliser le modèle django de l'interpréteur
Utilisez WDC-433SU2M2 avec Manjaro Linux
Calibrer le modèle avec PyCaret
Utilisez OpenBLAS avec numpy, scipy
Appelez l'API avec python3.
Utiliser l'API subsonique avec python3
Utilisation de Sonicwall NetExtener avec Systemd
Utilisez prefetch_related commodément avec Django
J'ai essayé MLflow sur Databricks
Utiliser l'interpréteur AWS avec Pycharm
Utilisation de Bokeh avec IPython Notebook
Utiliser une plage de type Python avec Rust