首页 > 其他分享 >R语言模型部署方法总结

R语言模型部署方法总结

时间:2023-11-11 16:46:18浏览次数:43  
标签:总结 openCPU 语言 部署 模型 httpuv https

目录

模型部署概述

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

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

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

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

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

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

这里小编介绍几个有关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.html
https://github.com/rexyai/RestRserve

结语

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

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

参考资料:

Deployment stage of the Team Data Science Process lifecycle

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

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

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

标签:总结,openCPU,语言,部署,模型,httpuv,https
From: https://www.cnblogs.com/miyuanbiotech/p/17826045.html

相关文章

  • 11.10每日总结
    完全引入//1.安装依赖-生产依赖npminstallelement-ui-S12//main.jsimportVuefrom'vue';importElementUIfrom'element-ui';//2.1引入结构import'element-ui/lib/theme-chalk/index.css';//2.2引入样式importAppfrom'./App.vue';Vue.us......
  • 2023-2024-1 20232401 《网络》第10周学习总结
    2023-2024-120232401《网络》第10周学习总结教材内容学习总结网络空间安全导论第一章思维导图教材学习中的问题和解决过程问题1:制作思维导图困难问题1解决方案:经同学推荐寻得便捷的思维导图制作工具问题2:不了解markdown语法问题2解决方案:仔细研读了老师提供的资料基于......
  • 部署 cri-dockerd
    下载cri-dockerdwgethttps://github.com/Mirantis/cri-dockerd/releases/download/v0.3.7/cri-dockerd-0.3.7.amd64.tgz解压cri-dockerdtarxfcri-dockerd-0.3.7.amd64.tgzcdcri-dockerd安装cri-dockerdinstall-oroot-groot-m0755cri-dockerd/usr/local/bin/c......
  • 预热篇1:大模型训练显卡选型
    AI模型训练主要使用GPU的算力,GPU,显卡这些知识大家都懂的,还是简单说一下GPU吧:GPU是显卡的核心部分,GPU承担着与CPU不同的定位和功能,芯片设计思路也完全不同,GPUCore小而且多,它不承担系统管理、调度的功能,完全专注于使用(大量的)小核心并行化地执行运算。GPU的几个主要用途:1、......
  • 10.30-11.5总结
    packagesimplePhone;publicabstractclassPhone{publicabstractvoidvoice();}packagesimplePhone;publicclassSimplePhoneextendsPhone{publicSimplePhone(){System.out.println("这是一部简单手机");}@Overridepublicvoidvoice(){Sys......
  • 2023-2024-1-20231317 计算机基础与程序设计第七周学习总结
    这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第七周作业)这个作业的目标<《计算机科学概论第8章》《C语言程序设计第6章》>作业正文https://www.cnblogs.com/Ter......
  • 11.6-11.12总结
    includeincludeincludeusingnamespacestd;classAbstractFile{public:virtualvoidadd(AbstractFile*element)=0;virtualvoidremove(AbstractFile*element)=0;virtualvoiddisplay()=0;};classVideoFile:publicAbstractFile{private:stringf......
  • Ecplise导入Maven项目总结
        最近做项目,需要eclipse中导入maven项目,需要一些配置,总结如下:前提:   电脑中安装了Maven并且已经在Eclipse中加入了Maven插件。   Eclipse中配置好了能运行的Tomcat。1、在Eclipse中点击"File"->Import->Maven,选择ExistingMavenProjects   2、选择你......
  • DM8数据库单机部署
    1.环境主备X86contos7 64位ulimit-adatasegsize          (kbytes,-d)unlimitedfilesize              (blocks,-f)unlimitedopenfiles                     (-n)65537virtualmemory         (kbytes,-v......
  • 2023-2024-1 20231327《计算机基础与程序设计》第7周学习总结
    学期(2023-2024-1)学号(20231327)《计算机基础与程序设计》第7周学习总结作业信息课程<班级的链接>(2023-2024-1-计算机基础与程序设计)要求<作业要求的链接>(2023-2024-1计算机基础与程序设计第7周作业)目标<了解并使用循环结构>作业正文https://i.cnblogs.com/p......