• 最新新闻
  • 用AI思维给成本降温,腾讯WeTest兼容性测试直击底价 专访乐视控股集团创始人贾跃亭:外界最关心的这十个问题 88万人力挺中国女足,支付宝蚂蚁公益林一天种出258棵樟子松 华为8月开最大规模开发者大会,正抓紧调试“鸿蒙”系统 单机训练速度提升640倍!独家解读快手商业广告模型GPU训练平台Persia 华为8月开最大规模开发者大会,正抓紧调试“鸿蒙”系统 华为8月开最大规模开发者大会,正抓紧调试“鸿蒙”系统 北京2019网络安全大会议题全球火热征集中 用AI思维给成本降温,腾讯WeTest兼容性测试直击底价 88万人力挺中国女足,支付宝蚂蚁公益林一天种出258棵樟子松 荣耀20系列有颜值有实力,百万好评成就吉尼斯世界纪录 China Innovation Decoded 对话云启资本黄榆镔:寻找“坏学生” 专访乐视控股集团创始人贾跃亭:外界最关心的这十个问题
  • 推荐新闻
  • 用AI思维给成本降温,腾讯WeTest兼容性测试直击底价 专访乐视控股集团创始人贾跃亭:外界最关心的这十个问题 88万人力挺中国女足,支付宝蚂蚁公益林一天种出258棵樟子松 华为8月开最大规模开发者大会,正抓紧调试“鸿蒙”系统 单机训练速度提升640倍!独家解读快手商业广告模型GPU训练平台Persia 华为8月开最大规模开发者大会,正抓紧调试“鸿蒙”系统 华为8月开最大规模开发者大会,正抓紧调试“鸿蒙”系统 北京2019网络安全大会议题全球火热征集中 用AI思维给成本降温,腾讯WeTest兼容性测试直击底价 88万人力挺中国女足,支付宝蚂蚁公益林一天种出258棵樟子松 荣耀20系列有颜值有实力,百万好评成就吉尼斯世界纪录 China Innovation Decoded 对话云启资本黄榆镔:寻找“坏学生” 专访乐视控股集团创始人贾跃亭:外界最关心的这十个问题
  • 热门标签
  • 日期归档
  • 单机训练速度提升640倍!独家解读快手商业广告模型GPU训练平台Persia

    来源:www.honkerbase.com 发布时间:2019-11-05

    最近,Fast Hand宣布到2020年春节将达到3亿DAU,快速手工商业化收入的步伐也在加快。快速启动从2018年“商业化第一年”推广个性化广告推荐。截至5月底,快速DAU已超过2亿。随着用户和使用时间的快速增长,为了更好地挖掘大量用户和实时数据的核心价值,推荐模型需要快速迭代,以便快速响应用户兴趣迁移。因此,模型培训效率成为企业效率和用户兴趣之间的关键环节。

    由于历史原因,大多数行业推荐模型的培训都是由CPU实现的。然而,随着从Logistic回归到深度神经网络的模型的演变以及硬件的发展,基于CPU的训练系统可能不再是最合适的解决方案。西雅图FeDA智能决策实验室根据不盲目服从,不剽窃,坚持原有技术路线的原则,推出了基于GPU的广告推荐培训系统'Persia'。过去,需要50台CPU机器进行20小时的培训。现在只需一台GPU机器即可在一两个小时内完成系统。单机效率提高640倍。这意味着:

    在过去,有50台计算机,一天只能尝试一个新的想法。新系统只需要一台计算机,可以在一两个小时内尝试新的想法。

    在过去,只有一两个学生可以同时尝试新模型,新系统可以让很多学生同时尝试自己的新想法。

    该系统已广泛应用于快速商业化,因此您可以快速测试和测试新的模型和功能。该项目由罗切斯特大学的实习生发起。他的GPU解决方案得到了罗切斯特大学的导师刘久,FeDA智能决策实验室主任以及该公司的许多算法策略专家的证实。

    FeDA Lab立即成立了一个项目团队,并决定以该项目最喜欢的喜剧角色Persia(“Pelcia”)的名称开发密集开发。该团队首先开始基于PyTorch平台解决各种技术问题,然后实施和优化TensorFlow版本。经过4个月的开发与合作,最初形成了波斯GPU广告培训系统。该系统支持PyTorch和TensorFlow解决方案,以促进模型开发学生的不同偏好。目前,Persia支持多个业务项目,每个开发人员只需一台计算机即可快速迭代试错。

    Quick Hand AI概述

    波斯背后的技术

    Persia高效培训背后的技术包括GPU分布式培训,高速数据读取和许多其他方面。

    一,GPU分布式计算加速模型培训效率

    近年来,GPU培训在图像识别和文字处理等应用中取得了巨大成功。 GPU训练极大地提高了训练机器学习模型的速度,特别是深度神经网络,其在数学运算(例如卷积)中具有独特的效率优势。但是,在广告模型中,由于存在大量稀疏样本(例如用户ID),每个id在模型中都会有相应的嵌入向量,因此广告模型往往很大,以至于单个GPU无法保存模型。目前,模型通常存储在内存中,CPU执行这个巨大的嵌入层的操作。这限制了培训的速度,导致无法在实际生产中使用更复杂的模型 - 因为使用复杂的模型会导致CPU花费太长时间来计算给定的输入并且无法及时响应请求。

    广告模型的构成:在广告模型中,模型通常由下图中的三个部分组成:

    <> > >

    l嵌入层,由用户id、广告id等组成,每个id对应一个预设大小的向量。由于id的数量通常很大,这些向量通常占据整个模型体积的99%以上。假设我们有m1这样的id:{id i}i=1M1,它们对应的嵌入层{ei}i=1M1将输出m1向量:{ei(idi)}i=1M1。

    l实时矢量特征,如图像信息和lda。该部分将嵌入向量与id对应,输入dnn预测点击率等。假设我们有m2这样的向量:{densei}i=1m2。

    DNN这部分是一个传统的神经网络,接受嵌入向量和实向量特征,输出点击率和其他预测量:prediction=dnn([e1(idi),e2(id2),…,em1(idm1),dense1,dense2,…,densem2])。

    波斯使用各种技术来训练广告模型,我们将在接下来的几节中介绍。

    1。大模型嵌入分割训练

    广告模型的嵌入部分占据了模型体积和计算体积的大部分。很有可能它不能放在单个GPU的视频内存中。为了利用gpu操作解决cpu运行缓慢,但不受单个gpu内存大小限制的问题,persia系统采用了多gpu分布式存储模型。每个gpu只存储模型的一部分并执行多卡协作。找出嵌入向量训练模型的模式。

    Persia将第i个嵌入层Ei放入第一个(i%总显卡)图形卡中,这样每个图形卡只存储一部分嵌入。同时,真实矢量特征和DNN部分被放置在第0个图形卡中。使用Persia时,它会自动计算每个图形卡中{Ei} i=1m1的值(如果为一个嵌入输入了多个ID,则计算每个值对应的嵌入向量的平均值)并传输到第0个图形卡。第0个图形卡将这些嵌入矢量和真实矢量特征组合在一起,并将它们输入DNN进行预测。

    当求解梯度时,第0个图形卡将每个嵌入层输出的导数返回到每个图形卡,并且每个图形卡负责相应嵌入反向传播算法的梯度。一般结构如下所示:

    GPU分配的负载平衡:由于嵌入是依次在每个GPU上分配的,因此可能会导致某些GPU负载明显高于其他GPU。为了让每个GPU充分利用其性能,Persia培训系统还支持在GPU上嵌入操作。执行负载平衡。

    给定k个GPU,当模型的m1嵌入层对应于l1,l2,lm1的GPU加载时,波斯将尝试将嵌入分为k组S1,S2,Sk,并将它们存储在相应的GPU。最重要的是,每组Σi∈Sjli,j大致相等。这相当于以下优化问题:

    minS1,SkVariancej [Σi∈Sjli]

    s.t.Σi∈SjVi≤C,

    其中Vi是第i个模型的大小,C是单个GPU的内存大小。 Persia使用贪婪算法来获得此问题的近似解决方案,从而将不同的嵌入均匀地分布在不同的GPU上,以实现GPU的充分利用。当需要精确求解最佳嵌入放置位置时,波斯也可以通过整数优化给出精确解。

    2.简化小型多GPU分发培训

    当模型大小可以放入单个GPU时,Persia还支持切换到当前在图像识别等任务中流行的AllReduce分布式训练模式。这不仅使训练算法更简单,而且在某些情况下也加快了训练速度。

    使用此训练模式,每个GPU将具有相同的模型,每个模型都采用样本进行梯度计算。计算梯度后,每个GPU仅在其自己的视频内存中更新模型。应该注意的是,即使模型可以放置在GPU的视频存储器中,嵌入部分通常也很大。如果在每次更新时更新所有GPU上的型号,操作速度将大大降低。因此,Persia在AllReduce模式下,每次更新模型后,所有GPU都使用AllReduce同步DNN部分,而嵌入部分每隔几次更新就会同步。通过这种方式,不会丢失太多信息并且保持训练速度。

    另外,在TensorFlow上,波斯还支持TensorFlow的'复制','PS','PS'+'异步'模式多卡培训,主要区别如下:

    其次,模型精度得到提高

    同步更新:由于常用的传统异步SGD存在梯度延迟问题,如果有n台计算机参与计算,则每台计算机的梯度计算实际上是基于n梯度更新之前的模型。在数学上,对于步骤t的模型xt,传统异步SGD的更新是:

    Xt + 1←xt?学习率×g(xt?τt),

    其中g(xt?τt)是训练样本在τt更新之前的模型的损失函数的梯度。 τt的大小通常与计算机的数量成比例。当计算机数量增加时,xt?τt和xt之间的差异越大,这不可避免地导致模型质量的下降。当Persia的训练模式存储在嵌入中时,它没有这种延迟问题。在AllReduce模式下,嵌入层中只有一个恒定的延迟顺序,因此模型的质量也得到了提高。

    优化算法:同时,Persia还可以使用Adam等动量优化器,并实现稀疏版本的更新方法,比PyTorch/TensorFlow许可证版本的内置版本快3到5倍。与使用SGD或Adagrad相比,这些算法中的许多算法可以在同一时间获得更好的模型。

    三,培训数据分布式实时处理

    快速手波斯的高速GPU培训需要将大量数据实时输入训练机。由于不同模型的样本要求不同,每个新实验所需的数据格式可能不同。所以波斯需要:

    简单,灵活且易于修改的数据处理流程,

    可以轻松并行的程序架构,

    节省带宽的数据保存方法。

    为此,Persia系统实现了基于Hadoop集群的实时数据处理系统,该系统可用于将数据从HDFS传输到HDFS中的任何多计算机分布式处理数据,以便对训练机进行多级个性化处理。传输使用高效的消息队列并设置多级缓存。传输过程实时压缩以节省带宽资源。

    1.并行数据处理

    数据处理管道:为了使波斯在数据采集方面更加灵活,波斯使用数据流来构建数据处理管道。每个处理步骤都可以在Persia中定义,它相当于一个函数,输入是前一个处理步骤的输出,输出提供给下一个处理步骤。我们将这些函数定义为{fi} i=1p。在波斯,这些功能可以单独修改。在每个函数的入口和出口处,Persia都有一个数据队列缓存,以减少每个函数获取下一个输入的时间。这些功能的操作可以完全并行,这也是管道的主要目的。以自助餐厅的餐饮为例。管道运行如下:

    数据压缩和传输:在所有处理之后,数据处理任务将数据组成小批量并使用z标准高速压缩每个批次,并通过ZeroMQ将压缩数据传输到训练机器进行训练。为了将批处理操作定义为函数B并将压缩操作定义为函数C,每个数据处理任务等效于函数C(B(fp(fp≤1(Δf1(来自HDFS的原始数据)))))。

    队列服务器:Persia将在Hadoop集群中启动多个数据处理任务,并且每个数据处理任务都是完全独立的。数据处理任务本身不知道要处理哪些数据,而是通过请求训练机器来知道训练数据的位置。这样做的好处是,在Persia中,训练机可以根据自己的需要动态控制使用的训练数据,数据处理任务相当于无状态服务,即使训练机取代了新的训练任务,不需要重新启动数据处理。任务。具体来说,Persia中的培训机会启动队列服务器进程,队列服务器将返回下一个要读取的数据文件以响应数据处理任务的请求。 Persia的每个数据处理任务都从队列服务器请求多个文件,并从HDFS并行读取它们。

    整个系统的结构如下:

    2.实时培训

    由于波斯的数据处理任务在获取数据时完全依赖于训练机的指令,因此波斯支持刚刚生成的数据的在线训练场景,并且只需要将队列服务器返回到最近生成的数据文件。因此,波斯在培训期间在数据阅读模式方面非常灵活。对队列服务器的简单修改可以支持任意数据读取的顺序,甚至培训也可以决定接下来要使用的数据。

    3.更快的数据读取速度:训练机器共享内存以读取数据

    由于训练机必须同时接收从不同数据处理任务发送的大量数据,并且解压缩并传输到用于实际训练操作的训练过程,所以接收端必须能够执行并行解压缩和高速数据传输。为此,Persia使用ZeroMQ设备从多个任务接收压缩数据,并使用多个解压缩过程读取设备。每个解压缩过程都是独立解压缩的,并与训练过程共享内存。解压缩完成后,解压缩过程将可以直接使用的批量样本放入共享内存中,培训任务可以直接使用批量进行培训,无需进一步序列化反序列化。

    培训效果

    波斯系统目前在一台机器上实现了以下训练效果:

    数据大小:100 T数据。

    样本数量:25亿个培训样本。

    8卡V100电脑,25Gb带宽:共1小时训练时间,每秒640,000个样本。

    8卡1080Ti计算机,10Gb带宽:不到2小时的培训时间,每秒400,000个样本。

    4张卡1080Ti高达300,000个样本/秒,2张卡1080Ti高达200,000个样本/秒。

    Persia与原始ASGD CPU平台具有相同的测试AUC数据。

    波斯支持大批量,例如25k。

    总之,波斯不仅训练比CPU平台更快,而且还节省了大量的计算资源,使得同时尝试多个实验变得容易。

    展望:分布式多机培训

    将来,波斯系统将开始在分布式多GPU计算机上进行培训。与成熟的计算机视觉和其他任务不同,由于广告任务中模型的大小增加,传统的分布式训练方法面临着计算机之间的同步瓶颈,这将大大降低训练效率。 Persia系统将支持分散式梯度压缩训练算法,具有较低的通信成本和更好的系统容灾能力。据快速FeDA智能决策实验室负责人刘伟介绍,该算法结合了异步分散并行随机梯度下降(ICML 2018)和梯度压缩补偿算法(Doublesqueeze:并行随机梯度下降,双通道误差补偿)压缩,ICML 2019),并有一个严格的理论保证,快节奏的波斯系统有望在多机情况下在一台机器的基础上实现几倍到几十倍的效率。

    友情链接: