R语言模型部署方法总结
  9I7LB4GWbUFD 2023年11月30日 23 0

目录

  • 模型部署概述
  • R语言模型云端/服务器部署
  • httpuv
  • jug
  • opencpu
  • fiery
  • plumber
  • Rserve
  • RestRserve
  • 结语

模型部署概述

数据科学项目的生命周期通常以迭代方式执行以下主要阶段:

  • 业务理解(Business understanding)
  • 数据采集和理解(Data acquisition and understanding)
  • 建模(Modeling)
  • 部署(Deployment)
  • 客户接受度(Customer acceptance )

R语言模型部署方法总结_语言模型

学术界很多数据科学项目,包括模型建立、特征选择及模型验证等过程,基本上完成了模型评价也就意味着项目结束。而在工业界商业应用中,模型部署才标志着一个项目开发的阶段性结束。

模型部署的价值主要体现在以下两点:

  • 赋予数据科学模型处理新数据的能力,可以是实时的流数据,或者是积累的批数据。
  • 在实际应用场景中完成模型效果与性能的反馈,为模型调整提供依据,实现建模开发流程的闭环。

模型不能只停留在线下的分析报告中,训练好的模型如何应用到生产环境?

这里小编介绍几个有关R语言模型部署生产环境应用的方法,其他语言模型也都有对应工具,很多都是想通的。比如Python在深度学习方面的模型部署,由TensorFlow 社区开发的 Tensorflow Lite 工具能翻译转换 tensorflow 预训练模型至 TensorFlow Lite 文件格式,然后用其他的接口来调用模型文件实现部署。也可以用 httpserver、flask、django 等搭建网络框架来部署。

以下是R语言模型部署的几种常见方式:

  • 一是最简单的是离线部署,如Rscript model.R
  • 二是用其他语言来调用R脚本,比如Java、Python等。
  • 三是生成PMML(Predictive Model Markup Language)文件,目前主流的一些R语言模型均支持PMML,比如xgboost、lightGBM等,其他语言不需要调用R脚本,只需调用统一的PMML文件就可以,它适合应用在实时、大规模数据量的场景。
  • 四是用R shiny,这个与R生态浑然一体,完全可以不了解其他语言。
  • 五是web端的部署,比如做成REST API的方式供其他语言调用,或直接做成web应用供其他人访问。

其他更多R语言模型的部署方式可参考:CRAN Task View: Model Deployment with R

R语言模型云端/服务器部署

这里主要针对于R语言模型的web端部署,即通过在服务器上开启一个服务的方式来部署模型。

httpuv

httpuv是相对比较底层的R包,熟练使用需要掌握前端知识,并且需要用到RCurl、httr相关爬虫包的一些东西,不太建议这种方式进行模型的部署。

httpuv使得在R中处理http以及websocket请求成为现实,作为基础包,后续的httpuv、opencpu、fiery 和 plumber等都是基于它进行的二次开发。

httpuv文档:https://github.com/rstudio/httpuv

jug

jug是一个微型的轻量级框架,基于httpuv包,为的是部署R代码更简单。它不是一个高效的框架,作用是轻松为R代码创建API,简单灵活。目前开发已终止。

jug文档:http://bart6114.github.io/jug/index.html

opencpu

openCPU应用程序是包含在R包中的静态网页(html、css、js),它们通过openCPU API连接此包中的R函数。openCPU的响应时间比较长。

使用openCPU做模型部署遵循以下一般的开发流程:

  • 把要上线的功能写个 R 包
  • 编译安装 R 包
  • 开启 opencpu 的服务器部署模型
  • 连接该端口

openCPU文档:https://www.opencpu.org/api.html

fiery

fiery(热情似火)用复杂度换取服务的灵活性,可以在 R 代码中嵌编辑 html 代码来定制服务。响应时间比openCPU快很多。

fiery文档:https://github.com/thomasp85/fiery

plumber

响应速度很快。学习曲线平缓,对于缺乏 http 请求与 html 语言的小白也不妨碍入门使用这个包。

plumber文档:https://www.rplumber.io/

Rserve

Rserve基于TCP/IP协议,允许R与其他语言通信,提供远程连接、认证、文件传输等功能。可以设计R做为后台服务,处理统计建模、数据分析、绘图等的任务。

Rseve文档:https://rforge.net/Rserve/

RestRserve

RestRserve 是一个 R Web API 框架,用于构建高性能且可靠的微服务和应用后端。在类UNIX系统和Rserve后端上,RestRserve并行处理请求:每个请求都在一个单独的分支中(归功于Simon Urbanek)。由于并行,其响应速度号称比plumber还快20倍。

RestRserve文档:
https://restrserve.org/articles/RestRserve.htmlhttps://github.com/rexyai/RestRserve

结语

模型部署完毕,可以用mailR和Rweixin两个R包来和邮件与微信通信,用于线上化部署的监测。

当然不止模型部署,其他数据工程项目也是可以用这样方式来调用R的,本质上是调R包或函数。

参考资料:

Deployment stage of the Team Data Science Process lifecycle

统计之都 | R语言实战之模型部署

徐静 | R语言模型部署实战

更多信息请关注微信公众号:生物信息与育种

R语言模型部署方法总结_github_02

作者:生物信息与育种,请关注同名微信公众号:生物信息与育种。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月30日 0

暂无评论

推荐阅读
9I7LB4GWbUFD