传说中的谷歌招聘委员会成员之一,从幕后走出来,教你学系统设计!


一亩三分地论坛

 找回密码
 获取更多干活,快来注册
Babeltime游戏工作室招工程师、美术和策划
Tubi TV招安卓、前端和机器学习工程师
把贵司招聘信息放这里
查看: 1052|回复: 15
收起左侧

[DataScience] 业界中DS/ML应用上线Implementation的问题

[复制链接] |试试Instant~ |关注本帖
chztony 发表于 2017-7-6 04:41:22 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
大家好,相信大部分DS在工作中用Python或者Spark做Demo肯定已经不成问题,但是当大家完成Proof Concept真要上线这个功能或者go into production的时候是怎样处理的? 例如产品或者网站压根不是Python写的(也许可以接驳一个Python Script), Sklearn或者R的ML包有Feature或者数量的限制,真会从0开始做轮子,例如用Java重新写吗?这样成本也太大了,而且估计也没很多人敢打包票这些包比开源的ML包稳定吧。那么在DS不完全熟悉产品或者网站的开发框架的时候,大家都是怎么上线一个功能的呢?


举个具体栗子,例如我们网站需要上线一个像亚麻那样的推荐系统小框,由于是抱着有好过没有的原则,主流用数据调包做Demo的效果已经足够了,也可以用Spark ML Lib中的recommender 包做,同时也觉得调包比我们自己写成本低很多,能更快上线,但是当调了包做完Demo做完PPT老板excited之后该如何具体和SDE沟通? 这里除了DS变成Product Manager之外感觉很难参与具体的Coding开发,毕竟前端有自己的开发体系,也牵涉Data Warehouse那边的数据调用,要求DS自己一个实现Production Code基本是不太可能的(可能是我太渣),同时这事牵涉三个组也不是自己能完全指挥,大家有没有一些建议或者经验可以分享呢?
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
谢谢!
chuck1212 发表于 2017-7-6 05:07:52 | 显示全部楼层
如果是Java可以考虑Spark Java
回复 支持 1 反对 0

使用道具 举报

 楼主| chztony 发表于 2017-7-6 09:42:26 | 显示全部楼层
chuck1212 发表于 2017-7-6 05:07
如果是Java可以考虑Spark Java

能直接调用还好,可能还需要Kafka 之类的Streaming
回复 支持 反对

使用道具 举报

dukecat0613 发表于 2017-7-6 09:55:54 | 显示全部楼层
chztony 发表于 2017-7-6 09:42. 鍥磋鎴戜滑@1point 3 acres
能直接调用还好,可能还需要Kafka 之类的Streaming

我觉得这是个好问题, Kafka 也有scala java的api. 集成在SparkStreaming里面. 我觉得当公司内部prototype 自己的model的时候, 比如recommendation system, spark mllib 是Matrix Factorization, 可是公司内想实现 user-based item-based的时候 是完全自己写嘛, 还是怎么样
回复 支持 反对

使用道具 举报

刷题 发表于 2017-7-6 14:49:04 | 显示全部楼层
以前在国内一个公司就是ml部分封装成一个独立的service,http请求。 这样会慢但是当时ml不在核心功能上就这么将就了
回复 支持 反对

使用道具 举报

 楼主| chztony 发表于 2017-7-6 23:00:27 | 显示全部楼层
dukecat0613 发表于 2017-7-6 09:55
我觉得这是个好问题, Kafka 也有scala java的api. 集成在SparkStreaming里面. 我觉得当公司内部prototype ...

对啊就是发现Spark ML Lib只有ALS这个推荐算法,要是没有的话估要自己写了,其他Classif之类的算法还可以用H2O之类的算法包补充,但是如果自己写算法真是感觉大工程啊还得各种Unit Test, Pressure Test,感觉得整个开发部门同意SDE一起搞才行,而且要是SDE自己不懂那沟通成本也很大
回复 支持 反对

使用道具 举报

 楼主| chztony 发表于 2017-7-6 23:02:27 | 显示全部楼层
刷题 发表于 2017-7-6 14:49
以前在国内一个公司就是ml部分封装成一个独立的service,http请求。 这样会慢但是当时ml不在核心功能上就这 ...

感觉是个方法,也可以和SDE们商量一下
回复 支持 反对

使用道具 举报

dukecat0613 发表于 2017-7-7 00:26:37 | 显示全部楼层
chztony 发表于 2017-7-6 23:02
感觉是个方法,也可以和SDE们商量一下

我觉得这是个好方法, 后端python 建立server端 然后rpc 通信, 但是如果数据量大起来的话, 还是得建分布式
回复 支持 反对

使用道具 举报

glennq 发表于 2017-7-7 14:54:28 | 显示全部楼层
我觉得这个问题的关键在于,你们公司需要
1. 一套ML模型专用的请求返回接口
2. 定下一套常用的ML框架,在这基础上把model training,model save,然后读取训练完的model并以上述接口封装,这整个流程给标准化
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
有了这一套东西之后不管你是service还是in memory都可以适用. from: 1point3acres.com/bbs

另外说到python train,java serve,这并不是不可能,比如tensorflow有现成的java api,直接读取你用python train的model都行

即便是scikit-learn,或者任意python代码,理论上你也可以把cpython通过JNI给embed到JVM里面去,就看你们的SDE怎么搞了
回复 支持 反对

使用道具 举报

 楼主| chztony 发表于 2017-7-8 02:32:52 | 显示全部楼层
glennq 发表于 2017-7-7 14:54
我觉得这个问题的关键在于,你们公司需要
1. 一套ML模型专用的请求返回接口
2. 定下一套常用的ML框架,在 ...

谢谢! 这些方案都得和SDE讨论看看了, 毕竟自己没CS背景能写点OOP懂点基本常识已经很勉强了囧。。
回复 支持 反对

使用道具 举报

glennq 发表于 2017-7-8 11:15:50 | 显示全部楼层
chztony 发表于 2017-7-8 02:32
谢谢! 这些方案都得和SDE讨论看看了, 毕竟自己没CS背景能写点OOP懂点基本常识已经很勉强了囧。。

关键是要让SDE觉得他们能一劳永逸的开发一套工具,然后以后新的模型只要还是用同一个框架(比如tensorflow,scikit-learn,或者spark mllib),就能很方便的用这套工具两三下搞定。
. From 1point 3acres bbs
要是每次有个新模型都得用JAVA重写那谁都受不了
回复 支持 反对

使用道具 举报

小K 发表于 2017-7-8 14:12:05 | 显示全部楼层
这楼的讨论很不错啊
这也是为什么,虽然有SDE,做模型开发的同学还是越能码越好,方便交流合作。
回复 支持 反对

使用道具 举报

demonhunter 发表于 2017-7-8 16:22:53 | 显示全部楼层
本帖最后由 demonhunter 于 2017-7-8 16:25 编辑
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
建议尽量不要用什么JAVA重写,以后很难很难找到其他DS来维护的。

你们要是不做严格意义上online learning,做的model可以l隔一段时间offline re-train一次后把train好的model发给SDE。根据你们的model,他们来implement一个featurel对新用户scoring,当然你们也得做个一个table来收集这些new user的feature,prediction结果,和actual activity。. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷

至于做table这个东西,最好自动化。我们用的是Apache Airflow。.1point3acres缃

BTW,sklearn+Amazon test box instance,handle 几十GB 左右data没什么太大问题。
回复 支持 反对

使用道具 举报

 楼主| chztony 发表于 2017-7-14 21:16:41 | 显示全部楼层
glennq 发表于 2017-7-7 14:54
我觉得这个问题的关键在于,你们公司需要. visit 1point3acres.com for more.
1. 一套ML模型专用的请求返回接口
2. 定下一套常用的ML框架,在 ...

问个小白问题。。请问一下返回这个借口是不是指例如把Python写成一个包封装起来的意思呢?然后整个包给SDE? 那么这个包是存在线上呢还是哪里离线的呢?
回复 支持 反对

使用道具 举报

ppstacy 发表于 2017-7-19 01:30:26 | 显示全部楼层
glennq 发表于 2017-7-7 14:54
我觉得这个问题的关键在于,你们公司需要
1. 一套ML模型专用的请求返回接口
2. 定下一套常用的ML框架,在 ...
. from: 1point3acres.com/bbs
我感觉你提的第一套方案比较可行又可以重复利用。。。 小白一个,但是不知道这些都需要具体怎么实现。有没有一些相关的东西可以分享读一下呀?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-9-21 15:12

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表