R模型部署之道:基于OpenCpu Cloud Server

2017 年 9 月 11 日 R语言中文社区 数据栗子

作者:数据取经团——数据栗子

数据取经团(公众号:zlx19930503)专注R、Python数据分析挖掘、可视化、机器学习等


内容概要:


1、搭建opencpu云服务

2、训练R模型,并打包

3、部署模型


正式内容:


搭建OpenCpu Cloud Server


上期探讨了R模型的pojo部署方法(详见:以莺尾花数据集为例,探讨R模型部署之道),今天探讨下如何使用opencpu搭建restful api,本次还是使用iris数据集。

测试环境:Ubuntu 16.04(14.04下亲测可用)

#requires Ubuntu 16.04 (Xenial)
sudo add-apt-repository -y ppa:opencpu/opencpu-2.0
sudo apt-get update
sudo apt-get upgrade


#install opencpu server
sudo apt-get install -y opencpu-server


#optional
sudo apt-get install -y rstudio-server

当然,除了cloud server版本之外,还有single-user版本(通过安装opencpu包来实现)。对云服务的管理有以下命令:


参考资料:https://www.opencpu.org/download.html


训练R模型,并打包


  • 训练R模型

通过glmnet包构建多分类模型:

#加载包
library(glmnet)

#准备数据
x = as.matrix(iris[,1:4])
y = iris[,5]
y <- as.factor(y)

#建立模型
model = glmnet(x,y,family ="multinomial")
save(model, file='model.rda')

将模型保存为rda格式,以备后用。


  • 编写预测函数,并将模型打包

#编写预测函数
predfunc = function(input){
   input = as.matrix(input)
      result = glmnet::predict.multnet(model,newx =input,type='class',s=0.01)
      as.character(result)
}

1、创建一个R project:test(推荐使用rstudio),将上面的预测函数写到R脚本中:


2、测试下预测函数是否可用:

#构建新数据,并预测
newx = data.frame(Sepal.Length=5.1,
                               Sepal.Width=3.5,
                               Petal.Length=1.4,
                               Petal.Width=0.2)
predfunc(newx)


3、将训练好的model.rda放在test文件下的data目录中(如果没有请自己新建一个test文件夹)


4、build package

点击Build下的more-Build Source Package


可以看到build成功,并保存在如下位置:


部署模型


1、为了能让opencpu调用这个包,需要将包安装在global library下

sudo R CMD INSTALL/home/lee/Desktop/test_0.1.0.tar.gz --library=/usr/local/lib/R/site-library


2、除了安装我们制作的包外,还需要安装模型依赖的包(比如:本文中的glmnet包)



依赖包可能存在更多的依赖(比如glmnet依赖foreach、iterators),除了下载后安装外(wget、sudo R CMD INSTALL),还可以通过以下方式实现自动解决依赖问题(切换用户安装):


3、安装完毕后,可以通过如下方式查看:


通过制定预测函数所在位置、需要传入的新数据,就可以进行预测了,预测结果见右上方区域。


还可以通过curl的方式来进行调用:


curl http://192.168.26.137/ocpu/library/test/R/predfunc/json -H "Content-Type:application/json" -d '{"input" :[ {"Sepal.Length":1.1,"Sepal.Width" : 2.5, "Petal.Length":0.4,"Petal.Width":0.9}]}'

关于性能优化的建议


1、将涉及的依赖包preload

修改/etc/opencpu/server.conf

sudo vim  /etc/opencpu/server.conf

2、一些其他参数


timelimit.post (timeout)

rlimit.as (memlimit)

rlimit.fsize(disk limit)

rlimit.nproc (parallelprocess limit)


参考资料:https://www.opencpu.org/posts/scoring-engine/

PS:

本次临时添加了基于opencpu的实现方式,后期会对其他两种方式进行探讨,敬请期待。



微信回复关键字即可学习

回复 R              R语言快速入门免费视频 
回复 统计          统计方法及其在R中的实现
回复 用户画像   民生银行客户画像搭建与应用 
回复 大数据      大数据系列免费视频教程
回复 可视化      利用R语言做数据可视化
回复 数据挖掘   数据挖掘算法原理解释与应用
回复 机器学习   R&Python机器学习入门 


登录查看更多
0

相关内容

服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
【Amazon】使用预先训练的Transformer模型进行数据增强
专知会员服务
56+阅读 · 2020年3月6日
【Google AI】开源NoisyStudent:自监督图像分类
专知会员服务
54+阅读 · 2020年2月18日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
利用 AutoML 的功能构建和部署 TensorFlow.js 模型
TensorFlow
6+阅读 · 2019年12月16日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
R工程化—Rest API 之plumber包
R语言中文社区
11+阅读 · 2018年12月25日
手把手教你搭建caffe及手写数字识别
七月在线实验室
12+阅读 · 2017年11月22日
深度学习实战(二)——基于Keras 的深度学习
乐享数据DataScientists
15+阅读 · 2017年7月13日
Arxiv
24+阅读 · 2020年3月11日
Arxiv
6+阅读 · 2020年2月15日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Arxiv
3+阅读 · 2019年3月1日
Semantics of Data Mining Services in Cloud Computing
Arxiv
4+阅读 · 2018年10月5日
Arxiv
14+阅读 · 2018年4月18日
Arxiv
6+阅读 · 2018年2月7日
VIP会员
相关VIP内容
【Amazon】使用预先训练的Transformer模型进行数据增强
专知会员服务
56+阅读 · 2020年3月6日
【Google AI】开源NoisyStudent:自监督图像分类
专知会员服务
54+阅读 · 2020年2月18日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
相关资讯
利用 AutoML 的功能构建和部署 TensorFlow.js 模型
TensorFlow
6+阅读 · 2019年12月16日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
R工程化—Rest API 之plumber包
R语言中文社区
11+阅读 · 2018年12月25日
手把手教你搭建caffe及手写数字识别
七月在线实验室
12+阅读 · 2017年11月22日
深度学习实战(二)——基于Keras 的深度学习
乐享数据DataScientists
15+阅读 · 2017年7月13日
相关论文
Arxiv
24+阅读 · 2020年3月11日
Arxiv
6+阅读 · 2020年2月15日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Arxiv
3+阅读 · 2019年3月1日
Semantics of Data Mining Services in Cloud Computing
Arxiv
4+阅读 · 2018年10月5日
Arxiv
14+阅读 · 2018年4月18日
Arxiv
6+阅读 · 2018年2月7日
Top
微信扫码咨询专知VIP会员