四、算子体系
在开发XPS的过程中,我们抽象了一些通用的算法思想,逐步形成了XPS的算子体系。使用XPS平台的算法用户设计一个新算法的时候,设计完算法之后,只需要选择系统中的算子进行搭配,就可以完成算法开发。算子体系的设计,不仅加速了算法构建过程,提升了算法开发、调试的效率,同时还增强算法的表达能力。我们主要设计了下面的算子:
4.1 流式评估算子
针对XPS的流式训练数据,我们设计了流式评估框架,极大地加速了我们的调参工作,有效地帮助我们进行模型正确性效验。流式测试算子具体思想也十分简单,每经过M个Batch的训练,我们就对未来的N个Batch的数据做一次评估,并观察预估数据上的AUC, MAE, RMSE, 最大权值和最小权重等指标,同时密切关注预估准度PCOPC(Predict Click Over Post Click)。这样的评估机制,极大地提升了参数调试的效率。同时,在训练结束时,这些指标也反应出模型的质量,训练框架会检查这些参数,只有它们达到一定的正确性标准,才产出模型给预估服务模块进行模型部署。
4.2 自动化会话特征算子
在点击率预估和转化率预估场景,用户在最近一段时间内的会话特征的重要性是很高的。一般的系统中,用于提供会话特征的SessionServer能提供的只是一定维度的统计。我们提出了Automatic Session这种“特征模型化”的设计思想。具体而言,模型一边进行数据训练,一边统计每个特征在一定的时间内的曝光和点击,然后计算每个特征在不同周期的点击率,加入到训练特征中其他特征一起训练。Automatic Session的加入,极大地丰富了我们的特征体系。我们提供了长中短三个衰减系数项,用户可以在任何XPS算法中通过配置这三个衰减系数引入自动化会话特征算子,增强模型本身的表达能力。
4.3 梯度平均算子
频率过低的特征的学习容易造成模型权重过度分散而引入过拟合,频率过高的特征因为局部过度更新也容易过拟合。Server端每次更新权重的时候,会根据特征频次对梯度做不同方式的打折。
4.4 异步更新控制算子
异步更新控制算子根据Pull模型权重和Push梯度时模型权重的版本差做梯度打折,防止了异步更新的效率损失。版本差低的梯度更新值置信度更高,版本差高的梯度更新值置信度更低。
除了以上算子而外,XPS里面还有激活函数选择算子,正则选择算子,变量衰减算子和安全性检查算子。
对于XPS的算法开发用户,我们在提供高效的分布式扩展性的基础上,还抽象了一套面向算法开发者的SDK,对用户屏蔽了复杂的分布式调度、通信和同步、异步等底层细节。算法开发用户只需要考虑算法总体流程、Worker上计算梯度的逻辑以及Server上更新模型的逻辑,选择算法算子体现中的算子,就可以开发出千亿特征的算法。一个XPS新算法的构建过程,一般会包含下面9个步骤:
完成新算法Worker端梯度计算代码;
选择加入自动化会话特征,以丰富特征体系;
加入流式测试算子,方便快速调参和模型监控;
选择梯度平均函数保持更新的平滑性;
选择异步更新控制算子的版本差控制函数类型;
通过激活函数选择算子来选择激活函数;
通过正则选择算子来选择正则方法;
选择变量衰减值,激活变量衰减算子,进行变量的流式衰减;
选择安全性检查算子对梯度值、更新值和模型最大最小值进行安全性检查和安全性控制。
通过XPS的算子抽象设计,算法开发用户对算法的优化算子有了更多灵活性的选择。在这种方式下,用户可以集中精力进行算法创新性研究,而忽略不必关心的技术细节。在阿里集团中,XPS平台已经帮助用户研发了SLRM新算法,其他新算法也在研究之中。
经过大量的实践,eXtreme Parameter Server平台已经成为阿里集团解决超样本和特征学习问题的新一代分布式机器学习系统。2017年,XPS被广泛应用到阿里集团的搜索,广告和推荐等场景,算法开发用户数量也在快速增长。2018年,我们将在XPS中建设图像和NLP算法;我们也正在完善TensorFlow编程模式,将支持用户使用python编程接入TensorFlow,方便用户能快速地编写自己的模型,并且调用高效的XPS的Sever功能;我们还在整合强化学习算法框架和引入阿里基础特征服务系统AliBasicFeatureServer。
高速发展的阿里集团,未来将会遇到更多的大数据研究问题,这些问题很挑战,也很迷人。XPS将会在极限化参数服务器的设计理念下坚定前行。XPS算法负责人范朝盛和工程负责人陈绪表示: eXtreme Parameter Sever的目标是设计追求极致性能和效果的分布式参数服务器,我们走出了一步,未来还有很长的路要走,我们将努力用AI技术改变我们的生活。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-66400-5.html
函数加油