1、,支持大数据分析的分布式机器学习 系统设计,汇报内容, 问题背景 相关工作 系统设计 总结,机器学习, 个性化医疗,机器学习成为挖掘数据价值的主要技术 广告推荐 文本挖掘 视频、图像、语音识别 金融、风险管理 挑战, 智能城市 大模型:数据稀疏,模型维度与数 据维度在一个量级, 大数据: 训练样本数据量超过单机 处理能力,应用案例: 腾讯精准广告推荐,手机QQ 广告,大数据对广告推荐的挑战 月活超过10亿 活跃账户7.8亿 百万级标签日活1.5亿百万广告位,千亿级 百亿级 千万级,复杂的用户关系链 每天推荐请求量 每秒实时预测的广告数量,微信广告,精准广告推荐,基本特征 (Raw Featur
2、e), 基本属性 商业兴趣 用户关系链 消费力,用户特征, 广告主 广告创意,关键词 公司,品牌,价格,广告特征, 大小,可见度 形式(视频 or 图片) PC,笔记本,手机,App,上下文特 征,超大模型,高维度,稀疏,大数据 集,特征组合,高层特征 (High-Level Feature),大数据对广告推荐的挑战,超大模型 特征One-Hot化 特征组合(intersection) 亿级特征维度,典型算法:,召 回 CF MF,粗 排 LR GBD T,精 排 FM FNN,分布式机器学习,机器学习,分布式系统,模型,并行策略,调度,容错,掉队者,局部性,网络,训练,准确率,分布式机器学习
3、 = 算法设计 + 系统设计 分布式机器学习关键技术: 并行策略、同步协议、网络传输、系统优化 在ACM SIGMOD、VLDB等国际顶级会议期刊发表论文十余篇,分布式机器学习是一个将机器学习技术和分布式系统融合起来,对互联网级规模的 大数据和超大规模模型进行分析的有效方法。,丰富的机器 学习及 数学计算库, ,友好的 用户编程接口, ,工业级别可用的 参数服务器,开始设计、研发, 2014,投入生产 2016,正式开源 V1.0.0 2017,Angel-分布式机器学习平台,Angel 主要面向分布式机器学习任务,采用参数服务器架构,支持数 据并行及模型并行的计算模式,对多种算法进行深度优化
4、,能支持十 亿级别维度的模型训练。Angel具有如下六个良好的特性: n扩展性:可扩展的参数服务器架构,支持十亿维度的模型参数 n易用性:灵活丰富的接口设计、拖拽式的一体化开发运营门户 n可靠性:具有快速的容错机制 n高效性:基于Angel实现的多种算法相比于其它系统具有更优的性能 n平台性:提供PS-Service能力,为Spark提供参数服务器能力,将支持图计 算与深度学习 n兼容性:支持Hadoop生态,采用Java和Scala开发,将提供Python等接口,相关研究,分布式机器学习系统,数据流系统,图计算系统,深度学习系统,Hadoop Mahout Spark MLlib,Graph
5、Lab/PowerGraph GraphX TuX2,TensorFlow MXNet Caffe2 PaddlePaddle,Executor,Driver,Model,Executor,Executor,Executor,Executor,Executor,Driver,Model,Executor,Executor,Executor,Spark机器学习的瓶颈, Driver成为参数汇总的单点瓶颈,难以支撑大规模模型及数据 十亿级维度的模型训练,实际应用中降维处理 Executor之间相互等待,整体效率不高,利用数据流算子并行化机器学习算法, 分类, 聚类, 推荐, 降维处理, 特征处理,
6、 优化算法,现有系统对比,数据流系统 适合通用性大数据处理,不 适合大规模机器学习算法 具备频繁的资源管理开销 单点瓶颈,缺乏参数共享 无法处理超大模型,图计算系统 适合能抽象成稀疏图结构的算法 可扩展性受到图结构的限制,深度学习系统 主要场景是深度学习等计算 密集型应用(GPU、TPU) 在大数据集处理等IO密集应 用上没有优势 对稀疏数据的处理性能不高 没有自动数据处理 普通机器学习算法支持不足,Angel: 分布式机器学习的共性在于迭代过程中参数共享 Angel利用参数服务器架构提供强大的参数共享服务,能够整合多类机器学习系统,系统设计,Angel系统架构,n Client 提供控制任务
7、运行,启动和停 止任务,加载和存储模型等功 能 n Master 提供数据和参数矩阵的分片和 分发,资源申请, 管理和监控 任务运行状态等功能 n Parameter Server 负责存储和更新参数 n Worker 负责具体的模型训练或者结果,预测,包含一个或者多个Task, Task之间共享Worker的资源,Jie Jiang, Lele Yu, Jiawei Jiang, Bin Cui:“Angel: A New Large- scale Machine Learning System“, NSR 2018,Angel系统任务执行,Client MLRunner,1 Start P
8、S,2 Load Model,8 Save Model,DataBlock,Build-in Worker,PSModel,LabeledData,LabeledData,LabeledData,PSModel,Task Learner,Predictor,Task,7 Push,5 Pull,4 Read data,6 Train,3 Start Task,Server与worker的交互,n Parameter Server 由多个PSServer构成,每个PSServer 存储参数的一个分区 引入了PSAgent,对PSServer端进行 隔离,提供PS-Service的功能, 同时进
9、行模型缓存、预取、更新合并等优 化 n Worker Worker端有存储参数的缓存和存储 数据的DataBlock;参数缓存用于实 现多种同步协议,DataBlock可以利 用磁盘和内存来存储数据 n Model 用户可以选择同步协议、自定义 Partitioner,调用psFunc函数,PS Function,n PS Pull/Push 标准PS需要提供模型的拉取和推 送功能。然而实际算法对 PSServer上的参数获取和更新, 却复杂得多 n Angel PsFunc 引入和实现psFunc的概念,对远 程模型的获取和更新的流程进行 了封装和抽象 通过PsFunc,Angel的PS提供
10、了更 丰富的表达能力,更将一部分计 算放在了Server端,合理的利用 PsFunc将会减少网络通信,加速 算法运行,同步机制实现,分区粒度向量时钟: 在Server端为每个分区维护一 个向量时钟,记录每个worker 在该分区的时钟信息 在Worker端维护一个后台同步 线程,用于同步所有分区的时 钟信息 访问模型时,根据本地时钟信 息进行判断,选择是否进行等 待操作 每次迭代完,调用Clock方法, 更新向量时钟,负载均衡策略,模型划分:保证每个模型分区网络负载均衡 算法实现模型划分接口 通过扫描数据估计每个模型分区负载 数据划分:保证每个节点获取同样大小的数据 主控节点访问HDFS主节点
11、获取数据元信息 根据元信息将数据块分配给计算节点 同时考虑数据局部性信息,容错机制,系统级别容错: 主控节点(Spark Driver, Master)存储全局状态信息,定期保存至稳定存储 服务节点存储参数,定期保存至稳定外存中 计算节点无需保存任何信息 算法级别容错: 计算节点中保存了状态信息,需算法特定处理 例:主题模型算法中保存计算节点中话题分配信息,不保存服务节点中的参数,算法库,机器学习算法 LR、SVM、LDA、MF、KMEANS,GBDT,Word2Vec优化算法 SGD、CD、ADMM、LBFGS数学计算库 高效的Vector, Matrix库,可选择数据、参数的表达形式(稀疏
12、或稠密) 支持常用的线性代数计算用户编程接口 Scala和Java的编程接口 基于Yarn的任务运行模式 WebApp页面,查看任务进度,基于Angel的学术论文,Lele Yu,Jie Jiang, Jiawei Jiang, Bin Cui:“Angel: A New Large-scale Machine Learning System“, NSR 2018 (ANGEL系统) Jiawei Jiang, Bin Cui, Ce Zhang and Lele Yu: “Heterogeneity-aware Distributed Parameter Servers”, SIGMOD 2
13、017(异构环境下的同步协议) Lele Yu, Ce Zhang, Yingxia Shao and Bin Cui:“LDA*: A Robust and Large-scale Topic Modeling System ”, VLDB 2017(大规模主题模型) Jiawei Jiang, Bin Cui, Ce Zhang and Fangcheng Fu: “DimBoost: Boosting Gradient Boosting Decision Tree to Higher Dimensions”, SIGMOD 2018(高维稀疏的梯度提 升树) Jiawei Jiang,
14、Fangcheng Fu, Tong Yang and Bin Cui: “SketchML: Accelerating Distributed Machine Learning with Data Sketches”, SIGMOD 2018(基于Sketch的网 络传输压缩),系统开源,Angel 由北京大学和腾讯联合开发,兼顾了工业界的高可用性和学术界的 创新性,已经在github全面开源。 Angel 主要Java 和 Scala 开发,加入Python等多种语言接口,方便使用,还 会进一步利用Angel的PS Service能力,支持图计算和深度学习框架。,https:/ 外部用户:
15、,性能比对,不同的系统:Spark、Petuum、XGboost、 Tensorflow 不同的算法:LR、LDA、GDBT 不同的集群环境:实验室、工业现网环境 不同的数据集:公开数据、生产数据,Angel vs XGBoost GBDT,腾讯内部某性别预测数据集,145GB,3.3105 特征,1.2108 样本,Angel vs Spark LDA,数据:PubMED,Angel vs Spark LR,腾讯内部某推荐数据,5107 特征,8107 样本,Spark on Angel vs Spark LR,腾讯实际推荐业务应用,腾讯视频推荐 1.7亿条样本,2600万维度的特征 算法:
16、逻辑回归,性能提升:10倍,微信文章推荐业务点击率预估 1亿条样本,500万维度的特征 算法:逻辑回归,性能提升:12倍,用户-物品话题模型建模 379万物品,1024话题,200亿观测值 算法:LDA 性能提升:8倍,总结与展望,总结与展望,Angel 分布式机器学习系统主要面向分布式机器学习任务,采用参数服务 器架构,对多种算法进行深度优化。 系统扩展: 开发具有高性能、高扩展性的分布式深度学习系统,通过建设 参数服务器架构提供并行的模型更新和访问能力,并且提供通用的编程 接口整合已有的深度学习系统。 开源社区: 基于开源社区进行系统进一步开发,提供更方便的语言接口, 提高系统稳定性和算法
17、性能。(https:/ API,Spark Streaming on Angel,Deep Learning Framework Support,更快更好用的机器学习系统, 如何更快 不同维度的多样性(diversity) 数据维度: 结构化数据 (100) 非结构化数据(100M) 断层扫描 (Tomography,100B) 计算能力: T FLOPs 硬件设备: FPGA, GPU, CPU, 网络连接: RDMA, Sensor/Mobile Network, 需要理解这些多样性背后系统或者算法的执行是否有统一的理论基础。 寻找折中(tradeoff): 工作任务, 硬件 数据表示、同
18、步方式、通 信,自动化机器学习, 机器学习已经取得了很大的成功,但是仍然依赖大量的专家知识。 如何提高研究人员的效率?如何降低机器学习的门槛? 机器学习流水线的自动化 特征工程:特征选择、特征堆叠 算法模型:传统模型、深度模型 网络结构:GoogleNet、VGGNet、ResNet 超参数调节:学习速度 算法执行:资源分配、任务调度、多Agent优化 模块化的机器学习系统 多种模型的组合和应用取得效果和效率的折中。 设计声明式语言(declarative language)来简化程序设计 利用调度和优化算法自动生成执行计划 VLDB 2017: “MLog: Towards Declarative In Database Machine Learning” 基于TensorFlow自动生成Mlog程序,谢谢,