predictionIO调研

做算法训练 如果了解套路后,其实就那些步骤,当我们如果想把模型发布成为服务,这就是工程学的内容,model serving,从现在来看 把模型部署成服务 接受前端实时请求调用预测,其实就跟 后端查数据库有点类似。模型训练简单 ,部署成服务还真不太容易。模型调参 特征工程 rawdata convert to vector ,模型热部署 模型切换 模型定时调参 模型的存储 模型的版本控制 模型的特征存储 多个模型同时发布服务 同时在线做预测 ,多种算法切换和集成 串行 并行,模型的监控 跟踪 预测请求的存储和监控 效果监控,在线的训练 并发请求 抗压性能等等,所以你看其实挺不简单的。

接着我们调研了看市面上有没有像样的model serving的开源工具,当然我之前对predictionio 有印象 ,其实还有其他的
然后 开始调研 preditionio ,查看他官网的英文文档,我发现毫无标准 目标的看 官方tutorial ,其实效率蛮低的,看完就忘记了,后来和leader 沟通,就咨询他对于 他想要的model serving 要达到哪些指标 哪些性能符合了才会选型,也幸亏问了,如果没问,leader 再回头问我 调研的如何了,我可能还会吱吱呜呜 说不出来,但是leader 讲了他的想法 ,他认为他哪些功能特性是比较重要的,比如说 是否支持 pmml 文件部署 ,是否支持python stack 开发调用,是否支持实时预测,是否支持 监控跟踪 是否支持模型的存储和版本控制 ,是否支持多个模型同事在线部署服务。。。 我就照着领导的要求 有重点的去翻看tutorial中的具体体现,寻找到答案我就记下来,最后当然按照 leader的想法我找到了大部分答案,没有找到答案的,我就开始使用官方给的安装使用介绍,去安装服务 使用template demo 展开测试。

自己用了用 ,感觉也熟了 ,就有了操作的敏感性,对他有了更深层次的印象。
为了查看在官方没有找到的答案,我只能去看源码,在带着问题思考不断翻看源码找到了 一部分答案,更加确认 predictionio 执行调用过程 架构原理

而且我还是把调研的结果写成了一个word 文档,不过最后 leader并不太满意 predictionio ,因为predictionio 一部分不太符合我们的业务场景
比如说predictionio 服务端暂时只有java scala ,团队都是python技术栈
prediction 依赖spark 太重,predictionio 对多个模型同时部署还不够友好
prediction的model存储 版本控制比较简陋
predictionio 还不支持 pmml 文件的热部署,等等
不过我看网上 ,台湾竟然有predictionio 的培训,三万新台币培训费 三天

predictionio

支持 多种数据库 mysql postgresql hbase elasticsearch,模型最后是存储在数据库中
以大数据格式存储

可以接受 curl post restful 请求调用预测
接受client 程序 编码调用 支持 scala 和python
支持 batchpredict 批量文件的请求调用
操作由 串行命令组成
先run eventserver 监听服务 pio eventserver --ip 127.0.0.1 --port 7070 &
然后 importdata 批量导入训练数据 python3 ./data/import_sever.py
然后 将本地的模型项目 build 打成 jar 包, pio build

然后执行训练,训练在spark 上进行,pio build
训练成功后 会生成模型 并将模型存储持久化,
之后 deploy 部署模型在线服务 pio deploy
之后展开预测
pio batachpredict --input bp.json --output batchpredict.json
curl -H "Content-Type: application/json" -d '{ "attr0" :59,"attr1" :30,"attr2" : 18}' \http://localhost:8000/queries.json
或者程序化 集成client 发送 预测请求

predictionio 最大的特点就是将模型 部署成在线服务可以被实时调用预测,压测还没有做,不过认为 异步编程 future调用是比较符合场景的
算法 原生支持spark 的所有算法,predictionio 最开始主要是针对 推荐系统做的,现在是 基本支持集成所有算法,spark mllib xgboost deeplearning4j libtensorflow
并且支持同时多个算法串行预测
算法训练的超参数是写在 配置文件json中,遇到模型修改 ,直接修改配置文件的模型超参数即可然后重新build train deploy 即可
pio 默认在8000 端口会有监控】
pio 可以和 已有的监控软件集成监控 moint
pio 服务端开发 暂时只支持 java scala ,客户端预测 支持 python scala java ruby
predictionio 环境 在 linux centos7 和mac 上都进行了末班代码的尝试,均成功, predictionio 暂时不支持windows

以下较为重要的是
pio 是否支持支持 多个模型在线服务 同时在线,在进行预测的时候如何指定 使用哪个模型预测, 只要 pio deploy 可以指定端口基本就没有问题

pio 是否支持 模型的热切换, 同一个端口,更换模型,一 即支持数据库已有模型的回溯部署 2 又支持新的模型训练后即部署 中间可以不停止服务 这个原理抓请 每个 app 与模型的对应关系,如何去数据库去load 模型部署原理

pio 是如何唤起选择数据库的哪个模型部署的原理 步骤

pio 在训练时候是如何选择spark 做训练 是否可以支持其他原生训练 比如 xgb lgbm sklearn

pio 是否可以跳过训练过程 直接将pmml 文件转换成模型 持久化 并部署 进行预测

image.png

image.png
image.png
image.png

Predictionio 大致分为五大组件
DataSource
作为读取数据 支持 本地数据 hdfs 数据 和elasticSearch hbase数据
DATA preparatory
主要是把DataSource中读到的数据转换为模型可以使用数据格式 ,特征工程可以在这里做

Algorithm 主要是算法的训练和预测的,可以集成多种算法实现
Serving 是在 deploy 后执行在线预测服务的
Evaluation Metrics 作为 评估模型效果
最终使用 Engine 串联起这些组件来

个人认为如果要使用predictionio 1.可以减小研发工期 2.监控可以触达3.需要了解相应 组件的调用关系 原理 4.使用中可能需要面临二次开发 中间灵活调用各个过程组件


image.png
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容