拥抱PyTorch,来自Gauss的自我革命算法算子推理gausspytorchtensorflow

导语自2015年TensorFlow开源以来,伴随着深度学习的迅猛发展,通用深度学习框架经历了10年的高速发展,大浪淘沙,余者寥寥。曾几何时,也有过性能与易用性之争,也有过学术界和工业界之分,但随着本轮大模型应用的推波助澜,PyTorch无疑已经成为事实上的大模型“标准框架”。时至今日,PyTorchAOTCompile特性的发布更是直接撕下了TensorFlow最后一块“易于部署”的遮羞布。社区活跃度、性能和易用性,数张无形的大手,推搡着我们去拥抱更加现代化的新质生产力——PyTorch。一、Torch做推荐,到底行不行?

基于上述背景,Gauss总结了实时推荐系统和生成式推荐对建模工具链的4大要求,并依此重新审视PyTorch框架,决策其应用于推荐场景的可能性。

关键技术1——动态词向量

大规模稀疏的词向量,是时下个性化推荐系统的基础配置,TensorFlow生态中存在TFRA[3]扩展,以便支持百亿量级动态变化的词向量。在PyTorch生态中,原不具备对应的功能,感谢TorchRec团队的贡献,其在PyTorch官方扩展TorchRec中引入了动态词向量的支持[4],极大的降低了这部分的入门门槛。

关键技术2——高性能、强一致的推理实现

关键技术3——FlashAttention

关键技术4——容灾与弹性训练

实时推荐系统通常要求流式的进行模型训练,即便是分钟级别的训练中断也会对推荐效果产生不良影响[9]。此外,流式的样本管线通常存在波峰与波谷效应,如果训练资源一直保持波峰期的级别,将会造成极大的浪费。支持在不影响模型效果的前提下,在波峰波谷期动态的扩容与缩容,是评判一个实时训练框架是否完备的重要标准之一。额外的,低优(低价)GPU资源在公司内的推广使用,也为弹性训练打下了政策基础。框架方面,TensorFlow本身并不具备动态扩缩容的能力,但配合第三方框架(例如Horovod)可以实现简单的弹性训练。PyTorch内置了的能力,但具体应用到推荐领域的大规模稀疏模型上,也面临恢复续训和扩缩容速度较慢,不能秒级容错的局限。综上,在容灾与弹性方面,TensorFlow与PyTorch的能力均是捉襟见肘,需要额外补齐。

除了上述关键技术之外,分布式训练、异构设备(尤其是910B)的支持,对推荐模型的训练和推理也十分重要,PyTorch在这些方面与TensorFlow相比,各有千秋,总体上来说,均不会形成掣肘,这里就不过多展开了。

综上,今日之PyTorch不仅完全胜任推荐系统和生成式推荐的核心要求,与TensorFlow相比,在其中若干方面甚至更胜一筹。Gauss团队基于PyTorch生态快速搭建系统验证了上述想法,此外,还针对生态中的关键技术进行了一轮优化,在生成式推荐场景下,相比TensorFlow实现,训练速度提升3x倍,结合multi-targets[2]特性,推理吞吐提升数十倍。

二、Gauss-Torch工具链

图1Gauss-Torch模型训练推理示意

上图展示了Gauss-Torch在流式模型实时训练中的核心流程。在Embedding存储方面,Gauss-Torch沿用了Gauss-TensorFlow中TierPS与WePS[8]的双引擎设计,在训练时采用成本友好的TierPS,在推理时采用高可用的WePS(不上线的模型、非实时模型可以不部署)。与Gauss-TensorFlow不同的是,TierPS中去除了GPU缓存的部分,这部分作为Gauss-Torch的核心组件单独进行设计。训练过程中,框架会定期(秒级)向WePS同步有更新的Embedding参数,同时借助HDFS/WFS同步剩余模型参数,保障推理参数的实时性。

在Embedding查询部分,Gauss-Torch并没有直接采用TorchRec中的分布式缓存策略,因为其在多机多卡场景下的扩展性并不好(在通讯占比较高的场景下,2机性能约为单机的1.6x左右),而是借鉴发表在SOSP'23的工作Bagpipe[7]实现了一套流水线感知的单机Embedding缓存,通过启发式的预取与淘汰策略,实现了高通讯压力下线性的扩展能力。

自定义Attention融合算子方面,Gauss-Torch初期基于Triton实现了一版HSTU[2]专用融合算子,性能相比于使用Torch算子拼接而成的实现已有不错的提升,近期团队内使用更加底层的cuda+cutlass接口重构了这部分实现,单算子性能相较于Triton版本又有了2x~4x的提升。当然,性能只是一个方面,更重要的是赋能算法同学尝试不同的自定义Attention实现,快速实现业务价值。Gauss团队目前正基于Torch提供的编译优化技术,着手抽象更加灵活的Attention接口,届时,一天内开发高性能融合Attention核将不再是奢望。

推理方面,Gauss-Torch采用了社区最近几个版本发布的AOTInductor特性,其通过TorchDynamo将用户模型转化为一组顺序执行的代码,再使用TorchInductor将其编译为可执行的二进制程序发布上线,几乎完全兼容所有Torch算子和用户自定义算子。与Torch其他在线推理方案相比(ONNX,TensorRT)保障性能的同时,具备优秀的兼容性与训练/推理一致性。

最后,在容灾和弹性训练方面,Gauss-Torch基于Ray,以Torch-Elastic为基础,摒弃了必须从checkpoint恢复的机制,结合多副本的设计实现了秒级故障恢复、分钟级弹性扩缩容的能力。

三、结语

参考文献

[2]ZhaiJ,LiaoL,LiuX,etal.Actionsspeaklouderthanwords:Trillion-parametersequentialtransducersforgenerativerecommendations[J].arXivpreprintarXiv:2402.17152,2024.

[7]AgarwalS,YanC,ZhangZ,etal.Bagpipe:Acceleratingdeeprecommendationmodeltraining[C]//Proceedingsofthe29thSymposiumonOperatingSystemsPrinciples.2023:348-363.

[8]SimaC,FuY,SitMK,etal.Ekko:A{Large-Scale}deeplearningrecommendersystemwith{Low-Latency}modelupdate[C]//16thUSENIXSymposiumonOperatingSystemsDesignandImplementation(OSDI22).2022:821-839.

[9]HeX,PanJ,JinO,etal.Practicallessonsfrompredictingclicksonadsatfacebook[C]//ProceedingsoftheEighthInternationalWorkshoponDataMiningforOnlineAdvertising.2014:1-9.

THE END
1.机器学习中的优化与正则化:深入理解L1和L2正则化这篇文章我们将探讨机器学习中两个核心议题——优化和正则化。 其中,正则化是减少过拟合的关键方法之一。在本文中,我们将从拉格朗日乘数法、权重衰减以及贝叶斯概率三个角度来解析L1和L2正则化,并解释它们如何帮助我们改善模型性能。 正则化的概念及其重要性 https://www.jianshu.com/p/3139940a9807
2.MindSporeQ:MindSpore的IR设计理念是什么? A:函数式:一切皆函数,易于微分实现;无副作用,易于实现自动并行化分析;JIT编译能力:图形IR,控制流依赖和数据流合一,平衡通用性/易用性;图灵完备的IR:更多的转换Python灵活语法,包括递归等。 Q:MindSpore会出强化学习框架么? http://mindspore.cn/doc/faq/zh-CN/r1.2/supported_features.html
3.2020届计算机科学方向毕业设计(论文)阶段性汇报推荐系统与用户进行多步交互的过程可以建模为马尔科夫决策过程并使用强化学习算法训练推荐策略,但在真实的工业界场景中,在线上进行强化学习模型的训练成本极高。本课题希望使用推荐系统与用户交互的历史数据离线训练强化学习算法,并探讨这一模式的问题解决方式。 https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3709
4.对于强化学习的梳理强化学习可以不用神经网络吗强化学习是属于机器学习的一种,机器学习主要分监督学习、非监督学习、半监督学习、增强学习。 强化学习的核心逻辑,那就是智能体(Agent)可以在环境(Environment)中根据奖励(Reward)的不同来判断自己在什么状态(State)下采用什么行动(Action),从而最大限度地提高累积奖励。 https://blog.csdn.net/qq_38169383/article/details/105902333
5.详解经典强化学习算法,搞定“阿尔法狗”下围棋在线策略方法和离线策略方法依据策略学习的方式对强化学习算法进行划分(图5)。 图5 在线策略方法和离线策略方法 在线策略方法试图评估并提升和环境交互生成数据的策略,而离线策略方法评估和提升的策略与生成数据的策略是不同的。 这表明在线策略方法要求智能体与环境交互的策略和要提升的策略必须是相同的。 https://cloud.tencent.com/developer/article/2280864
6.驱动力优化(精选十篇)作为教师,不仅应该在学生回答正确问题的时候对其进行鼓励,还应该对其良好的学习态度、敢于回答问题的勇气进行鼓励,让每位同学都能从教师的鼓励中找到学习的动力,体验成功的愉悦。教师也会因为对学生的正面激励,在学生心中留下好的印象,从侧面提高学生对英语学科的学习热情。 https://www.360wenmi.com/f/cnkeyymau1xw.html
7.项目管理课程设计总结赏析八篇创新理论中RTC算子,即资源(Resources)、时间(Time)、成本(Cost)算子,它是将资源、时间和成本因素进行一系列变化的思维试验。创新理论给出的思考问题的方法不是僵化的、静止的,也不是盲目的、漫无边际的,而是力求揭示事物的本质、因果、联系、整体和局部、过去和未来,同时又是灵活的、富有想象力的,这些都是创新思维https://fzkxyj.fabiao.com/haowen/12505.html
8.FEM前沿研究:智能工业数据解析与优化—论文—科学网通过机器学习、数理学习、信息学习、强化学习等数据解析技术,对系统优化过程进行动态解析,挖掘优化空间结构特征和寻优路径对优化目标的影响规律等,实现优化空间的可视化,用于指导解空间的降维和寻优路径的自学习。将数据解析引入到系统优化方法中能够显著提高优化的效率,为解决大规模实际复杂工程管理难题提供有效的优化求解https://news.sciencenet.cn/htmlpaper/2021/7/20217151683757164957.shtm
9.识别过程范文9篇(全文)用精益理论来分析,首先需要识别出不同客户群体所关注的人才价值;然后围绕这些人才价值,来识别核心的价值流;消除人才培养过程中由于价值不清、目标不明导致的时间浪费、所学知识与社会脱节、学习效率低下等各种系统浪费;进而能让价值连续流动,大学生四年学习过程中,学校应该整合资源,在不同阶段,连续不断的提供相应的https://www.99xueshu.com/w/ikeyoefsbpd0.html
10.AI求职百题斩2019深度学习面试题型介绍及解析汇总合集有些平台是专门为深度学习研究和应用进行开发的,有些平台对分布式计算、GPU 等构架都有强大的优化,能否用这些平台 / 软件做其他事情?比如有些深度学习软件是可以用来求解二次型优化;有些深度学习平台很容易被扩展,被运用在强化学习的应用中。 CNN 中术语解释 CNN 网络的主要参数有下面这么几个: https://paper.yanxishe.com/blogDetail/14696
11.什么是自动泊车系统?自动泊车路径规划和跟踪技术分析离线阶段算法pipeline 先来粗略浏览下AVM算法Pipeline包含那些算子: 2D AVM 2D AVM Pipeline 3D AVM 3D AVM Pipeline 基于畸变表的鱼眼相机去畸变 1.1鱼眼相机畸变模型 普通相机和广角相机的投影方式一般为透视投影,即通过三角形相似原理,将相机坐标系下三维世界中的物体投影到平面上,这是基于理想的透视投影模型(无畸变https://m.elecfans.com/article/2020392.html
12.生成式问答中减轻幻觉;浅谈cudagraph在llm推理中的应用为了克服这些问题,公司探索了数据驱动的离线强化学习路径,通过历史数据构建虚拟环境,减少对仿真的依赖,从而降低智能化改造的门槛。目前,公司推出了离线强化学习平台“仙启(REVIVE)”,在多个领域实现了突破,如L3级城市水务智能化方案和高精尖设备的制造控制等,显著提升了控制精度和稳定性。http://news.miracleplus.com/share_link/38892
13.机器学习20231摘要:尽管目标驱动导航已经有了一些成功的应用,但是现有的基于深度强化学习的方法仍然存在数据效率低的问题.原因之一是目标信息与感知模块解耦并直接作为决策条件引入,导致场景表示的目标无关特征在学习过程中扮演对手角色。针对这一问题,提出了一种新的目标引导的基于变换的强化学习(GTRL)方法,将目标物理状态作为场景编码http://arxivdaily.com/thread/36165