1 什么是微博
微博是中国最大,最受欢迎的社交媒体网络平台。该网站是一个微博客平台(类似于 Twitter 或 Reddit),其功能包括消息传递,对文章进行评论,重新发布以及基于上下文浏览等的视频和图片推荐。2019 年,微博的每日活跃用户(DAU)超过 2.2 亿,每月活跃用户(MAU)达到 5.16 亿。基于人们的社交活动(例如,在世界范围内发布和共享新闻等),微博团队开发了一个社交网络,该社交网络可以将用户连接起来,并根据他们的活动和兴趣将内容分发到个人。
2 微博的机器学习平台(WML)
如下图所示,微博的机器学习平台(WML)由多层体系结构组成,从集群和资源管理一直到建模和推理训练组件。作为平台的核心,我们的集群部署由在线,离线和高性能计算集群组成,运行我们的应用程序和管道。
集群层之上是我们平台的调度层,该层由两个内部开发的框架(WeiBox 和 WeiFlow)组成,用于以统一的方式将作业提交给不同的集群。我们还利用YARN和Kubernetes用于资源管理。机器学习平台的第三层包含计算层,该层与我们内部开发的 WeiLearn 框架一起提供(在本文的以下各节中进行了详细说明),该框架使我们平台的用户可以定义自己的算法并构造自己的算法 UDF 以及多个集成的数据处理框架,例如 Hadoop,Flink,Storm 和 TensorFlow。我们架构的模型训练和在线预测层位于最顶层,可为公司提供不同的应用场景,包括特征生成,样本生成,在线模型训练和在线推断等。
为了更深入地了解微博中机器学习的执行方式,让我们介绍一下我们自己内部开发的两个用于微博机器学习的框架:WeiLearn 和 WeiFlow。
WeiLearn(在下面的图 3 左侧进行了说明)是在 Weibo 上建立的,它是我们的开发人员编写和插入自己的 UDF 的框架,它通过三个主要步骤进行操作:用于离线数据处理作业的 Input,Process 和 Output 和 Source,Process 和 Sink 处理我们的实时数据处理工作。另一方面,WeiFlow 是使用 Cron 表达式处理任务依赖性和计划的工具,例如从特定任务重新运行或在特定时间段回填多天的数据。
经过几次成功的迭代后,微博的机器学习平台现在在模型训练中支持超过 1000 亿个参数,每秒支持超过 100 万个查询(QPS),同时在早期的版本中我们成功的将迭代周期从每周的节减少到 10 分钟。
3 Apache Flink 在微博用于机器学习
Flink 在微博的机器学习平台中以及在我们平台的实时计算中均扮演着重要角色。实时计算平台的基础架构层由Apache Flink、Apache Storm集群构成,同时包含用于度量和监控的 Grafana 。Apache Flume and the ELK stack (ElasticSearch + Logstash + Kibana) 作为我们的日志记录系统。
使用 Flink 独特的抽象集及其统一的 API,我们能够在微博上强化我们的机器学习pipeline。我们之前有用于在线和离线模型以及推理训练的单独管道,每个管道使用不同的计算引擎,包括 Storm,Flink,Spark Streaming,Hive 和 MapReduce。最重要的是,我们有多个应用程序开发框架要使用和实现&#