PGLBox 超大规模 GPU 端对端图学习训练框架正式发布

news/2024/4/25 6:47:11/文章来源:https://blog.csdn.net/lihui49/article/details/129257739

在这里插入图片描述

作者 | PGLBox项目组

导读

PGLBox是百度研发的基于GPU的大规模图模型训练框架,支持数百亿节点和边的图模型全GPU训练,已在百度广泛部署。相比业界主流的分布式 CPU 解决方案,PGLBox 具有超高性能、超大规模、算法丰富、灵活易用、落地广泛等优势。与传统的基于GPU的分布式解决方案相比,PGLBox可以在相同的成本下提升27倍的训练速度。

全文2232字,预计阅读时间6分钟。

图神经网络(Graph Neural Network,GNN)是近年来出现的一种利用深度学习直接对图结构数据进行学习的方法。通过在图的节点和边上制定聚合的策略,GNN 能够学习到图结构数据中节点以及边内在规律和更加深层次的语义特征。图神经网络不仅成为学术界研究热点,而且已经在工业界广泛应用落地。特别在搜索、推荐、地图等领域,采用大规模分布式图引擎对异构图结构进行建模,这已经成为技术发展的新趋势。目前,分布式图学习框架通常在 CPU 集群上部署分布式图服务以及参数服务器,来支持大规模图结构的存储以及特征的更新。然而,基于 CPU 算力的图学习框架在建设成本、训练速度、稳定性以及复杂算法支持等方面都存在不足。

因此,百度飞桨推出了**能够同时支持复杂图学习算法+超大图+超大离散模型的 GPU 大规模图学习训练框架 PGLBox。**该框架结合了百度移动生态模型团队在大规模业务技术的深耕,凝聚飞桨图学习 PGL 丰富的算法能力与应用经验,并依托飞桨深度学习平台通用的训练框架能力与灵活组网能力。不仅继承了飞桨前期开源的 Graph4Rec[1]的超大规模、灵活易用和适用性广的优点[2],而且训练性能获得了显著提升,图算法能力支持更广泛。

01 超高性能 GPU 分布式图学习训练框架

图片
随着图数据规模的不断增大,基于 CPU 分布式的解决方案需要大量的跨机器通讯,导致训练速度慢且稳定性差。为了解决这个问题,PGLBox 将图存储、游走、采样、训练全流程 GPU 化,并实现流水线架构,极致提升异构硬件效率,大幅提升了图学习算法的训练速度。同时,针对 NVLink 拓扑、网卡拓扑非全互联问题,实现智能化中转通信,进一步提升训练能力。相比基于 MPI CPU 分布式的传统方案,训练速度提升 27 倍。PGLBox 实现了多级存储体系,对图、节点属性和图模型进行差异化存储,即图结构全显存、节点属性二级存储和图模型三级存储,将图规模提升了一个数量级。为了平衡磁盘、内存、显存之间的占用,PGLBox 实现了均衡训练,对 Pass 大小平滑处理,削峰填谷,降低峰值显存,使得在单机情况下,可支持的图规模得到大幅提升。

02 全面升级预置的图表示学习算法

图片

图节点的属性是多种多样的,可以是文本、图像,也可以是用户画像、地理位置等,如何更好地建模节点特征是图表示学习的一个重要挑战。随着预训练模型席卷 NLP、CV等领域,预训练 Transformer 是节点属性建模不可或缺的一部分。而复杂结构的 Transformer 等预训练模型的引入所增加的大量计算量,是以往 CPU 分布式图表示学习框架不可接受的。**得益于 PGLBox 同时兼备 GPU 的运算能力和大规模图的支持,让我们能够同时实现大规模预训练模型 + 大规模图结构信息 + 大规模离散特征的端对端统一建模。**在大规模图数据,通过三级存储加载之后,我们可以通过加载不同的大规模预训练模型(例如 ERNIE 语言大模型、ERNIE-ViL 跨模态大模型等)来建模更丰富的节点信息。对于大规模离散特征如用户ID、商品ID等,我们可以同时利用到 PGLBox 提供的 GPU 参数服务器能力来建模。最后通过图信息汇聚的 Graph Transformer 图神经网络模块完成信息聚合,得到图的最终表示,并配合下游任务实现跨模态异构图端对端优化。

基于 PGLBox 的 GNN 技术获得了 NeurIPS 2022 大规模 GNN 挑战赛冠军[3],同时入选了百度 Create2022 十大黑科技,并在 WAVE SUMMIT 2022 上作为飞桨 2.4 版本最重要的框架新特性之一发布。凭借其超高性能、超大规模、超强图学习算法、灵活易用等特性,PGLBox 在百度内大量业务场景实现广泛应用并取得显著业务收益,如广告推荐、信息流推荐、百度搜索、百度网盘、小度平台等。

03 在哪里可以找到我们

看到这里相信大家已经迫不及待想要开箱试用了吧!PGLBox 已全面开源,欢迎大家试用或转发推荐,详细代码库链接请戳下方链接!

⭐️ 欢迎STAR收藏 ⭐

https://github.com/PaddlePaddle/PGL/tree/main/apps/PGLBox

更多交流欢迎通过邮件 pglbox@baidu.com 与我们联系,感谢支持!

——END——

参考资料

[1]https://arxiv.org/abs/2112.01035

[2]https://mp.weixin.qq.com/s/aSxFpkyX5MyFYLfZuIagzg

[3]https://ogb.stanford.edu/neurips2022/results/

推荐阅读:

百度工程师带你了解Module Federation

巧用Golang泛型,简化代码编写

Go语言DDD实战初级篇

Diffie-Hellman密钥协商算法探究

贴吧低代码高性能规则引擎设计

浅谈权限系统在多利熊业务应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_75270.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复习知识点十之方法的重载

目录 方法的重载 练习1: 练习1: 数组遍历 练习2: 数组的最大值 练习3: 练习4: 复制数组 基本数据类型和引用数据类型 方法的重载 Java虚拟机会通过参数的不同来区分同名的方法 练习1: public class Test4 {public static void main(String[] args) {//调用方法 // …

【架构师】零基础到精通——服务与网关

博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言…

Raki的读paper小记:BART

Abstract&Introduction&Related Work 研究任务 预训练语言模型已有方法和相关工作 BERT等面临挑战 已有的方法依赖下游任务创新思路 融合了双向和自回归模型随机打乱原始句子的顺序,并同时使用一种novel的填空方案,文本的span只用一个masked to…

近期常见组件漏洞更新:

(1)mysql 5.7 在2023年1月17日,发布了到5.7.41版本 mysql 8.0 在2023年1月17日,发布了到8.0.32版本 MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/ (2)Tomcat8在202…

RedisTemplate 的基本使用手把手教

下载实例源码 使用步骤 1、引入 spring-boot-starter-data-redis 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>2、在 application.yml 配置 R…

springboot使用Gateway搭建网关服务及Nacos实现动态路由

实际工作中我们会有很多个项目&#xff0c;这些项目共同使用同一个网关gateway来实现路由&#xff0c;各个项目之间调用以及前端调用都可以直接通过服务名称来调用&#xff0c;不用管ip&#xff0c;后续项目迁移到其它服务器也不受影响。 首先搭建springboot微服务&#xff0c…

CANoe TC8测试脚本的结构介绍

CANoe TC8脚本是通过vTESTstudio平台编写。每个协议(ARP\ICMPv4\IPv4\UDP\TCP\SOMEIP\DHCP)都有自己的vtt文件。每个vtt文件的测试树结构为: Test Fixture Fixture Preparation Test Case Test Case … Test Case Test Case Fixture Completion 当Test Fixture里的Test Case…

分布式ID生成系统

目录背景常用分布式ID生成系统介绍UUIDSnowflake背景 在大多数复杂的分布式系统中&#xff0c;往往需要对大量的数据和消息进行唯一标识。而对分布式系统后台数据库的分库分表后需要有一个唯一的ID来表示一条数据或者是消息。那么我们分布式系统ID一般都有哪些需求呢&#xff1…

初识CSS

1.CSS语法形式CSS基本语法规则就是:选择器若干属性声明由选择器选择一个元素,其中的属性声明就作用于该元素.比如:<body><p>这是一个段落</p><!-- style可以放在代码的任意地方 --><style>p{/* 将字体颜色设置为红色 */color: red;}</style&g…

C++修炼之练气期一层——命名空间

目录 1.引例 2.命名空间的定义 3.命名空间的使用 4.命名空间使用注意事项 1.引例 #include <stdio.h> #include <stdlib.h>int rand 10;int main() {printf("%d\n", rand);return 0; } 当我们用C语言写下这样的代码&#xff0c;看着并没有什么语法…

【手把手一起学习】(七) Altium Designer 20常用PCB设计规则

1 常用PCB设计规则 PCB规则设计是PCB设计中至关重要的环节&#xff0c;它约束了电气要求、布线方式、器件摆放位置等&#xff0c;为后续的手动布局、布线提供依据。完善的PCB规则设计&#xff0c;可以减少设计中的错误&#xff0c;提高PCB设计效率。 1.1 PCB设计规则管理器 …

谷歌搜索技巧大全 | 谷歌高级搜索语法指令

谷歌搜索技巧是利用各种高级搜索语法或者搜索指令&#xff0c;让我们能够使用Google进行精确化的搜索&#xff0c;外贸找客户和学术文件查找都可以应用到这些搜索技巧。(大部分命令也适用百度搜索)。Google通过互联网收集数据&#xff0c;抓取有意义的信息&#xff0c;将其存储…

【知识图谱】架构-特点-缺点简介

架构物联网、云计算、人工智能等新一代信息技术的迅猛发展&#xff0c;带来了制造业的新一轮突破&#xff0c;推动着制造系统向智能化方向发展&#xff0c;驱动着未来制造模式的创新。其中数据和知识是实现制造业与新一代信息技术融合的基础&#xff0c;是实现智能制造的保障。…

C++杂谈(一)

前言 本系列也是慢更系列&#xff0c;主要收纳一些还不够单独成系列的C的杂项问题&#xff0c;或是一些与C有关&#xff0c;但不属于核心知识的一些旁系问题。 关于C与C的关系 「学C要先学C吗&#xff1f;」 「C和C是不是完全不同的两个语言&#xff1f;」 「这个语法是C的还…

Android 动画详解

Android动画的分类与使用学习Android必不可少的就是动画的使用了&#xff0c;在Android版本迭代的过程中&#xff0c;出现了很多动画框架&#xff0c;这里做一个总结。Android动画类型分类逐帧动画【Frame Animation】&#xff0c;即顺序播放事先准备的图片。补间动画【Tween A…

NSGA-Ⅲ源代码

NSGA-Ⅲ源代码如下&#xff0c;供大家学习和应用。该算法在梯级水电-火电的应用订阅专栏即可查看&#xff1a; 1、主函数 % % Copyright (c) 2016, Mostapha Kalami Heris & Yarpiz (www.yarpiz.com) % All rights reserved. Please read the "LICENSE" file…

前端经典react面试题及答案

为什么 React 元素有一个 $$typeof 属性 目的是为了防止 XSS 攻击。因为 Synbol 无法被序列化&#xff0c;所以 React 可以通过有没有 $$typeof 属性来断出当前的 element 对象是从数据库来的还是自己生成的。 如果没有 $$typeof 这个属性&#xff0c;react 会拒绝处理该元素。…

C++plog库,轻量级日志框架(日志库)

文章目录主要头文件及使用方法解释plog/Log.hplog/Appenders/ColorConsoleAppender.hplog/Appenders/RollingFileAppender.hplog/Formatters/TxtFormatter.h三个核心概念Formatter&#xff1a;格式化程序格式化程序举例TxtFormatterJsonFormatterCsvFormatterSyslogFormatterAp…

真的,MyBatis 核心源码入门看这个就够了(四)

4 SQL执行 再次回到demo的示例代码&#xff0c; org.junit.jupiter.api.Testvoid queryBySn() throws IOException {//1 读取配置文件InputStream in Resources.getResourceAsStream("mybatis-config.xml");//2 加载解析配置文件并获取SqlSessionFactory对象SqlSes…

华为OD机试模拟题 用 C++ 实现 - 寻找连续区间(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明寻找连续区间题目输入输出示例一输入输出说明示例二输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率…