模型部署

作者: Liam_ml | 来源:发表于2018-09-17 13:48 被阅读111次

一个比较完整的数据挖掘过程包括

  1. 业务理解
  2. 数据理解
  3. 数据处理
  4. 构建模型
  5. 模型评价
  6. 模型部署

本文讲最后一个步骤,模型部署。
好的数据科学家和好的写作适用于同样的规则:展现出来。一个成功的数据科学项目应该包含一个演示部署,该演示部署包括所有已经研发好的技术和模型。好的文档编制和展现是至关重要的,但在某个时候,人们必须看到效果并且能够亲自测试。所以我鼓励你与一个开发小组进行合作,创建一个模型的产品,而一个好的演示可以帮助你招募这些合作者。

部署方法

  1. 批处理,在R中引入数据,对数据进行打分,然后把它写出来。
  2. 跨语言链接,R向另外一个语言的查询提供答案,R是有效的跨语言调用方式进行涉及的(Pccp)
  3. 服务,为了把新数据看作成为一个HTTP查询并返回结果,可以把R设置成为一个HTTP服务
  4. 输出,数据科学家可以通过输出模型和代码说明书来评价模型
  5. PMML(预测模型标记语言),许多建模工具包可以对其导入和导出的一个可共享的XML格式。如果生成的模型被涵盖在R的工具包pmml中,那么你不需要在编写额外的代码就可以导出他。任何软件栈有了该模型的导入期都可以使用你的模型。

这里介绍将一个模型部署成为一个http服务:


library(Rook)   # Note: 1 
# load('thRS500.Rdata')     # Note: 2 
library(randomForest)   # Note: 3 
numericPositions <- sapply(buzztrain[,varslist],is.numeric)     # Note: 4 

modelFn <- function(env) {  # Note: 5 
  errors <- c()
  warnings <- c()
  val <- c()
  row <- c()
  tryCatch(
    {
      arg <- Multipart$parse(env)   # Note: 6 
      row <- as.list(arg[varslist])
      names(row) <- varslist
      row[numericPositions] <- as.numeric(row[numericPositions])
      frame <- data.frame(row)
      val <- predict(fmodel,newdata=frame)
    },
    warning = function(w) { message(w)
      warnings <<- c(warnings,as.character(w)) },
    error = function(e) { message(e)
      errors <<- c(errors,as.character(e)) }
  )
  body <- paste(    # Note: 7 
    'val=',val,'\n',
    'nerrors=',length(errors),'\n',
    'nwarnings=',length(warnings),'\n',
    'query=',env$QUERY_STRING,'\n',
    'errors=',paste(errors,collapse=' '),'\n',
    'warnings=',paste(warnings,collapse=' '),'\n',
    'data row','\n',
    paste(capture.output(print(row)),collapse='\n'),'\n',
    sep='')
  list(
    status=ifelse(length(errors)<=0,200L,400L),
    headers=list('Content-Type' = 'text/text'),
    body=body )
}


s <- Rhttpd$new()   # Note: 8 
s$add(name="modelFn",app=modelFn)   # Note: 9 
s$start()   # Note: 10 
print(s)
## Server started on 127.0.0.1:20714
## [1] modelFn http://127.0.0.1:20714/custom/modelFn    # Note: 11 
## 
## Call browse() with an index number or name to run an application.

# Note 1: 
#   Load the rook HTTP server library. 

# Note 2: 
#   Load the saved buzz workspace (includes the 
#   random forest model). 

# Note 3: 
#   Load the random forest library (loading the 
#   workspace doesn’t load the library). 

# Note 4: 
#   Determine which variables are numeric (in the 
#   rook server, everything defaults to 
#   character). 

# Note 5: 
#   Declare the modeling service. 

# Note 6: 
#   This block does the actual work: parse data 
#   and apply the model. 

# Note 7: 
#   Format results, place in a list, and 
#   return. 

# Note 8: 
#   Start a new rook HTTP service. 

# Note 9: 
#   Register our model function as an HTTP 
#   service. 

# Note 10: 
#   Start the HTTP server. 

# Note 11: 
#   This is the URL where the service is 
#   running. 

rowAsForm <- function(url,row) {    # Note: 1 
  s <- paste('<HTML><HEAD></HEAD><BODY><FORM action="',url,
             '" enctype="multipart/form-data" method="POST">\n',sep='')
  s <- paste(s,'<input type="submit" value="Send"/>',sep='\n')
  qpaste <- function(a,b) {
    paste('<p> ',a,' <input type="text" name="',a,
          '" value="',b,'"/> </p>',sep='') }
  assignments <- mapply('qpaste',varslist,as.list(row)[varslist])
  s <- paste(s,paste(assignments,collapse='\n'),sep='\n')
  s <- paste(s,'</FORM></BODY></HTML>',sep='\n')
  s
}

url <- 'http://127.0.0.1:20714/custom/modelFn'  # Note: 2 
cat(rowAsForm(url,buzztest[7,]),file='buzztest7.html')  # Note: 3

然后你的文件文件里面就会出现:


image.png

用浏览器打开:


image.png

学会了这些,你就是一个完成end to end 的数据科学家,从业务的理解,建模,到模型的部署展示。你知道了数据科学项目的完整流程,你可以开始组建你自己的团队,当然我的建议是,继续充实你自己的知识,还有很多部署模型的方式,学习他们,然后去驾驭他们。

这还是很令人激动的

相关文章

  • 自动部署开源AI模型到生产环境:Scikit-learn、XGB

    目录 背景介绍 部署准备 部署Scikit-learn模型 部署XGBoost模型 部署LightGBM模型 部署...

  • 自动部署深度神经网络模型TensorFlow(Keras)到生产

    目录 Keras简介 Keras模型分类 Keras模型部署准备 默认部署Keras模型 自定义部署Keras模型...

  • TF各类资源

    模型部署 TF Serving部署TensorFlow模型how-to-deploy-tensorflow-mod...

  • 使用开源AI-Serving部署推断PMML和ONNX模型

    目录 AI-Serving介绍 部署PMML模型 部署ONNX模型 总结 参考 AI-Serving介绍 AI-S...

  • 模型数据热更新——reload模块

    背景 当模型部署之后,后期需要对数据进行日常更新。此时,部署的服务不可以停止,因此模型数据需要热更新。 模型数据热...

  • 模型部署

    最近发现了两个比较好的工具和方法,未来会进行详细的探索和分析; H2O.AI ,H2O.ai,提供了MOJO和PO...

  • 模型部署

    一个比较完整的数据挖掘过程包括 业务理解 数据理解 数据处理 构建模型 模型评价 模型部署 本文讲最后一个步骤,模...

  • 模型部署

    1.https://zhuanlan.zhihu.com/p/103693973(深度学习模型部署的那些事儿) 2...

  • 模型部署

    添加5000端口,发现防火墙关了。加不了。查看一下防火墙状态。 尝试打开防火墙,发现unit is masked。...

  • 模型部署

    一、深度模型线上部署1、预训练embedding+轻量级模型复杂网络离线训练,生成embedding存入内存数据库...

网友评论

    本文标题:模型部署

    本文链接:https://www.haomeiwen.com/subject/xtrknftx.html