weidlxDeepRec:热门微博推荐框架性能提升实战

在线学习平台底层推理计算部分采用bridge模式,支持多个backend,包括DeepRec、TensorFlow、Torch、TensorRT等,同时支持基于CPU与GPU的模型训练与在线推理。

weidl在线学习平台

2.2.1实时性

实时性包括模型学习到用户行为的速度,模型参数的更新应用到线上模型服务的速度。推荐系统的更新速度越快,越能够反应用户最近的用户习惯,越能够给用户进行越有时效性的推荐;模型更容易发现最新流行的数据pattern,越能够让模型反应找到最新的流行趋势。工程上主要通过以下几个方面,实现推荐系统的实时性。

2.2.2大规模深度复杂模型

精排模型从snr模型迭代到mm模型

粗排双塔模型迭代到colddnn模型

3

3.1OneDNN库加速算子运算

3.1.1Select算子优化

3.1.2Transpose算子优化

同样,可以使用向量化的unpack和shuffle指令对transpose算子进行优化,即通过小Block的方式对矩阵进行转置,最终经线上测试表明,性能提升同样十分显著。

3.2关键路径优先的调度引擎

DeepRec通过对执行引擎以及底层线程池的重新设计,达到在不同的场景下,包括trianing和inference,能做到更佳执行性能。保证不同线程之间的均衡性,尽量减少线程之间的steal,避免加锁等问题。

Executor的设计需要考虑对内存的访问及其并行实现之间的联系,进行多层次任务调度,减少缓存缺失和远程内存访问,充分发挥多核、多节点CPU的并行特性,提升系统的运行性能。在线程池层面,设计Cost-aware线程池,结合内存感知以及算子类型等信息,进行针对性优化;在计算图层面,对张量内存的位置进行调度,有利于线程池的调度;在算子生成层面,进行有利于线程池任务调度的算子任务划分。

DeepRec提供的基于关键路径优化的执行引擎,通过动态采集SessionRun情况,统计与计算多组指标,并构建CostModel,计算出一个较优的调度策略。该功能中包含了基于关键路径的调度策略,根据CostModelpatching执行细碎算子的调度策略以及线程池Cost-aware调度策略等。

在稀疏模型图中,可能会存在大量细碎算子,会带来大量调度开销。有些可以通过算子融合来做优化,算子融合一般通过graphpattern匹配或者手动指定子图来确定需要融合的对象,难以覆盖全部算子。故而在executor层面,通过trace运行时数据来动态进行批量调度执行,这样可以减少非必要的细碎算子调度开销。

在线程调度层面,目前的线程池调度策略比较简单,如果当前执行线程是inter线程,优先将task调度到当前线程执行,若不是,则调度到一个random线程上。线程的balance完全由steal机制来保证。在我们的观察中,发现inter线程之间存在大量的steal,这会导致很多锁以及重复的线程调度等开销。CostModelexecutor通过采集运行时数据,来确定更佳的线程来执行任务,减少大量的steal行为。

在复杂模型上,使用DeepRec的CostModel调度,能够生成更佳的调度策略,减少调度开销。在测试的snr模型上平均耗时稳定优化2ms。

3.3动态感知的内存/显存分配器

在张量内存管理方面,通常存在两点问题,一个是内存碎片过多,另一个是没有考虑模型结构存在多分支的情况下算子并行带来的内存增长。其内存管理十分粗放,大体上都是运行时依据内存请求动态进行内存释放和分配,同时进行一些内存池管理。由于无法感知上层应用的分配请求特点,这种内存管理存在着内存碎片过多的特点。例如在不清楚后续内存请求的情况下,由于前期的多次内存分配和释放,会导致后来的大内存请求由于内存碎片的问题而需要一块新的内存或者OOM。

深度学习模型的内存分配由于其应用特点存在着明显的规律性,训练时都是以一个个mini-batch的形式训练,每个mini-batch的分配特征大体上保持一致,训练时前向过程一直分配内存,较少释放,而反向过程中会释放前向计算中的临时张量,释放大量内存,所以内存会周期性呈现先增长后降低的特征。基于此学习到执行过程中内存分配pattern,从而减少内存的动态分配以及对内存块做到最佳的复用。同时自适应内存分配器也是graph-aware的,这样使得不同子图之间存在较小的相互干扰,提高分配效率。自适应内存分配器基本架构如下图所示:

自适应内存分配器基本原则是使用尽量少内存,同时提高内存的复用率。整体来讲,自适应内存分配器解决了在稀疏场景中内存分配上存在的一些问题,主要包括,第一,减少了在稀疏场景中,大量内存分配问题,包括小内存和大内存。譬如小内存分配出现在特征的处理过程中,包括一些特征的拼接,或者在做一些交叉特征,这里会存在大量的小内存的分配。同样在模型训练也存在很多大的内存,包括attention、RNN、或者全连接层,会有一些大内存的分配。减少大内存的分配,进而也减少了minorpagefault数量。第二,对于tensor能做到更好的复用,减少了总体的内存占用量。

4

DeepRec在业务中取得的收益

4.1服务性能提升

对于双塔和colddnn模型,图计算部分耗时降低20%,粗排阶段整体耗时降低10%,单机吞吐量提升20%,模型训练模块性能提升20%,提升了训练速度并有效的改善了样本积压问题。

4.2性能提升所带来的其他收益

推荐引擎模块整体耗时减少与吞吐量的提升,减少了推荐在训练与在线推理上所使用的机器资源,极大的降低了公司成本。

在线推理服务性能提升,使推荐引擎各个模块可以计算更多的候选物料,粗排阶段可以计算更多的候选物料,提升物料库总量与扩大召回条数,精排也由1000条扩到2000条,每个阶段候选物料数的增加,都会对整体指标有显著的提升。

THE END
1.在线深度学习:在数据流中实时学习深度神经网络机器之心与经常在浅层神经网络中最优化一些凸性目标函数的传统在线学习(例如,线性的/基于核的假设)不一样的是,在线深度学习(ODL)更加具有挑战性,因为深度神经网络中的目标函数的优化是非凸的,而且常规的反向传播在实际过程中也不能很好地奏效,尤其是在线学习的设置中。在这篇论文中,我们提出了一种新的在线深度学习框架,https://www.jiqizhixin.com/articles/2017-12-30
2.学界腾讯提出并行贝叶斯在线深度学习框架PBODL:预测广告系统的近日,腾讯发表了一篇介绍并行贝叶斯在线深度学习(PBODL)框架的论文,该论文表示这一框架已经用于腾讯广告系统的点击率预测,并获得了稳定高效的性能。该论文还详细推导展示了 PBODL 框架,并在实际试验中证明了 PBODL 相对于其他在线模型具有更好的表现。机器之心简要地介绍了该论文,具体的推导及试验细节请查看原论文。https://cloud.tencent.com/developer/article/1118451
3.非常详细地说明一下常见的人工智能学习框架基于人工智能框架1.TensorFlow- 由 Google 开发,是一个广泛使用的开源深度学习框架。 - 特点:具有高度的灵活性和可扩展性,支持多种编程语言,如 Python、C++ 等。提供了丰富的模型和算法库,适用于大规模数据处理和分布式训练。 - 优势:拥有强大的社区支持,大量的预训练模型和教程可供使用。能在各种硬件平台上运行,包括 CPU、GPU https://blog.csdn.net/make77/article/details/143361646
4.探究社区框架下在线学习临场感研究这些问题的出现原因固然是多方面的,本研究主要从临场感角度出发,在探究社区理论框架下,以如何提高在线学习效果为线索,对在线学习过程中的临场感问题展开全方位的调查。通过对《小学语文课程与教学》这门在线课程进行个案分析,发现在线学习临场感三个要素在具体实践情境中的特征及作用,证实了在线学习临场感对学习者的学习https://cdmd.cnki.com.cn/Article/CDMD-10718-1020005264.htm
5.终身学习视角下用户持续在线学习意愿影响因素研究——基于MOA理论【摘? 要】以终身学习的视角,探讨在线学习持续使用意愿的影响因素,以期促进在线教育的健康和可持续 发展。基于MOA理论框架构建了在线学习持续使用意愿影响因素模型,通过问卷调研获取382份有效样本,采用结 构方程模型分析验证用户持续使用在线教育意愿的影响因素和作用路径。结果表明,对在线学习持续使用意愿影 响最大的是https://openlearn.bjou.edu.cn/info/1069/1809.htm
6.9.3网络架构搜索斯坦福21秋季:实用机器学习中文版这个整个环用的就是RL(强化学习)【Agent做了一个行动,每行动一次就看下环境给出的反馈,通过反馈更新Agent】,好处:不管是什么套上RL之后可以在整个框架上显得比较优美的,坏处:十分昂贵; 课件上的参考资料:Neural Architecture Search with Reinforcement Learning(https://arxiv.org/abs/1611.01578) https://www.bilibili.com/read/cv14505725/
7.链路层的双链路大型服务器的优化体系51CTO博客数据和模型是算法的两大核心,14年基于Pora我们现实了数据的实时更新。15年我们又在Pora上开发了基于Parameter Server架构的在线学习框架,实现了模型的实时更新。 why在线学习? 在batch learning中,一般会假设样本独立服从一个未知的分布D,学习得到的模型都是基于该分布的,如果分布变化,模型效果会明显降低。而在实际业务https://blog.51cto.com/dujinyang/5225694
8.深度解析2024年机器学习框架对比:PyTorchvsTensorFlowvs机器学习框架是实现机器学习算法的软件工具,为开发人员提供了各种功能和工具,使他们能够更轻松地构建、训练和部署机器学习模型。在机器学习框架中,PyTorch、TensorFlow和JAX是最受欢迎的框架之一。本文将对它们进行深入比较和分析,以帮助程序员更好地选择适合自己需求的框架。 https://www.jianshu.com/p/9f4914b90b33
9.易学堂在线学习系统v3.1.0易学堂在线学习系统 v3.1.0评分: YxtCMF在线学习系统是一个以thinkphp+bootstrap为框架进行开发的网络学习平台系统。 在线学习系统,为现代学习型组织提供了卓有成效的学习与培训方案, 能够通过在线学习和在线评估的方式轻松完成针对员工制订的培训计划,能够轻松建立自己的网校! 1、设计理 https://www.iteye.com/resource/weixin_38750999-13239700
10.百科荣创机器学习与应用 已更新至50讲 深度学习框架应用开发-TensorFlow 2.0 已更新至38讲 人工智能应用开发实战 已更新至28讲 嵌入式系统应用(龙芯版) 外链课程 Android AI应用与开发—项目式教学 已更新至36讲 嵌入式微控制器应用开发∣项目实战 已更新至55讲 https://www.r8c.com/index/study.html
11.Java实战之课程在线学习系统的实现java本文将采用SpringBoot+Spring+Mybatis+Thyeleaf实现一个课程在线学习系统,采用SpringBoot框架实现 前台模板用的thymeleaf数据库层采用mybatis框架注解模式,感兴趣的可以了解一下+ 目录 一、前言 项目介绍 采用SpringBoot+Spring+Mybatis+Thyeleaf实现的在线学习系统,一共2个身份。 管理员登录系统后可以管理所有用户信息,https://www.jb51.net/article/244287.htm
12.毕业设计之python系列基于Flask的在线学习笔记的设计与实现本文主要研究基于Flask框架的在线学习笔记系统的设计和实现。具体内容包括系统的需求和功能分析、技术架构设计、数据库设计、前端页面设计和后端代码实现等方面。通过本文的研究和实现,旨在提供一种可行的在线学习笔记系统方案,为学生和教师提供更好的在线学习和教学体验。 https://developer.aliyun.com/article/1260442
13.蚂蚁金服新计算实践:基于Ray的融合计算引擎架构蔡芳芳但是在线计算概念出来以后,就意味着我们的数据计算要和数据业务放在一起,所以整个部署架构、容灾体系、SLA 标准,都需要全面改变和提升。 InfoQ:与传统在线学习框架相比,蚂蚁金服的在线学习系统在哪些方面做了优化? 周家英:传统的机器学习是离线的机器学习,它的特征是迭代周期非常长,数据计算是以天或小时级别来进行的,https://www.infoq.cn/article/ualTzk5OwDb1crVHg7c1
14.在线学习简单构建石头木构建一个简单的在线学习pipeline,主要包括样本的生成,模型的训练等。众所周知腾讯开源的一个框架叫angel以及阿里的alink,这两个框架有很多算法模型,可以拿来直接使用。这里面当然也有像FTRL这样的在线更新模型,后期有机会可以利用angel和alink进行相关测试。 大数据处https://www.cnblogs.com/little-horse/p/12051566.html
15.标准库Web应用框架人工智能数据库图片处理机器学习C++ 资源大全中文版,标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。由「开源前哨」和「CPP开发者」微信公号团队维护更新。 - jobbole/awesome-cpp-cnhttps://github.com/jobbole/awesome-cpp-cn
16.cube传统机器学习: ray-sklearn分布式, xgb单机训练推理 传统机器学习算法: ar/arima时间序列算法/random-forest/random-forest-regression/lr/lightgbm/knn/kmean/gbdt/decision-tree/pca/lda/catboost/xgb/超参搜索 分布式深度学习框架: tf/pytorch/mxnet/horovod/paddlejob/mindspore分布式训练 https://gitee.com/data-infra/cube-studio