Facebook 开源高速大规模图嵌入工具 PBG

简介: 比起一般的嵌入软件,表现更快,同时能产出与先进模型相当的嵌入质量。

雷锋网 AI 科技评论按:如何有效处理大规模图像,对于推动人工智能研究与应用的发展而言至关重要。这也是为何 Facebook AI 选择创建并开源 PyTorch-BigGraph(PBG)的原因—— 一款更快、更轻易为大规模图像生成图嵌入的工具,特别针对那些模型对内存来说过大的多关系图嵌入(multi-relation graph embeddings)。 PBG 比起一般的嵌入软件,表现更快,同时能产出与先进模型相当的嵌入质量。有了这个新工具,任何人都能使用单个或多个并行机器迅速生成高质量的大规模图嵌入。雷锋网(公众号:雷锋网) AI 科技评论将开源博文编译如下。

作为例子,我们发布了首个包含 5000 万个维基百科概念的完整维基嵌入图,以供 AI 研究社区使用。该嵌入图可以协助其他研究人员执行基于维基数据概念的机器学习任务。 

PBG 开源网址:https://github.com/facebookresearch/PyTorch-BigGraph

维基嵌入图:https://dl.fbaipublicfiles.com/torchbiggraph/wikidata_translation_v1.tsv

由于 PBG 是采用 PyTorch 进行编写的,因此研究人员和工程师可以轻易替换损失函数、模型以及更多其他组件,PBG 将自行计算梯度并进行扩展。

大规模图嵌入

当今的图像规模可能非常大,比如具有数十亿个节点与数万亿个边缘。这时候,常规的图嵌入方法无法很好地进行扩展以适应大规模图像操作。总的来说,大规模图嵌入存在两种挑战:首先,系统的速度必须足够快,以满足实际科研与生产的用途。以现有的方法为例,训练一个具有万亿边缘的图像可能需要耗费数周甚至数年时间。第二个挑战是内存。例如,要想嵌入具有 20 亿个节点、每个节点具有128个浮点参数的图像,需要我们具备高达 1TB 的参数,这远远超出了商用服务器的内存容量。

而 PBG 通过对图像进行块分区(block partitioning),能够有效克服图嵌入的内存问题。这些节点被随机划分为 P 个大小合适的分区,以适应内存容量,然后再根据源节点与目标节点将边缘划分为 P2 buckets。

TB17r3KPhjaK1RjSZKzXXXVwXXa.jpg

针对大规模图像的 PBG 分区方案。节点被划分为 P 个大小合适的分区。然后根据源节点与目标节点将边缘划分为 buckets。在分布模式下,多个 buckets 的非重叠分区将能被并行执行(如蓝色方块所示)。

把节点与边缘进行分区后,我们每次可以在一个 bucket 中进行训练。 在对 bucket(i,j)的训练过程中,只有分区 i 和 j 的嵌入会被存储到内存中。

PBG 提供两种方法以供进行分区图嵌入训练。在单个机器训练中,嵌入与边缘一旦不被使用,就会被替换出磁盘;在分布式训练中,嵌入将分布在多台机器的内存里。

分布式训练

PBG 通过 PyTorch parallelization primitives 来实现分布式训练。 由于单模型分区每次只能被一台机器使用,因此一次最多可以在 P / 2 台机器上进行图嵌入训练。 只有机器需要切换至新的 bucket 时,才会传送模型数据。 为了保证分布式训练效果, PBG 通过经典参数服务器模型来表示不同类型边缘的共享参数。

TB1S..dPmzqK1RjSZFLXXcn2XXa.jpg

PBG 分布式培训的体系结构图。 机器通过 lock server 来协调训练不相交的 buckets。 分区模型的参数通过分片分区服务器进行交换,并共享通过分片参数服务器异步更新的参数。

PyTorch-BigGraph 评估结果

为了准确评估 PBG 的性能,我们采用包含超过 1.2 亿个节点与 27 亿个边缘的开源 Freebase 知识图。此外还采用较小的 Freebase 知识图子集——FB15k,它包含了 15,000个节点和600,000个边缘,一般被用作多关系嵌入方法的基准。

TB1XNIgPhTpK1RjSZR0XXbEwXXa.png

PBG 基于 Freebase 知识图所训练的嵌入 t-SNE 图。如国家、数字和科学期刊之类的实体具有类似的嵌入情况。

论文中,我们成功证明 PBG 与 FB15k 数据集最先进的嵌入方法效果相当。

TB1_rQnPgHqK1RjSZFEXXcGMXXa.jpg

各种嵌入方法在 FB15k 数据集链路预测任务上的性能表现。 PBG 在 TransE 与 ComplEx 嵌入模型的基础上达到了同等性能。我们测量了链路预测的平均倒数等级(MRR)和 Hit@10 statistics。 Lacroix 通过非常大的嵌入维度成功实现更高的MRR,这个我们也能通过 PBG 进行复制,但不在这份报告中呈现。

接着,我们使用 PBG 训练完整的 Freebase 图嵌入。该大小的数据集能够适应现代服务器,但 PBG 的分区与分布式执行可以有效减少内存使用与训练时间。我们发布了针对维基数据的首个嵌入图,这是同类数据的最新知识嵌入图。

TB1fYUnPgHqK1RjSZFEXXcGMXXa.jpg

 

PBG分区方案可在不降低模型质量情况下,将内存使用量有效减少 88%。使用多台并行机器可以减少更多训练时间。

我们还在论文中评估了 PBG 在几个公开社交图数据集上的嵌入结果。我们发现, PBG 优于同类方法,主要是分区与分布式执行有效减少了内存使用与培训时间。对知识图而言,分区或分布式执行能使训练模型对于超参数与建模的选择变得更加敏感。不过我们也发现,对社交图而言,嵌入质量对于分区与并行的选择似乎并不那么敏感。

嵌入、分布式训练的好处

PBG 将允许我们在无需耗费专门计算资源(如GPU或大量内存)的情况下,对大规模图嵌入(包括知识图表、股票交易图表、在线内容、生物数据等)进行训练。我们希望 PBG 可以对那些拥有大规模图形数据集,但缺乏相应 ML 处理工具的小型公司或组织能有所帮助。

虽然我们选择在 Freebase 这样的数据集上演示 PBG,但 PBG 的最终目是想处理哪些10至100倍大的图像。我们鼓励从业者们在更大的数据集上进行实验。近期无论是计算机视觉(通过深度学习标签来改进图像识别质量)还是自然语言处理(word2vec、Bert、Elmo)领域所取得的突破,都是基于大规模数据集的任务无关预训练(task-agnostic pretraining)的成果。我们希望基于大规模图形的无监督学习,最终可以产生更好的图形结构数据推理算法。

via https://ai.facebook.com/blog/open-sourcing-pytorch-biggraph-for-faster-embeddings-of-extremely-large-graphs/

雷锋网 AI 科技评论

目录
相关文章
|
机器学习/深度学习 算法 决策智能
【重磅开源】Facebook开源 Nevergrad:一种用于无梯度优化的开源工具
【重磅开源】Facebook开源 Nevergrad:一种用于无梯度优化的开源工具
202 0
|
缓存 数据可视化 测试技术
开源多年后,Facebook这个调试工具,再登Github热门榜
让许多工程师合作开发大型应用大多会面临一个挑战,通常没有一个人知道每个模块是如何工作的,这种技能会让开发新功能、调查Bug或优化性能变得困难,为了解决这个问题,Facebook创建并开源了Flipper,一个可扩展的跨平台的调试工具,用来调试 iOS 和 Android 应用。近日又双叒登上了Github热榜。
《Facebook Online Schema Change原理和大规模表结构变更最佳实践》电子版地址
Facebook Online Schema Change原理和大规模表结构变更最佳实践
84 0
《Facebook Online Schema Change原理和大规模表结构变更最佳实践》电子版地址
|
存储 缓存 NoSQL
社交网络场景下大规模图存储实践——Facebook TAO
社交网络场景下大规模图存储实践——Facebook TAO
216 0
社交网络场景下大规模图存储实践——Facebook TAO
|
前端开发 JavaScript 测试技术
Facebook 开源可扩展文本编辑器 Lexical
Meta(原 Facebook)近日开源可扩展文本编辑器 Lexical,源代码托管在 GitHub 上采用 MIT 许可证。
546 0
Facebook 开源可扩展文本编辑器 Lexical
|
XML jenkins Java
Facebook开源静态代码分析工具Infer介绍
Infer是Facebook公司的一个开源的静态分析工具。Infer 可以分析 Objective-C, Java 或者 C 代码,用于发现潜在的问题。其作用类似于sonar和fortify。Infer更倾向于发现代码中的空指针异常、资源泄露以及内存泄漏的问题。
Facebook开源静态代码分析工具Infer介绍
|
机器学习/深度学习 人工智能 文字识别
图神经网络版本的PyTorch来了,Facebook开源GTN框架,还可对图自动微分
近日,Facebook的AI研究院发表了一篇论文「DIFFERENTIABLE WEIGHTED FINITE-STATE TRANSDUCERS」,开源了用于图网络建模的GTN框架,操作类似于PyTorch这种传统的框架,也可以进行自动微分等操作,大大提高了对图模型建模的效率。
345 0
图神经网络版本的PyTorch来了,Facebook开源GTN框架,还可对图自动微分
|
移动开发 Java 程序员
Facebook 将神奇动画引擎 Pop 开源了!
Facebook 2月发布的新闻类应用Paper,因为其灵动的用户界面和交互,成为近来最令人眼前一亮的移动产品之一。 而这个产品的背后是2011年Facebook收购的Push Pop Press,创始人是分别在Apple任设计师和工程师的Mike Matas与Kimon Tsinteris。他们的合作者还有传奇人物Bret Victor。他们为美国前副总统Al Gore开发的电子书Our Choice当时就曾技惊四座。
348 0
Facebook 将神奇动画引擎 Pop 开源了!
|
PHP C语言 开发者
Facebook 发布开源编程语言 Hack
Facebook周四发布一款名为“Hack”的全新编程语言,并声称该语言将能使代码的编写和测试更加高效快速。Facebook已在公司内部使用该语言超过一年时间,现在将以开源的形式将其正式发布。
432 0
Facebook 发布开源编程语言 Hack
|
存储 安全 算法
Conceal —— Facebook推出的android数据加密的开源APIandroid数据加密的开源API
现如今很多的智能手机,都支持把应用安装到SD卡中,这会帮用户节省很多空间,但是许多黑客也会利用这一点窃取用户的隐私。一般情况下,应用都有SD卡的读写权限,当然他也可以读取到其他应用,存储在SD卡上的数据。这意味着如果你安装了恶意的应用,他就可以轻易的获取SD卡上的所有数据。
382 0
Conceal —— Facebook推出的android数据加密的开源APIandroid数据加密的开源API