Skip to main content
 Web开发网 » 站长学院 » 浏览器插件

详细介绍PyTorch处理大图框架BigGraph

2021年11月04日6230百度已收录

尽管图形结构的丰富性和内在导航功能是机器学习模型的一个很好的选择,但它们的复杂性带来了巨大的可扩展性挑战。

详细介绍PyTorch处理大图框架BigGraph  pytorch框架 第1张

图表示的重要意义图是机器学习应用程序中的基本数据结构之一。具体而言,图嵌入方法是无监督学习的一种形式,因为它们使用图结构来学习节点的表示。主流场景中的训练数据,例如社交媒体预测,物联网(IOT)模式检测或药物序列建模,使用图形结构自然地表示。

这些场景中的任何一个都可以轻松生成具有数十亿个互连节点的图形。

虽然图形结构的丰富性和内在导航功能是机器学习模型的一个很好的选择,但它们的复杂性带来了巨大的可扩展性挑战。毫不奇怪,现代深度学习框架中对大规模图形数据结构的支持仍然非常有限。最近,Facebook亮出PyTorch BigGraph,一种新的框架,可以更快,更轻松地为PyTorch模型中的超大图形生成图形嵌入。

在某种程度上,图形结构可被视为标记的训练数据集的替代,因为节点之间的连接可用于推断特定关系。

这是通过无监督图嵌入方法遵循的方法,其通过优化具有在它们之间具有边缘的节点对的嵌入比没有共享边缘的节点对,更接近目标来学习图中的每个节点的向量表示。这类似于word2vec等词嵌入在文本上的训练方式。

详细介绍PyTorch处理大图框架BigGraph  pytorch框架 第2张

大多数图形嵌入方法在应用于大型图形结构时会产生相当大的限制。举一个例子,一个拥有20亿个节点和每个节点100个嵌入参数的模型(表示为浮点数)将需要800GB的内存来存储其参数,因此许多标准方法超过了典型商用服务器的内存容量。代表深度学习模型的主要挑战,也是Facebook BigGraph框架的起源。

PyTorch BigGraphPyTorch BigGraph(PBG)的目标是使图形嵌入模型能够扩展到具有数十亿个节点和数万亿个边缘的图形。PBG通过启用四个基本构建块实现了这一目标:

图分区,这样模型就不必完全加载到内存中 每台机器上的多线程计算 跨多台机器的分布式执行,所有机器同时在图形的不相交部分上运行 批量负采样,允许处理> 100万边/秒/机器,每边100负采样PBG通过将图形结构划分为随机划分为P个分区来解决传统图形嵌入方法的一些缺点,这些P分区的大小使得两个分区可以适合存储器。

例如,如果边缘在分区p1中具有源并且在分区p2中具有目标,则将其放入桶(p1,p2)中。

在同一模型中,图形边缘然后根据其源节点和目标节点分为P2存储桶。一旦节点和边缘被分区,就可以一次在一个桶上执行训练。桶(p1,p2)的训练仅需要将分区p1和p2的嵌入存储在存储器中。PBG结构保证桶具有至少一个先前训练的嵌入分区。

详细介绍PyTorch处理大图框架BigGraph  pytorch框架 第3张

PBG真正创新的另一个领域是训练机制的并行化和分配。PBG使用PyTorch 来实现利用先前所示的块分区结构的分布式训练模型。在该模型中,各个机器使用锁定服务器协调以在不相交的桶上进行训练,该锁定服务器将桶包装到工人中以便最小化不同机器之间的通信。每台机器都可以使用不同的铲斗并行训练模型。

详细介绍PyTorch处理大图框架BigGraph  pytorch框架 第4张

在上图中,机器2中的Trainer模块从机器1上的锁定服务器请求一个桶,该桶锁定该桶的分区。然后,训练师会保存不再使用的所有分区,并从分片服务器加载所需的新分区,此时它可以在锁定服务器上释放其旧分区。然后从共享文件系统加载边缘,并且在没有线程间同步的情况下在多个线程上进行训练。在单独的线程中,少量共享参数与分片参数服务器持续同步。模型检查点偶尔会从训练师写入共享文件系统。该模型允许使用最多P / 2机器并行化一组P桶。

PBG的间接创新之一是使用分批负抽样技术。传统的图嵌入模型,构造随机"假"边作为负训练样例以及真正的正边。这显著加快了训练速度,因为每个新样本只需要更新一小部分权重。但是,负样本最终会在图形处理中引入性能开销,并最终使用随机源节点或目标节点"破坏"真实边缘。PBG引入了一种方法,该方法重复使用单批N个随机节点来为N个训练边缘产生损坏的负样本。与其他嵌入方法相比,这种技术允许我们以很少的计算成本训练每个真实边缘的许多负面例子。

为了提高大型图形上的内存效率和计算资源,PBG利用单批Bn采样源或目标节点构建多个负面示例。在典型设置中,PBG从训练集中获取一批B = 1000个正边缘,并且将其分成50个边缘的块。来自每个块的目的地(等效地,源)嵌入与从尾部实体类型统一采样的50个嵌入连接。具有200个采样节点的50个正数的外积等于9900个负数示例。

详细介绍PyTorch处理大图框架BigGraph  pytorch框架 第5张

批量负抽样方法对模型训练的速度有直接影响。在没有批处理的情况下,训练速度与负样本的数量成反比。批量训练改善了该等式,实现了持续的训练速度。

详细介绍PyTorch处理大图框架BigGraph  pytorch框架 第6张

Facebook使用不同的图表数据集评估PGB,例如LiveJournal,Twitter数据和YouTube用户交互数据。此外,PBG使用Freebase知识图进行基准测试,该图包含超过1.2亿个节点和27亿个边缘以及Freebase图的较小子集,称为FB15k,包含15,000个节点和600,000个边缘,通常用作多关系嵌入方法的基准。FB15k实验表明PBG的表现与现有的图形嵌入模型类似。但是,当根据完整的Freebase数据集进行评估时,PBG显示内存消耗提高了88%以上。

详细介绍PyTorch处理大图框架BigGraph  pytorch框架 第7张

PBG是第一种可以扩展和训练和处理图形数据到具有数十亿节点和数万亿边缘的结构的方法之一。我们应该期待在不久的将来做出更大的贡献。

评论列表暂无评论
发表评论
微信