携程大数据平台总监张翼 - 携程Spark算法平台及其应用
2020-02-27 385浏览
- 1.携程Spark算法平台及其应用 2016-12-10
- 2.公司简介 携程旅游网成立于1999年,总部设在上海, 目前有员工30000余人 2003年12月9日在美国纳斯达克成功上市 携程拥有超过2.5亿的注册会员 酒店预订:在全球200多个国家和地区拥有 超过120万家酒店的会员酒店 机票预订:产品覆盖全球六大洲5000多大 中城市 旅游度假:线路产品覆盖超过100多个目的 地国家和地区;2015年大陆地区度假产品 的服务人次超过2000万
- 3.我的介绍 浙江大学本科,硕士毕业 近10年工作经验,5年大数据架构的经 验 之前在eBay中国研发中心和大众点评工 作过,从0开始组建团队,搭建起大众 点评数据平台的基础架构 目前是携程的大数据平台总监 关注大数据系统领域的发展,对Hadoop, HIVE,HBASE,Spark,Storm等有所研 究,致力于大数据系统和业务场景的结 合和落地,使数据和系统都能够对业务 (Business)产生价值
- 4.目录 背景介绍 算法平台的功能 算法平台的架构和实现 算法平台的应用 算法平台未来的方向
- 5.平台缘起 大背景:随着携程的业务发展,各个BU的机器学习的应用越来越多,训练 的数据集也越来越大,单机的模型训练方式很难满足实际的需要,所以越 来越多的同学会考虑使用Spark进行训练 直接使用Spark进行模型训练的难点(特别是对于非工程背景的数据科学 家): • 入门时间较长 • 环境设置麻烦 • 程序调试困难 • 关注太多细节 • 独立开发,经验,代码无法分享
- 6.平台基本目标 服务工程经验较少的数据科学家 • 无需编程,模块拖拽完成模型训练处理流程的构建 • 执行过程可视化 • 方便地数据探索功能 覆盖机器学习应用的整个生命周期 • 覆盖模型训练,导出,线上服务整个机器学习应用的生命周期 系统开放,高度可定制 • 简便地模块定制,分享(适合工程能力强的资深用户)
- 7.目录 背景介绍 算法平台的功能 算法平台的架构和实现 算法平台的应用 算法平台未来的方向
- 8.平台功能简介 整个平台由以下4个功能模块构成: • 模型训练 • 创建模型训练流程(Pipeline) • 运行和调试模型训练流程 • 数据探索 • 模块定制(高级) • 训练结果导出 • 线上服务的开发支持
- 9.机器学习Sample Case 使用协同过滤算法进行电影推荐(Data from Ne5lex) 1. 训练数据(用户对于电影的评分数据) 2. 分流(训练集 / 测试级 7:3) 3. 模型训练 4. 模型检验
- 10.模型训练 – 流程创建 1. 点击相应模块,拖拽构成整个训练的流程
- 11.模型训练 – 流程创建 2. 填写相关模块的参数
- 12.模型训练 – 模块详解 模块分为两种类型: • Transformer – 输入是1或多个DataFrame,输出是1或多个DataFrame • Model Trainer - 输入是1或多个DataFrame,输出是一个Model • 特殊模块 Model Transformer — 输入1个模型, 1或多个DataFrame,输出 1或多个DataFrame
- 13.模型训练 - 训练模型的运行和调试
- 14.模型训练 - Scala和Python自定义模块
- 15.模型训练 - 数据预览 对于每个模块输出的DataFrame,我们都提供了数据预览和用户自定义 SQL(SparkSQL)查询的功能
- 16.模型训练 - 数据探索 数据绘图:集成Pandas,matplotlib
- 17.模块定制 模块代码: • 一段普通的Spark的代 码 • 参数使用特殊的占位符 • 参数信息自动识别为配 置项 * 如果模块需要保存,则 相关逻辑必须封装为 spark.ml包中Transformer 和EsImator的形式
- 18.训练结果的导出 导出的训练模型会保存在HDFS相关的路径下
- 19.训练结果的导出 查看已经保存的模型
- 20.线上服务开发的支持 提供Jar包,用户只要在maven中 添加依赖,就能够使用相关的 API 开发步骤: 1. 初始化 2. 将输入数据转化为DataFrame 3. Load起已经保存的 Transformer和Model 4. 按照顺序调用Transform和 predict方法
- 21.目录 背景介绍 算法平台的功能 算法平台的架构和实现 算法平台的应用 算法平台未来的方向
- 22.总体架构 start Web Server run Zeppelin ThriW Server start Spark-Repl SparkIMain interpret create SparkContext YARN Cluster
- 23.总体架构2 每个训练任务(称为pipeline)会单独起一个Zeppelin的ThriW Server 初始化(Lazy): • Web Server调用Marathon(Mesos)的Res5ul API启动Zepplin ThriW Server • Zepplin ThriW Server会在YARN集群中创建一个常驻的Spark任务 执行: • Web Server中集成了Zeppelin Client,我们先将Pipeline和Module映射成为 Zeppelin的Note和Paragraph,然后就会被提交到Zeppelin的ThriW Server执 行 • Zeppelin的ThriW Server使用Spark-Repl(Spark的交互界面就是使用这个实 现的),将scala的代码编译后提交到常驻在YARN集群的Spark任务中执行
- 24.执行引擎 - Docker 负责Zeppelin ThriW Server的生命周期的管理 Web Server API API 执行引擎 Host Machine Container1 Container2 … Hive / Spark / Hadoop Env Marathon Mesos HM 2 …
- 25.执行引擎 - Zeppelin Spark IMain Spark Interpreter Web Server Zeppelin Client RemoteInterpreterServer Notebook 将CML Studio的pipeline和module 转换为zeppelin的Note和paragraph ZeppelinThriWServer PySpark Interpreter ThriW Server SparkSQL Interpreter ……
- 26.技术选型的考虑 选择Docker和Zeppelin的原因: • Mesos提供了方便的资源管理的功能 • Marathon提供了简便的应用管理的功能 • Zeppelin则提供了一个Spark交互执行的引擎 由于人力资源的原因,使我们选择使用开源产品或是在开源项目的基础上 进行2次开发 • 整体加速了项目的进展 • 在二次开发的过程中锻炼了团队的技术能力
- 27.经验分享 • 不断的打磨产品 • 目前的产品形态经过了几个不同版本的演化 • 产品的易用性和稳定性是它的生命,关注使用细节 • Example1 最初版本每个模块的结果都会落地,每个模块的输入输 出都是需要用户手动填写的 • Example2 批量结果导出的功能在最初的版本中不存在,只提供用 户手动导出单个模块的训练结果的功能 • Example 3 数据探索的功能是根据用户的需求加入的
- 28.技术经验和踩过的坑 技术经验分享(具体技术点) 1. Python代码模块的加入:将Input的Dataframe注册成为临时表 2. Spark资源的释放:Zeppelin的后端获取到当前Zeppelin ThriW Server的状 态,如果状态超过一定时间为NO_OP,则关闭它 3. XGBoost模块加入过程中的经验 •hcps://github.com/dmlc/xgboost/issues/1276nWorkers的值不能大于可用的核数,否则会出现Hang住不动的情 况 •hcps://github.com/dmlc/xgboost/issues/1284
- 29.目录 背景介绍 算法平台的功能 算法平台的架构和实现 算法平台的应用 算法平台未来的方向
- 30.机票 - 产品智能推荐 用户在携程上购买机票后, 携程会给他们推荐一些机票 的附加产品 我们根据 • 用户历史的购买行为的 信息 • 用户画像的信息 • 航班本身的信息 来预测用户购买这些产品的 概率,从而来决定是否默认 帮用户勾选上某些产品
- 31.机票 - 客服话务量预测 根据 • 天气(主要) • 航班的信息 • 其他信息 来预测需要的客服人员的 数量(每周一次) 根据预测的客服的需求量 进行客服的自动排班
- 32.度假 - 刷单行为的识别 1 度假平台上零售、代理产品的刷单比较猖獗,据估计非自营刷单占到订单 整体的30%左右。这些刷单产生了严重的负面影响,亟待清理。 全全5分5分好好评评 评评论论无无图图 评评论论均均来来自自PCP端C端 点点评评时时间间均均在在工工作作时时间间 典典型型刷刷单单 总总有有差差评评 评评论论带带图图 评评论论AAPPP、P、PCP都C都有有 点点评评时时间间分分散散 正正常常产产品品
- 33.度假 - 刷单行为的识别 2 携程外网 基础数据 人工正例 恢复销 量点评 机器学习 规则系统 申诉渠道 人工负 例 刷单惩罚平台 在刷单识别项目开展初期,通过总 结业务经验、对各维度数据进行统 计分析,拟定了一系列规则来识别 刷单,取得的一定的进展 将繁复的人工规则设定、阈值调节 工作转化为新特征的整理,并通过 各个渠道积累正例和反例 通过分类(主要使用XgBoost)的 方式训练出自动判别刷单行为的模 型
- 34.目录 背景介绍 算法平台的功能 算法平台的架构和实现 算法平台的应用 算法平台未来的方向
- 35.未来的方向 近期的工作: • 进一步加强数据探索的功能 • 通用模块易用性的加强 • 集成Cross ValidaIon的功能 • 适配Spark2.0 未来的方向: • 数据流功能的通用化,支持Spark之外的Module • 项目开源
- 36.WE ARE HIRING! yi.zhanga@ctrip.com 对大数据技术感兴趣 “程序员” 有产品思维的“攻城师” 欢迎加入我们! 共同打造业界领先的数 据平台和数据应用! 通过数据的技术让更多 人的旅行更加精彩和幸 福!
- 37.THANKS