算法系统

算法系统

在线、离线的概念,是算法实现的部分,也是算法工程化的部分,姑且称之为算法类系统。例如你采用了一个算法,比如 DNN,如果数据输入、模型训练、模型预测的输出全部都是离线完成的,那么这是一个离线算法系统;如果说这个模型的输入、训练、预测中有一个或多个是在线完成的,比如在线的输入、预测和模型训练等,那么这就是一个在线算法系统。

离线算法

在线算法

初始输入

所有输入

部分输入

输入类型

静态数据

流式数据/动态数据

计算方式

请求之前就计算好

请求过来后实时计算

例子

选择排序

插入排序

当然还有一些在线和离线算法应用的的混合算法,在线部分负责长期数据的预训练和预处理,离线部分负责处理短期/实时数据并结合预训练结果打分。比如推荐算法,3D 游戏画面渲染等。

算法系统模式

  • 离线产生数据结果,将数据结果作为服务,确定好合适的接口和服务查询方式,前端请求查询直接获得已经计算好的数据。这种情况适用于结果变化不大的情况,比如用户画像标签、商品标签、评价标签的抽取,这种方案可以考虑使用 PAI(离线训练)+ODPS(离线存储)实现。产品标签挖掘就是一个典型的例子。

  • 离线产生数据结果和模型,在线使用离线的数据、离线模型和实时数据来计算返回的结果,主要是对返回的结果进行调整,比如广告排序和商品排序中,我们可以离线生成初步的排序结果,再根据在线的用户数据和运营限制对返回结果重新排序。这里使用的模型可以根据实际情况进行在线或离线更新,这种方案可以考虑 PAI(离线训练)+ODPS(离线存储)+IGRAPH(在线存储)+TPP(在线策略服务)+RTP(在线预测)实现。典型案例可以参考推荐,如猜你喜欢。

  • 离线产生一个初始的模型,在线进行计算和模型更新,这样的场景比如强化学习的应用,通常会用离线数据训练好一个模型后,在线进行模型更新和预测,这种方案可以考虑 PAI(离线训练)+IGRAPH(在线存储)+TPP(在线策略服务)+RTP(在线预测)实现。典型案例可以参考强化学习应用和生成式的对话系统的设计。