Options pour le déploiement des modèles de R dans la production
Il ne semble pas y avoir de nombreuses options pour le déploiement de modèles de prévision de la production, ce qui est surprenant compte tenu de l'explosion dans le Big Data.
Je comprends que l'open-source PMML peut être utilisé pour exporter des modèles comme une spécification XML. Cela peut ensuite être utilisé pour la base de données de pointage/prédiction. Cependant, il semble que, pour faire ce travail vous avez besoin d'utiliser le PMML plugin par Zementis qui signifie que la solution n'est pas vraiment open source. Est-il plus facile d'ouvrir la voie à la carte PMML de SQL pour la notation?
Une autre option serait d'utiliser JSON au lieu de XML pour la sortie des prédictions du modèle. Mais dans ce cas, où serait le R modèle s'asseoir? Je suis en supposant qu'elle aurait toujours besoin d'être mappé à SQL...à moins que le R modèle pourrait s'asseoir sur le même serveur que les données et ensuite l'exécuter contre que les données entrantes à l'aide d'un script R?
Toutes les autres options là-bas?
- Parce que les "big data" est juste l'entreposage de données 2.0 - les gens n'ont pas vraiment faire quelque chose de compliqué, comme la classification sur de très gros volumes de données. Alors vous ne serait pas à l'aide de R, car il est trop lent.
- Regardez yhathq.com.
- gist.github.com/shanebutler/5456942 pour la r gbm à SQL gist.github.com/shanebutler/96f0e78a02c84cdcf558 pour la r forêt aléatoire de SQL
Vous devez vous connecter pour publier un commentaire.
La réponse dépend vraiment de ce que votre environnement de production est.
Si votre "big data" sont sur Hadoop, vous pouvez essayer ce nouveau open source PMML "moteur de scoring" appelé Modèle.
Sinon, vous n'avez pas le choix (à court d'écriture personnalisé spécifiques au modèle de code), mais pour exécuter des R sur votre serveur. Vous utilisez
save
pour enregistrer vos équipée modèles .RData fichiers puisload
et exécuter correspondantpredict
sur le serveur. (Qui est lié à être lente, mais vous pouvez toujours essayer de jeter plus de matériel à elle.)Comment vous faites cela dépend vraiment de votre plate-forme. Habituellement, il ya une façon d'ajouter de la "coutume" de fonctions écrites dans R. Le terme est UDF (fonction définie par l'utilisateur). Dans Hadoop, vous pouvez ajouter ces fonctions de Porc (p. ex. https://github.com/cd-wood/pigaddons) ou vous pouvez utiliser RHadoop écrire simple réduction de mappage de code qui permettrait de charger le modèle et l'appel
predict
dans R. Si vos données sont dans la Ruche, vous pouvez utiliser La ruche TRANSFORMER d'appel externe script R.Il y a aussi des fournisseurs spécifiques façons d'ajouter des fonctions écrites dans la R de diverses bases de données SQL. Nouveau look pour l'UDF dans la documentation. Par exemple, PostgreSQL a PL/R.
Ce qui suit est une liste de solutions de rechange que j'ai trouvé jusqu'à présent de déployer une R modèle de production. Veuillez noter que le flux de travail pour l'utilisation de ces produits varie de manière significative entre les uns des autres, mais ils sont tous d'une certaine manière orientée afin de faciliter le processus d'exposer une formation de R modèle en tant que service:
Vous pouvez créer des Api RESTful pour votre R scripts à l'aide de plombier (https://github.com/trestletech/plumber).
J'ai écrit un billet de blog à ce sujet (http://www.knowru.com/blog/how-create-restful-api-for-machine-learning-credit-model-in-r/) à l'aide de déployer les modèles de crédit comme un exemple.
En général, je ne recommande pas PMML parce que les paquets que vous avez utilisé ne prend pas en charge la traduction de PMML.
Elise de Yhat ici.
Comme @Ramnath et @leo9r mentionné, notre logiciel vous permet de mettre n'importe quel R (ou Python, d'ailleurs) modèle directement dans la production via l'API REST d'extrémité.
Nous manipuler en temps réel ou par lots, ainsi que tous les modèle de test et de contrôle de version + des systèmes de gestion associés au processus.
Ce étude de cas nous avons co-écrit avec le VIA SMS peut être utile si vous envisagez sur la façon d'obtenir des modèles de R dans la production (leurs données sci équipe a été recodage en PHP avant d'utiliser Yhat).
Cheers!
Une pratique courante, c'est de marquer un nouveau/mise à jour de données dans R et se déplaçant seulement les résultats (Id, les scores, les probabilités, les autres champs nécessaires) dans l'environnement de production/de l'entrepôt de données.
Je sais que cela a ses limites (peu d'actualise, se fondant sur ELLE, ensemble de données de taille/puissance de calcul des restrictions) et ne peut être à la pointe de répondre à un grand nombre (de vos patrons) sont à la recherche d'; mais pour de nombreux cas d'utilisation cela fonctionne bien (et les coûts de l'environnement!).
Il a été quelques années depuis que la question a été initialement demandé.
Pour de prototypage rapide je dirais que la meilleure approche est d'utiliser la Jupyter Noyau de la Passerelle. Cela vous permet d'ajouter le RESTE des points de terminaison pour n'importe quelle cellule dans votre Jupyter ordinateur portable. Cela fonctionne pour les deux R et Python, selon le noyau que vous utilisez.
Cela signifie que vous pouvez facilement appeler n'importe quel R ou Python code via une interface web. Lorsqu'il est utilisé conjointement avec Docker, il se prête à une microservices approche de déploiement et de mise à l'échelle de votre application.
Voici un article qui vous emmène du début à la fin de rapidement configurer votre Jupyter Portable avec la Jupyter Noyau de la Passerelle.
Apprenez à Construire une Machine Learning Services, Prototype Réel des Applications, et de Déployer votre Travail pour les Utilisateurs
Pour solutions de déménagement à production l'approche de premier plan en 2019 est d'utiliser Kubeflow. Kubeflow a été créé et est maintenu par Google, et a fait de la "mise à l'échelle de l'apprentissage machine (ML) des modèles et de les déployer à la production d'aussi simple que possible."
De leur site web:
Vous d'adapter la configuration à choisir le plates-formes et services que vous souhaitez utiliser pour chaque étape de la ML de flux de travail: la préparation des données, le modèle de la formation, de la prédiction de servir, et de la gestion du service.
Vous pouvez choisir de déployer vos charges de travail localement ou à un environnement de cloud.