792 机器学习成熟的机器学习流如何设计;关于机器学习算法 你需要了解的东西.docxVIP

792 机器学习成熟的机器学习流如何设计;关于机器学习算法 你需要了解的东西.docx

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【机器学习】成熟的机器学习流如何设计;关于机器学习算法 你需要了解的东西 2017-09-02 原文 成熟的机器学习流如何设计:微博大规模机器学习框架Weiflow揭秘 高可用架构? 在机器学习流中,模型训练只是其中耗时最短的一环。假如把机器学习流比作烹饪,那么模型训练就是最终翻炒的过程;烹饪的大部分时间实际上都花在了食材、佐料的选择,洗菜、择菜,食材再加工(切丁、切块、过油、预热)等步骤。 在微博的机器学习流中,原始样本生成、数据处理、特征工程、训练样本生成、模型后期的测试、评估等步骤所需要投入的时间和精力,占据了整个流程的 80% 之多。 如何能够高效地端到端进行机器学习流的开发,如何能够依据线上的反馈准时地选取高区分度特征,对模型进行优化,验证模型的无效性,加速模型迭代效率,满足线上的要求,都是我们需要处理的问题。 Weiflow 的诞生源自于微博机器学习流的业务需求,在微博的机器学习流图中(如图1所示),多种数据流(如发博流、曝光流、互动流)经过 Spark Streaming、Storm 的实时处理,存储至特征工程并生成离线的原始样本。 图1 微博机器学习流图 在离线系统,依据业务人员的开发阅历,对原始样本进行各式各样的数据处理(统计、清洗、过滤、采样等)、特征处理、特征映射,从而生成可训练的训练样本;业务人员依据实际业务场景(排序、推举),选择不同的算法模型(LR、GBDT、频繁项集、SVM、DNN 等),进行模型训练、猜想、测试和评估;待模型迭代满足要求后,通过自动部署将模型文件和映射规章部署到线上。 线上系统依据模型文件和映射规章,从特征工程中拉取相关的特征值,并依据映射规章进行预处理,生成可用于猜想的样本格式,进行线上的实时猜想,最终将猜想的结果(用户对微博内容的爱好程度)输出,供线上服务调用。 Weiflow 的设计初衷就是将微博机器学习流的开发简约化、傻瓜化,让业务开发人员从纷繁简约的数据处理、特征工程、模型工程中解脱出来。 开发人员可以将贵重的时间和精力投入到业务场景的开发和优化当中,彻底解放业务人员的生产力,大幅提升开发效率。 考虑到微博业务场景越来越简约、多样的趋势,Weiflow 在设计之初就充分考虑并权衡了框架的开发效率、可扩展性和执行效率。 Weiflow 通过统一格式的配置文件式开发(XML 流程文件),允许业务人员像搭积木一样机警地将需要用到的模块(数据处理、特征映射、生成训练样本、模型的训练、猜想、测试、评估等)堆叠到一起,依据依靠关系构成计算流图(Directed Acyclic Graph有向无环图),Weiflow 将自动解析不同模块之间的依靠关系,并调用每个模型的执行类进行流水线式的作业。 对于每一个计算模块,用户无需关怀其内部实现、执行效率,只需关怀与业务开发相关的参数调优,如算法的超参数、数据采样率、采样方式、特征映射规章、数据统计方式、数据清洗规章等等,从而大幅提升开发效率、模型迭代速度。 为了让更多的开发者(包括具有代码力气的业务人员)能够参与到 Weiflow 的开发中来,Weiflow 设计并供应了丰富的多层次笼统,基于预定义的基类和接口,允许开发者依据新的业务需求实现本人的处理模块(如新的算法模型训练、猜想、评估模块)、计算函数(如简约的特征计算公式、特征组合函数等),从而不断丰富、扩展 Weiflow 的功能。 在框架的执行效率方面,在其次层 DAG 中(后面将具体引见 Weiflow 的双层 DAG 结构),充分利用各种计算引擎(Spark、Tensorflow、Hive、Storm、Flink 等)的优化机制,同时结合奇异的数据结构设计与开发言语(如 Scala 的 Currying、Partial Functions 等)本身的特性,保证框架在供应足够的机警性和近乎无限的可扩展性的基础上,尽可能地提升执行功能。 为了应对微博多样的计算环境(Spark、Tensorflow、Hive、Storm、Flink等),Weiflow 接受了双层的 DAG 任务流设计,如图 2 所示。 图2 Weiflow双层DAG任务流设计 外层的 DAG 由不同的 node 构成,每一个 node 具备独立的执行环境,即上文提及的 Spark、Tensorflow、Hive、Storm、Flink 等计算引擎。外层 DAG 设计的初衷是让最合适的锤子去敲击最适合的钉子,大多数计算引擎因其设计阶段的历史局限性,都很难做到兼顾全部的工作负载类型,而是在不同程度上更好地支持某些负载(如批处理、流式实时处理、即时查询、分析型数据仓库、机器学习、图计算、买卖型数据库等),因此我们的思路是让用户选择最适合本人业务负载的计算引擎。 内层的 DAG,依据计算引擎的不同,利用引擎的特性与

文档评论(0)

bob157641554 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档