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

作者 | 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 图神经网络模块实现信息聚合,失去图的最终示意,并配合上游工作实现跨模态异构图端对端优化。 ...

February 28, 2023 · 1 min · jiezi

关于框架学习:接口测试框架接入性能测试实践分享

前言====== 现如今接口测试在软件品质行业中的位置,曾经越来越重要,绝对于下层的UI自动化测试和上层的单元测试,接口测试的“低”投入、“高”回报,也成了绝大多数品质保障实际的首选。 在发展接口测试时,往往很多时候都只在关注接口的功能性品质,而对于非功能性的品质保障验证,比方性能、平安,在理论工程利用或者设计用例时关注度显著有余(甚至很多压根没有这方面的测试实际)。 明天就以Python系下requests库(罕用于接口测试)和Robot FrameWork框架为例,和大家聊聊在接口测试过程中,和性能需要等同重要的性能测试查看项。 接口测试须要思考的性能查看项================== 在接口测试过程中,除了要思考产品需要的失常、异样、数据正确性等显性功能需要品质外,还有很多隐性需要品质须要关注,以性能测试为例,常见须要关注的查看项包含,但不限于: 1、单用户登录的响应工夫是否小于 3 秒;2、单用户登录时,后盾申请数量是否过多;3、高并发场景下用户登录的响应工夫是否小于 5 秒;4、高并发场景下服务端的监控指标是否合乎预期;5、高集合点并发场景下,是否存在资源死锁和不合理的资源期待;6、长时间大量用户间断登录和登出,服务器端是否存在内存透露。本文重点以接口响应工夫为例,介绍如何在requests库和Robot FrameWork框架纳入性能测试项,其它性能查看项思路根本都是相通的。 requests库接口测试校验响应工夫======================= 通常在联合requests库发展接口测试时,发送申请后,接口的响应工夫,也是咱们须要关注的一个重点,如果响应工夫太长,从产品业务或者用户角度也是不可承受的。那如何进行申请响应工夫校验,也成为了接口测试人员须要把握的一项小技能。 针对requests库校验申请响应工夫,给大家提供两种实现思路: 一、借助申请响应超时机制 具体实现: #-*- coding:utf-8 -*-import requestsfrom requests import exceptionstry: req = requests.post(url=url, data=data, headers=headers, verify=False, timeout=3) print r.json()except exceptions.Timeout as e: print("抛出异样") 在上述实现中,通过减少timeout参数,设置申请响应超时机制,当timeout=3(可自在定义),当申请响应工夫超过3秒,则会抛出超时异样。 其中,额定补充的知识点:超时(默认单位:s),有两种设置超时办法: timeout=5:设置5s的超时工夫timeout=(5,10):设置区间工夫的期待 当申请呈现超时时,则会抛出此异样:requests.exceptions.ConnectTimeout: HTTPConnectionPool 2、获取响应工夫办法:req.elapsed.total_seconds() 二、借助requests接口响应返回值elapsed 具体实现: #-*- coding:utf-8 -*-import requestsr = requests.post(url, data=data, headers=headers)print(r.status_code)print(r.elapsed)print(r.elapsed.total_seconds())print(r.elapsed.microseconds)print(r.elapsed.seconds)elapsed_time = r.elapsed.total_seconds() #获取理论的响应工夫 assert elapsed_time>3 上述代码实现中,通过获取申请返回的响应值来获取接口响应工夫,常见的几个获取响应工夫参数为: elapsed.total_seconds:获取响应工夫,单位s (举荐)elapsed. microseconds:获取响应工夫,大于1s的时候,只截取了前面的小数局部elapsed.seconds:单位s,响应工夫小于1s时,为0Robot Framework框架校验响应工夫=========================== 在上述咱们介绍了requests库在发展接口测试过程,校验申请响应工夫的实现思路。而通过Robot Framework框架发展接口测试,次要会依赖RequestsLibray库,而因而实现思路也是一样的。 ...

September 15, 2020 · 1 min · jiezi