背景介绍:百度搜索中一个很重要的工作室点击率预估(CTR),CTR预估计算代价很大,往往在线的数据非常的大,之前采用的方式是MPI上训练集群,但是这种方式不但耗时而且通信代价也很大;点击率预测起着关键作用确定最佳广告空间分配,因为它会直接影响用户体验和广告盈利能力。本文设计了一个通过SSD(固态硬盘)和GPU的点击率集中式系统,叫做AIBOX,将CTR模型划分为两部分:第一部分适用于CPU,另一个适用于GPU。使用SSD上的二级缓存管理系统来存储10TB参数,同时提供低延迟访问;广泛的经验指导生产数据显示新系统的有效性。AIBox具有大型MPI训练能力,而只需要集群成本的一小部分。传统的采用参数服务器进行分布式训练,但是也曾遭受节点故障和网络故障,更糟糕的是,在参数服务器上的同步会阻碍训练的执行,并导致巨大的网络通信开销,而异步训练框架会因为每个工作节点上的过时模型而导致模型收敛问题。
分析:现有大规模CTR预测模型训练系统面临的问题
解决思路:
但是模型压缩会损失一部分精度,但是即使精度损失了0.1%,也会造成巨大的商业损失,所以百度的这篇论文主要是从设计一个高效的训练系统的方式上进行的。
AIBOX设计过程中的挑战: AIBox的设计仍面临两个主要挑战。第一个挑战是将10TB规模的模型参数存储在单个节点上。当容量超过1 TB时,内存价格将上涨。当模型将来变得更大时,它是不可伸缩的。由于成本高昂,我们无法将整个10TB参数存储在主存储器中。 PCIe总线上新兴的非易失性内存Express(NVMe)SSD的延迟比硬盘驱动器低50倍以上。我们利用SSD作为辅助存储来保存参数。但是,SSD有两个缺点。首先,就延迟而言,SSD仍比主内存慢两个数量级,从而导致训练过程中的参数访问和更新速度较慢。 SSD的另一个缺点是,SSD中的存储单元只能持续数千个写周期。因此,我们必须维护有效的内存缓存以隐藏SSD延迟并减少磁盘写入SSD的时间。第二个挑战是在单个上使用多个GPU节点加快训练计算。最近,单Nvidia Tesla V100具有32 GB高带宽内存(HBM)达到15.7 TFLOPS,是47倍比高端服务器CPU节点(Intel Xeon系列)更快学习推理。这提供了独特的机会签署具有可比计算能力的多GPU计算节点集群性能。但是,当前的现成GPU确实可以没有TB规模的HBM。我们无法保留整个点击率预测GPU HBM中的神经网络。在这项工作中,我们提出了一本小说方法(第2节)将神经网络分为两部分。第一部分是占用大量内存并在CPU上进行过训练的。另一个网络的一部分是计算密集型的,而输入功能的迭代次数。我们在GPU上训练它。训练数据模型参数在主存储器之间传输以及多GPU的HBM。但是,主内存和GPU HBM受PCIe总线限制带宽。较高的GPU数值计算性能为当通信带宽成为瓶颈时,阻塞-颈部。新兴的NVLink 和NVSwitch 技术在不涉及PCIe的情况下实现直接GPU到GPU的通信公共汽车。我们使用NVLink并设计了一个内置HBM参数服务器减少GPU数据传输
设计的CTR预测神经网络模型的概述。
Embedding 学习的输入层上的节点表示高维稀疏性。 在联合学习的连接层上没有传入箭头的节点是密集的个性化输入特征(除了Embedding之外)。第一个模块高维稀疏地关注嵌入学习功能,第二个模块用于密集学习功能来自第一个模块。嵌入学习在CPU上处理,通过学习到的Embedding从CPU转移到GPU,同时利用SSD储存模型参数。
Embedding Learning on CPU(嵌入学习):SSD和CPU之间访问迅速,通过SSD储存模型参数,然后学习到Embedding输入到下一层。
Joint Learning on GPU(联合学习):联合学习的投入包括密集的个性化功能和学习的嵌入。个性化功能通常来自包括标题创意文本,用户个性化的行为,以及与广告相关的各种元数据。如果我们直接串联这些要素和馈送的神经网络,重要信息个性化功能可能无法得到充分的探索,从而点击率预测结果不准确。因此,我们设计了几个深度神经网络,共同学习有意义的表示最终的CTR预测。如图1所示,联合学习该模块包含几个(图中两个)深度神经网络。每个网络都将学习的嵌入和一种个性化信息一起作为输入层。然后几个应用完全连接的层以帮助捕获交互以自动方式设置功能。这些的最后隐藏层网络组合在一起用于softmax层和输出层点击率预测。
AIBOX系统设计:
将稀疏表存储到SSD的参数有效。它利用内存作为SSD的快速缓存,同时减少了SSD I / O,并提供低延迟的SSD访问。 它包含两个主要组件,密钥哈希索引和二级缓存管理。
翻译:作为世界上主要的搜索引擎之一,百度的赞助商搜索早已采用深度神经网络(DNN)广告点击率(CTR)预测模型2013。百度在线广告系统使用的输入期货(又称“凤凰巢”)具有很高的维度(例如,甚至数千亿个功能),而且还非常疏。百度产品使用的点击率模型的大小系统可以超过10TB。这带来了巨大的挑战用于培训,更新和在生产中使用此类模型。对于百度的广告系统,保持模型培训过程非常高效,因此工程师(以及搜索者)能够快速优化和测试他们的新模型,或者新的功能。而且,数十亿的用户广告点击历史记录条目每天都有货,必须迅速对模型进行重新训练因为点击率预测是一项非常耗时的任务。百度的当前的点击率模型是在MPI(消息传递接口)上训练的集群,需要较高的容错能力和同步性这会导致昂贵的通信和计算成本。当然,集群的维护成本也很大。本文介绍AIBox,这是一个用于培训点击率的集中式系统通过使用solid-状态驱动器(SSD)和GPU。由于内存限制GPU,我们将点击率模型仔细划分为两部分:第一部分适用于CPU,另一个适用于GPU。我们进一步介绍固态硬盘上的二级缓存管理系统来存储10TB参数,同时提供低延迟访问。广泛的经验指导生产数据显示新系统的有效性。AIBox具有大型MPI训练能力,而只需要集群成本的一小部分。
百度是全球领先的搜索引擎提供商之一搜索系统(又称“凤凰巢”)预先针对广告的点击率(CTR)的神经网络(DNN)模型,最早于2013年做出决定。点击率预测起着关键作用确定最佳广告空间分配,因为它会直接影响用户体验和广告盈利能力。 通常,点击率预测需要多种资源作为输入,例如,查询广告相关性,广告功能和用户画像。它可以确定用户点击的概率在给定的广告上。 最近,深度学习在以下方面取得了巨大的成功计算机视觉和自然语言处理。 启发据此,提出了用于CTR预测的学习方法任务。 与常用逻辑回归比较,深度学习模型可以大大改善准确性,大大增加了培训成本。
在百度搜索广告的当前生产系统中,我们模型的训练过程既耗费资源又耗时消耗。 通过参数服务器训练模型在具有数百个MPI(消息传递接口)的群集中成千上万的CPU节点数。 生产中使用的主要模型是尺寸超过10TB,并在特殊硬件上存储/管理。的参数服务器解决方案遭受节点故障和网络的困扰太多节点环境中的故障。 更糟糕的是,参数服务器中的同步会阻止训练计算机并导致大量的网络通信开销,而异步训练框架具有模型收敛的可能性每个工作程序节点上的模型过时导致的障碍。
这里有令人着迷的机会和挑战来改善赞助搜索的生产系统,在许多不同的方面位置。积极研究人员的一个领域可以提高“召回”的质量(广告)调用CTR模型之前。 例如,百度向社区分享了这样的技术论文,建立在快速的近邻搜索算法之上和最大的内部产品搜索技术。
在本文中,我们将介绍百度的另一项重大并举改善在线广告系统,即从MPI集群到GPU的CTR模型训练。 而使用用于机器学习和科学计算的GPU已成为惯例,使用GPU训练商业点击率模型会议:目前仍然带来许多重大挑战。 最著名的挑战原因是训练数据大小为PB(PeteByte)大小,并且经过训练的模型的大小超过10TB。 训练数例子可能多达数千亿的功能可能达到数千亿(我们通常使用2 64作为功能空间大小的便捷替代。) 数据馈送到该模型也非常稀疏,只有几百个每个特征向量的非零项。
作为一个商业赞助的搜索系统,任何模型压缩技术都不应影响预测性能(收益)。事实上,即使是很小的(例如0。1%的预测准确度下降将导致不可接受的收入损失。事实上,整个系统已经进行了高度优化,几乎没有冗余(例如,参数已经被小心地量化为整数),这种方式似乎没有多少改进的余地。流行的模型压缩技术,如下采样和散列,对于训练具有超高维(例如,数千亿个特征)和极稀疏(例如,每个特征中只有几百个非零项)的训练数据的商业CTR模型来说,效果较差。研究报告中常见的论据,如“只需0分就能将培训成本降低一半”。3%的精度损失“,不再在这个行业工作。另一方面,DNN-CTR模型的训练在百度是一项日常工作,工程师和数据科学家必须对许多不同的模型/特性/策略/参数进行实验,并且必须非常频繁地训练andre-train-CTR模型。硬件(如MPI集群)的成本和能耗可能非常高。为了应对这些挑战,我们展示了AIBox,这是一种新颖的集中式系统在单个节点上训练这种巨大的机器学习模型。 AIBox使用新兴的硬件SSD(固态驱动器和GPU),以存储大量参数并加速神经网络训练的繁重计算。 作为集中式系统,AIBox直接消除了分布式系统中由网络通信引起的那些弊端。 此外,与大型计算集群中的数千个节点相比,单节点AIBox的硬件故障数量要少几个数量级。 此外,由于仅需要内存锁和GPU片上通信,因此可以显着降低单个节点中的同步成本。 与分布式环境相比,没有通过网络传输数据。尽管如此,AIBox的设计仍面临两个主要挑战。
第一个挑战是将10TB规模的模型参数存储在单个节点上。当容量超过1 TB时,内存价格将上涨。当模型将来变得更大时,它是不可伸缩的,并且在现实世界中的大规模生产中不可行。由于成本高昂,我们无法将整个10TB参数存储在主存储器中。 PCIe总线上新兴的非易失性内存Express(NVMe)SSD的延迟比硬盘驱动器低50倍以上。我们利用SSD作为辅助存储来保存参数。但是,SSD有两个缺点。首先,就延迟而言,SSD仍比主内存慢两个数量级,从而导致训练过程中的参数访问和更新速度较慢。 SSD的另一个缺点是,SSD中的存储单元只能持续数千个写周期。因此,我们必须维护有效的内存缓存以隐藏SSD延迟并减少磁盘写入SSD的时间。第二个挑战是在单个上使用多个GPU节点加快训练计算。最近,单Nvidia Tesla V100具有32 GB高带宽内存(HBM)达到15.7 TFLOPS,是47倍比高端服务器CPU节点(Intel Xeon系列)更快学习推理。这提供了独特的机会签署具有可比计算能力的多GPU计算节点集群性能。但是,当前的现成GPU确实可以没有TB规模的HBM。我们无法保留整个点击率预测GPU HBM中的神经网络。在这项工作中,我们提出了一本小说方法(第2节)将神经网络分为两部分。第一部分是占用大量内存并在CPU上进行过训练的。另一个网络的一部分是计算密集型的,而输入功能的迭代次数。我们在GPU上训练它。训练数据模型参数在主存储器之间传输以及多GPU的HBM。但是,主内存和GPU HBM受PCIe总线限制带宽。较高的GPU数值计算性能为当通信带宽成为瓶颈时,阻塞-颈部。新兴的NVLink 和NVSwitch 技术在不涉及PCIe的情况下实现直接GPU到GPU的通信公共汽车。我们使用NVLink并设计了一个内置HBM参数服务器减少GPU数据传输
总结工作如下:
工业大规模网络经过大规模的设计和培训,缩放数据示例以帮助预测广告的点击率准确,快速和可靠。 百度点击率预测中的功能模型通常是极其稀疏的特征(例如,数百个或甚至数千亿个功能),只有很少的数量-每个向量ber(例如几百个)非零值。 这个巨大存储后,DNN模型的参数大小超过10TB仅对非零参数进行仔细量化。 因为GPU的HBM容量有限,因此保持GPU的HBM中整个模型的10TB参数。
在本文中,我们介绍了训练的两模块架构,在CPU + GPU上使用庞大的DNN CTR模型。第一个模块高维稀疏地关注嵌入学习功能,第二个模块用于密集学习功能来自第一个模块。嵌入学习在CPU上处理,以帮助学习低维密集嵌入-丁表示。由于10TB的内存密集型问题参数使得无法维持整个模型在训练过程中存储内存,我们利用SSD来存储模型参数。可以从SSD到CPU快速访问参数。通过将学习到的嵌入向量从CPU转移到GPU,计算密集型联合学习模块可以充分利用用于CTR预测的功能强大的GPU。在联合学习模式中例如,通过以下方法对几个完全连接的神经网络进行建模嵌入作为输入。这些神经网络的最后一层连接在一起以进行最终的点击率预测。图1显示了设计的CTR神经网络模型的概述。我们将在以下小节中介绍该模型的详细信息。
为了有效地学习以前的神经网络,表示是从第一个和最后一个隐藏的对象中提取的层,然后与当前输入层连接联合学习的神经网络。 具体来说,第一个隐藏层表示低级特征学习并提取最相关的来自输入层的信息。 最后一个隐藏层显示高级特征学习,并为最终CTR预测检测最抽象但最有用的信息。 我们结合了先前网络中最有意义的低层和最强大的高层信息,以获更准确的点击率预测结果。
将稀疏表存储到SSD的参数有效。它利用内存作为SSD的快速缓存,同时减少了SSD I / O,并提供低延迟的SSD访问。 它包含两个主要组件,密钥哈希索引和二级缓存管理。
后续更新