《深度学习推荐系统》——第六章

第 6章 深度学习推荐系统的⼯程实现

  之前的章节已从不同的⻆度出发介绍了深度学习推荐系统的技术要点,主要从理论和算法层⾯介绍了推荐系统的关键思想。但算法和模型终究只是“ 好酒”,还需要⽤合适的“ 容器” 盛载才能呈现出最好的味道,这⾥的“ 容器” 指的就是实现推荐系统的⼯程平台。
  从⼯程的⻆度来看推荐系统,可以将其分为两⼤部分:数据部分和模型部分数据部分主要指推荐系统所需数据流的相关⼯程实现模型部分指的是推荐模型的相关⼯程实现,根据模型应⽤阶段的不同,可进⼀步分为离线训练部分和线上服务部分。根据推荐系统整体的⼯程架构,本章的主要内容可以分为以下三⼤部分:
  (1)推荐系统的数据流:主要介绍与推荐系统数据流相关的⼤数据平台的主要框架和实现⼤数据平台的主流技术
  (2)深度学习推荐模型的离线训练:主要介绍训练深度学习推荐模型的主流平台,如 Spark MLlib、Parameter Server ( 参数服务器 )、TensorFlow、PyTorch的主要原理。
  (3)深度学习推荐模型的上线部署:主要介绍部署深度学习推荐模型的技术途径和模型线上服务的过程。在此⼯程架构基础上,介绍⼯程和理论之间的权衡⽅法,探讨推荐算法⼯程师如何进⾏取舍才能达到⼯程和理论之间的平衡和统⼀。

6.1 推荐系统的数据流

  本节要介绍的“ 推荐系统的数据流” 指的是训练、服务推荐模型所需数据的处理流程。⾃ 2003 年⾕歌陆续发表了 Big Table、Google File System[2]和 Map Reduce [3]三⼤⼤数据领域奠基性论⽂以来,推荐系统也全⾯进⼊了⼤数据时代。动辄TB 乃⾄ PB 级别的训练数据,让推荐系统的数据流必须和⼤数据处理与存储的基础设施紧密结合,才能完成推荐系统的⾼效训练和在线预估
  ⼤数据平台的发展经历了从批处理到流计算再到全⾯融合进化的阶段架构模式的不断发展带来的是数据处理实时性和灵活性的⼤幅提升。按照发展的先后顺序,⼤数据平台主要有批处理、 流计算、Lambda、Kappa 4种架构模式。

6.1.1 批处理大数椐架构

  在⼤数据平台诞⽣之前,传统数据库很难处理海量数据的存储和计算问题。针对这⼀难题,以 Google GFS 和 Apache HDFS 为代表的分布式存储系统诞⽣解决了海量数据的存储问题;为了进⼀步解决数据的计算问题Map Reduce 框架被提出采⽤分布式数据处理再逐步 Reduce 的⽅法并⾏处理海量数据。“ 分布式存储+Map Reduce” 的架构只能批量处理已经落盘的静态数据⽆法在数据采集、传输等数据流动的过程中处理数据,因此被称为批处理⼤数据架构
  相⽐之前以数据库为核⼼的数据处理过程,批处理⼤数据架构⽤分布式⽂件系统和 Map Reduce 替换了原来的依托传统⽂件系统和数据库的数据存储和处理⽅法,批处理⼤数据架构示意图如图 6 1所示。
在这里插入图片描述
  但该架构只能批量处理分布式⽂件系统中的数据,因此数据处理的延迟较⼤严重影响相关应⽤的实时性,“ 流计算” 的⽅案应运⽽⽣

6.1.2 流计算大数据架构

  流计算⼤数据架构在数据流产⽣及传递的过程中流式地消费并处理数据( 如图 6-2 所示 )。流计算架构中 “ 滑动窗⼝” 的概念⾮常重要,在每个“ 窗⼝” 内部,数据被短暂缓存并消费,在完成⼀个窗⼝的数据处理后,流计算平台滑动到下⼀时间窗⼝进⾏新⼀轮的数据处理。因此理论上,流计算平台的延迟仅与滑动窗⼝的⼤⼩有关。在实际应⽤中,滑动窗⼝的⼤⼩基本以分钟级别居多,这⼤⼤提升了原“ 批处理” 架构下动辄⼏⼩时的数据延迟。
在这里插入图片描述
  知名开源流计算平台包括 Storm、Spark Streaming、Flink 等,特别是近年来崛起的 Flink,它将所有数据均看作“ 流”把批处理当作流计算的⼀种特殊情况,可以说是“ 原⽣” 的流处理平台。
  在流计算的过程中,流计算平台不仅可以进⾏单个数据流的处理,还可以对多个不同数据流进⾏ join 操作,并在同⼀个时间窗⼝内做整合处理。除此之外,⼀个流计算环节的输出还可以成为下游应⽤的输⼈,整个流计算架构是灵活可重构的。因此,流计算⼤数据架构的优点⾮常明显,就是数据处理的延迟⼩数据流的灵活性⾮常强。这对于数据监控、推荐系统特征实时更新,以及推荐模型实时训练有很⼤的帮助。
  另外,纯流计算的⼤数据架构摒弃了批处理的过程,这使得平台在数据合法性检查、数据回放、全量数据分析等应⽤场景下显得捉襟⻅肘;特别是在时间窗⼝较短的情况下,⽇志乱序、join 操作造成的数据遗漏会使数据的误差累计,纯流计算的架构并不是完美的。这就要求新的⼤数据架构能对流计算和批处理架构做⼀定程度的融合,取⻓补短。

6.1.3 Lambda 架构

  Lambda 架构是⼤数据领域内举⾜轻重的架构,⼤多数⼀线互联⽹公司的数据平台基本都是基于 Lambda 架构或其后续变种架构构建的。
  Lambda 架构的数据通道从最开始的数据收集阶段裂变为两条分⽀实时流和离线处理。实时流部分保持了流计算架构,保障了数据的实时性,⽽离线处理部分则以批处理的⽅式为主,保障了数据的最终⼀致性,为系统提供了更多数据处理的选择。Lambda 架构示意图如图 6-3 所示。
  流计算部分为保障数据实时性更多是以增量计算为主,⽽批处理部分则对数据进⾏全量运算,保障其最终的⼀致性及最终推荐系统特征的丰富性。在将统计数据存⼊最终的数据库之前,Lambda 架构往往会对实时流数据和离线层数据进⾏合并,并会利⽤离线层数据对实时流数据进⾏校检和纠错,这是 Lambda 架构的重要步骤。


本部分内容偏工程
  
  
  
  
  
  
  
  
  
  
  
  
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值