TF支持长期学习,定期产出 checkpoint,而且支持 checkpoint 热启动。要实现 online training,只需要将数据流式的灌进去就行。
异步训练
同步训练
大数据模型引入了分布式并行训练,同步并行训练受长尾worker的制约,并发数容易受限。异步并行是快速训练的主流。异步并行训练打破了普通SGD训练的串行性,计算的梯度与更新的模型不是严格一致,引入了梯度delay的问题。需要进行梯度补偿:
- 微软在ICML2017提出过DC-ASGD optimizer,使用泰勒展开来近似梯度补偿
- alibaba引入相关因子来boost主流的sgd-based optimizer
阿里巴巴做的优化还有:
- 非ID化特征支持
在在线学习的场景下做特征实时ID化是比较复杂的,需要一个超高性能的全局的ID生成器,这给样本生成带来了很大的复杂度。TensorFlowRS利用PS-Plus直接实现了对非ID特征的支持,极大的简化了实时样本构建的复杂度。- 特征动态增删
在在线训练的场景下,训练任务会以service的形式长期运行,在训练过程中,不断会有新特征加入到模型中,为了保证训练可以长期进行而不会因为新特征的不断加入导致OOM,PS-Plus在支持特征动态添加的同时,还提供了默认的特征删除策略,可以将低频或者低权重的特征删除掉,用户还可以通过UDF定制符合自身业务需求的删除策略- 模型增量实时导出
在线学习模型更新的常见方式有全量和增量两种。在模型参数较多的情况下,全量更新的方式会对在线系统的带宽带来巨大的压力,而降低更新频率又会使模型的实效性降低。PS-Plus支持以任意频率将模型增量部分实时写出到消息队列,在大幅减少网络IO的同时实现了真正意义上的模型实时更新。- AUC Decay
在在线学习的场景下,我们希望在训练的过程中就可以尽快的发现模型本身的异常,而不是等模型更新到线上之后。因此我们需要有一些方法来评估模型在训练过程中的 AUC等指标。TF里默认的streaming auc的实现在历史数据累积了一定量的时候,无法及时反应当前模型的状态,反馈有很大的滞后性。因此我们引入了新的AUC计算机制:AUC Decay。AUC Decay本质上是一种特殊的Moving Average,通过基于时间的减益方式,弱化历史样本和模型在当前AUC计算中的比重,以达到更快反应模型变化的目的
优化算法
- FTRL
- SGD
- BPR
具体的实际操作
来自蚂蚁金服
我们以推荐位业务为例说明,其采用了经典的wide&deep的网络结构,其sparse部分包含百级别的group(见下段备注1)。 一天流入约百亿样本,label的join窗口为固定时长。由于负样本占大多数,上游链路对正负样本做了1:8的降采样(见下文备注2)。
训练任务采用蚂蚁统一训练平台构建,并使用工作流进行定时调度,离线和在线任务的其他参数全部一致。Batchsize为512,每200步(即20万样本)评估结果,定时将模型通过图裁剪导出到线上系统。当任务失败时,调度系统会自动拉起,从checkpoint恢复。
参考文献
阿里妈妈基于TensorFlow做了哪些深度优化?TensorFlowRS架构解析
Online Learning算法理论与实践
[基于TensorFlow 的 Online Learning](https://haorenhao.github.io/2017/03/25/online learning based on TensorFlow)
蚂蚁金服核心技术:百亿特征实时推荐算法揭秘
网友评论