藏经阁-基于Spark的大规模机器学习在微博的应用.pdf
【基于Spark的大规模机器学习在微博的应用】 微博作为中国领先的社交媒体平台,拥有庞大的用户基数,月活跃用户(MAU)超过3.4亿,日活跃用户(DAU)超过1.54亿,且用户主要通过移动端访问。面对如此海量的数据,微博需要处理的业务场景多样,包括Feed推荐、热门话题、推荐系统、PUSH通知以及反垃圾信息等。这些场景涉及到多种算法模型,如逻辑回归(LR)、支持向量机(SVM)、梯度提升树(GBDT)、随机森林(RF)、神经网络(NN)、频繁模式(FP)和因子分解机(FM)等。 在进行大规模机器学习时,微博面临的主要挑战包括: 1. 特征维度巨大:近百亿级别的特征维度和近万亿级别的样本量,使得传统的机器学习方法难以应对。 2. 高频访问:用户刷新和曝光次数达到百亿级和千亿级,对系统实时性有极高要求。 3. 内存和网络开销:处理大规模数据时,内存管理和网络传输效率成为关键问题。 4. 模型优化:需要找到合适的参数设置,如学习率、批量大小、参数服务器数量等,以提高模型性能。 为解决这些问题,微博采用了Apache Spark的Mllib库进行尝试,并实践了基于Spark的参数服务器(PS Server)架构。这种主从结构的服务化框架可以高效地处理大规模的梯度更新和权重更新,同时支持多参数副本,以确保容错性和可用性。参数服务器架构下,Spark执行器(Executor)作为PS Client,负责召唤PS actors,进行参数的推送和拉取。 异步随机梯度下降算法被用来加速学习过程,它将数据分块,分块数据分别拉取参数,计算梯度并更新到参数服务器。通过对批量大小、参数服务器数量、稀疏度和分区策略的优化,可以显著提高系统性能。例如,批量大小的选择对性能有很大影响,需要找到最优的批量大小以平衡计算效率和内存使用。 然而,随着需求的发展,微博面临的挑战也在增加,比如需要支持更多的算法、进行性能优化,以及探索半同步的训练方式。为了应对这些挑战,微博正在考虑引入Docker进行容器化管理,利用ZooKeeper实现配置化,以提升系统的灵活性和可扩展性。 微博的机器学习框架——Weiflow,旨在统一计算框架,减少业务开发的复杂性和时间成本,解决业务脚本调用混乱、计算框架多样性、Storm执行性能不佳以及迭代上线沟通效率低等问题。Weiflow通过XML配置,实现了对不同数据格式(如Text、Csv、Libsvm、Parquet、Orc、Json等)的支持,以及数据处理的各种操作,如统计、清洗、过滤、组合、采样和转换等。这样,微博可以更高效地进行特征工程,实现自动部署和实时预测,进一步提升机器学习的效率和效果。
剩余31页未读,继续阅读
- 粉丝: 86
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助