袁镱作者

独家揭秘腾讯PCG推荐中台大杀器:无量系统的升级之路

近年来,中台一词炙手可热。经过实践后,各个互联网大厂都逐渐走出了自己的中台技术路线。推荐 / 搜索因为在业务中展现出越来越重要的商业价值,而通过深度学习模型为用户提供千人千面的服务已经成为推荐 / 搜索的主流方案。推荐中台由此成为推荐 / 搜索场景重要的基础设置。本文详细介绍了腾讯 PCG 推荐中台的模型系统以及核心的超大规模深度学习框架:无量。

PCG 推荐中台简介

推荐中台流程简介

以下是一个简单的推荐中台模块以及流程的基本示例。

图片


大致分为以下几步:

1. 特征处理模块管理 user 和 item 的实时和固有特征,并根据线上的反馈更新实时特征,比如:用户画像、浏览记录等。为了不同训练的实时性,实时样本生成服务和离线样本生成任务利用特征处理模块管理的信息生成样本,输出到离线或者在线样本存储中。

2. 这些样本被训练系统中的训练框架训练,生成训练模型。根据模型上线实时性不同的要求,模型被存储在持久化存储或者消息中间件中。

3. 在线 Serving 服务在收到模型管理服务的模型上线请求后,从持久化存储或者消息中间件中获取模型信息并更新线上服务的模型。

4. 在模型持续训练和上线的过程中,业务服务持续的调用 Serving 系统的服务进行模型推理。

5. 业务服务将召回、排序、展示、点击等信息记录上报 A/B Test 系统,同时将其他信息回传至特征处理模块,以更新实时特征。


在特征中台中,其核心目标为加速整个流程,让研究人员的模型开发、实验和分析周期变得更短,提升业务实验的效率。腾讯 PCG 推荐中台目前已经接入了 PCG 所有业务以及其他 BG 的部分业务,为业务提供标准的基础设施,并取得了非常好的效果。

本文主要介绍腾讯 PCG 推荐中台的模型系统,包括从模型的训练、上线和在线推理部分,上图中灰色框中的内容。后续还会有文章介绍推荐中台的其他模块。

模型系统简介

腾讯 PCG 推荐中台的模型系统是从无量 1.0 系统的基础上重构和发展而来(无量 1.0 详细内容请参考《独家揭秘:腾讯千亿级参数分布式 ML 系统无量背后的秘密》https://zhuanlan.zhihu.com/p/38479390)。无量 1.0 系统实现了 TB 级模型训练和上线的能力从 0 到 1 的突破,但要想成为支持所有推荐业务的中台系统,还存在以下的一些问题:

1. 模型描述能力不足。无量 1.0 支持的深度学习算子有限,导致很多最新的深度学习模型无法在无量 1.0 上描述。如果开发新算子,整个模型开发周期将以月为单位。无量 1.0 对模型的描述是基于配置文件的。导致算法人员需要学习一种无量私有的配置描述方式,带来了较高的学习成本。而整个深度学习领域使用 Python 作为模型描述语言,以算子化的方式灵活构造模型已经成为了主流。

2. 模型在线推理服务成本高。无量 1.0 的推理服务成本主要体现在两个部分:a. 实验成本。由于未能实现对任意深度学习模型的支持,每次上线一个新的无量 1.0 模型,都需要有后台开发人员与算法人员做模型对齐并开发相应的适配代码,且由于后台开发人员与算法人员技术能力的差异,整个过程耗时费力,非常容易出错。与推荐中台以天为单位的实验周期目标冲突。b. 运营成本。高性能的分布式 Serving 服务解决了 TB 级模型的在线存储问题,也引入了较大的额外资源开销。

3. 模型上线管理能力弱。为了在业务中快速实验,算法人员会快速上线 / 下线模型,并同时上线多个模型进行效果对比。绝大多数推荐模型都是采用在线训练方式,按照一定的时间间隔持续上线模型,或者采用实时方式训练和上线。在这个过程中,可能出现模型效果抖动、上线异常、资源占用导致推理耗时毛刺等各种问题。系统需要管理多个模型,持续稳定地上线,同时确保业务不会受到持续批量上线中的问题影响。

4. 业界常用深度学习框架的支持能力有限。除了无量 1.0 框架,算法人员也会选择一些其他的深度学习框架,如:TensorFlow、Pytorch 来训练自己的模型,以便快速应用业界和学术界的研究成果,在业务中验证效果。使用这些深度学习框架进行的实验也需要训练、上线、在线推理这些环节,无量 1.0 系统不能支持这些框架,限制了算法人员的选择范围,影响实验速度。

为了解决以上问题,满足业务发展对深度学习模型快速开发、实验的需求,研究人员完成了以下几件事:

1. 开发一个易用性与业界对齐的分布式深度学习框架 -- 无量 2.0。性能继续保持无量 1.0 在 TB 级模型训练上的性能优势,在进一步优化的同时支持 TensorFlow 的 Python 接口方式描述深度学习模型。

2. 开发标准化的无量深度学习模型推理服务。实现无量深度学习框架训练出的模型零开发 / 零配置上线。优化推理服务性能,降低服务资源消耗,超越定制化实现的水平。

3. 开发完善、易用的模型管理服务。支持模型的存储和管理;支持不同大小、不同格式的模型上线 / 下线,允许为模型定制不同的上线管理策略;支持模型高频率持续稳定上线到千级别的服务节点。

4. 支持了常用的深度学习框架的模型训练、上线和推理。除了支持无量框架生产的模型,还需要支持至少两种业界常用的深度学习框架(TensorFlow、Pytorch)生产的模型上线和提供在线推理服务。为了让算法人员在多种深度学习框架之间切换的开发过程更为顺畅,该研究提供了配套的模型转换工具集合。

整体方案

整体的开发方案大致可以分为四个部分:

1. 无量训练 / 推理框架

无量训练框架通过桥接的方式引进 TensorFlow,基本架构见下图。这种桥接的方式保留了无量框架在分布式训练系统中的实现自由度,便于后期功能定制化和性能优化。同时通过复用 TensorFlow 算子,使得算法同学能够轻易的将 TensorFlow 上开发的模型迁移到无量框架,也可以用算法人员熟悉的 TensorFlow 编程接口来描述无量模型,提升模型开发效率。在无量模型导出时,将模型在线推理所需的信息以标准化的模型描述文件方式记录下来。在线推理服务通过解析模型描述文件和模型数据文件,自适应地构建在线推理逻辑,实现模型的零配置上线服务。

图片


2. 模型全流程系统 

模型全流程系统整合了训练平台、模型管理模块、在线推理平台,采用统一的方式管理模型的生产、上线和在线服务。模型上线 / 下线控制逻辑被抽象为独立的 Servable 框架,与具体的深度学习框架隔离,实现模型管理逻辑与深度学习框架推理逻辑之间的解偶。架构如下图:

图片


(1)模型管理与一键自动化上线。在推荐场景中,训练样本需要在线训练,生产出的推荐模型需要持续上线,以获得更好的业务效果。该研究构建了一套适应不同大小模型自动化上线系统。首先,系统支持了 TB 级模型的全量 / 增量上线模式,同时支持了流式更新的实时上线。其次,对于不需要复杂上线方式的中小模型,系统也能够很好地支持。

图片


在推荐场景中,还会出现一个模型被切分到多个服务中使用的情况。例如下图所示,一个 dssm 模型被用于召回场景时,需要提供给两个使用方:1)业务服务在线获取,要求高速响应。2)异步近线刷库服务,要求高吞吐。在实际运营中,需要用两套独立的服务来实现。如果两套服务中都保存和更新整个的模型,资源消耗和模型更新速度都会受到影响。通过将模型参数按上线逻辑进行切片,可以实现最小集合的上线。

图片


(2)7*24 小时持续上线,模型效果监控,上线质量保障。在持续上线的过程中,通过标准的模型描述文件,系统自动化地识别模型的效果,对于不符合要求的模型进行过滤,避免不合格的模型被上线到推理服务中,影响业务效果。

3. 在线推理服务架构统一与优化

(1)统一的 Servable 架构。为了支持多种深度学习框架的推理服务,对深度学习框架的推理服务进行了模块化,分为与模型管理有关的逻辑和推理服务有关的逻辑。在推荐场景下,模型管理模块的逻辑与 ServingManager 服务、模型存储交互,便于统一控制逻辑。不同的深度学习框架实现方式差异巨大,但是基本推理结构符合深度学习的基本框架,所以与框架相关的实现被抽象为可替换的 Servable,灵活组合。与业务服务调用有关的部分,被实现为标准接口,便于业务服务的开发。为了便于不同深度学习框架的切换,系统还配套了模型转换工具,方便训练和推理的交叉实验工作。

图片


(2)优化性能。推理部分:无量通过模型描述自解析的方式,实现了在线推理服务对模型的通用适配,降低了模型上线的成本,但也引入了通用性服务面临的普遍性能问题。具体表现是在某些情况下,性能不如业务以前采用的定制化实现。由于 PCG 的业务体量都很大,推理服务性能的差异直接导致资源成本的上升。通过采用算子融合、代码优化等方式,无量框架推理服务成功将性能提升到了超越业务定制化实现的水平。参数存取部分:分布式 Serving 集群的存在,解决了 TB 级模型在线推理的问题,但是也引入了额外的服务调用,当单词请求的 Embedding 需求量变大时,网络也会成为瓶颈,危害整体推理性能。通过针对推荐场景的模型特点构造高速缓存,成功地去除掉超过 70% 的分布式 Serving 请求通讯量。

未来展望

虽然推荐中台模型系统已经接入了PCG所有业务以及其他BG的部分业务,但是大量的用户以及业务的多样性也给中台带来了巨大的挑战。

系统与算法的联合创新。中台的模型系统是连接算法与系统的纽带。一边是机器学习/深度学习算法的不断创新,一边是高性能和稳定的系统。这也给予模型系统独特的创新空间,相比于单独算法创新或者性能优化,如何结合系统与算法进行联合优化,是一个挑战和发挥空间巨大的问题。最终让更多的算法成为可能,也让系统更加易用和高效。

性价比方面。TB级模型的训练和推理对资源需求很大,每个业务都有很多细分场景有多组实验并行进行,让模型系统成为资源大户。中台需要更高的性价比。这些工作需要架构与算法之间紧密配合,通过框架重构与升级,将最新的硬件技术,算法创新应用到系统中。

需求更新与稳定性方面。当中台成为业务统一基础设施后,意味着更多样的需求和更重的责任。系统本身也需要更加灵活和稳定。
产业腾讯
15
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

腾讯机构

腾讯,1998年11月诞生于中国深圳,是一家以互联网为基础的科技与文化公司。我们的使命是“通过互联网服务提升人类生活品质”。腾讯秉承着 “一切以用户价值为依归”的经营理念,为亿万网民提供优质的互联网综合服务。 腾讯的战略目标是“连接一切”,我们长期致力于社交平台与数字内容两大核心业务:一方面通过微信与QQ等社交平台,实现人与人、服务及设备的智慧连接;另一方面为数以亿计的用户提供优质的新闻、视频、游戏、音乐、文学、动漫、影业等数字内容产品及相关服务。我们还积极推动金融科技的发展,通过普及移动支付等技术能力,为智慧交通、智慧零售、智慧城市等领域提供有力支持。 腾讯希望成为各行各业的数字化助手,助力数字中国建设。在工业、医疗、零售、教育等各个领域,腾讯为传统行业的数字化转型升级提供“数字接口”和“数字工具箱”。我们秉持数字工匠精神,希望用数字创新提升每个人的生活品质。随着“互联网+”战略实施和数字经济的发展,我们通过战略合作与开放平台,与合作伙伴共建数字生态共同体,推进云计算、大数据、人工智能等前沿科技与各行各业的融合发展及创新共赢。多年来,腾讯的开放生态带动社会创业就业人次达数千万,相关创业企业估值已达数千亿元。 腾讯的愿景是成为“最受尊敬的互联网企业”。我们始终坚守“科技向善”的初心,运用科技手段助力公益事业发展,并将社会责任融入每一个产品。2007年,腾讯倡导并发起了中国互联网第一家在民政部注册的全国性非公募基金会——腾讯公益慈善基金会。腾讯公益致力于成为“人人可公益的创连者”,以互联网核心能力推动公益行业的长远发展为己任。腾讯公益联合多方发起了中国首个互联网公益日——99公益日,帮助公益组织和广大爱心网友、企业之间形成良好的公益生态,让透明化的“指尖公益”融入亿万网民的生活。

http://www.tencent.com/
推荐文章
信息前沿
2
同感
简洁
感谢认同
挺好的
1