前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Google图嵌入工业界最新大招,高效解决训练大规模深度图卷积神经网络问题

Google图嵌入工业界最新大招,高效解决训练大规模深度图卷积神经网络问题

作者头像
AI科技大本营
发布于 2019-10-15 14:31:36
发布于 2019-10-15 14:31:36
1.3K0
举报

https://v.qq.com/x/page/i3007egtddq.html

导读:本文主要介绍Google发表在KDD 2019的图嵌入工业界最新论文,提出Cluster-GCN,高效解决工业界训练大规模深度图卷积神经网络问题,性能大幅提升基础上依靠可训练更深层网络达到SOTA效果,并开源了源代码。

作者 | yyl424525

来源 | CSDN博客

摘要

图卷积网络(GCN)已经成功地应用于许多基于图形的应用,然而,大规模的GCN的训练仍然具有挑战性。目前基于SGD的算法要么面临着随GCN层数呈指数增长的高计算成本,要么面临着保存整个图形和每个节点的embedding到内存的巨大空间需求。本文提出了一种新的基于图聚类结构且适合于基于SGD训练的GCN算法 — Cluster-GCN。

Cluster-GCN的工作原理如下:在每个步骤中,它对一个与通过用图聚类算法来区分的密集子图相关联的一组节点进行采样,并限制该子图中的邻居搜索。这种简单且有效的策略可以显著提高内存和计算效率,同时能够达到与以前算法相当的测试精度。

为了测试算法的可扩展性,作者创建了一个新的Amazon2M数据集,它有200万个节点和6100万个边,比以前最大的公开可用数据集(Reddit)大5倍多。在该数据上训练三层GCN,Cluster-GCN比以前最先进的VR-GCN(1523秒vs 1961秒)更快,并且使用的内存更少(2.2GB vs 11.2GB)。此外,在该数据上训练4层GCN,Cluster-GCN可以在36分钟内完成,而所有现有的GCN训练算法由于内存不足而无法训练。此外,Cluster-GCN允许在短时间和内存开销的情况下训练更深入的GCN,从而提高了使用5层Cluster-GCN的预测精度,作者在PPI数据集上实现了最先进的test F1 score 99.36,而之前的最佳结果是98.71。

背景介绍

图卷积网络(GCN)[9]在处理许多基于图的应用中日益流行,包括半监督节点分类[9]、链路预测[17]和推荐系统[15]。对于一个图,GCN采用图卷积运算逐层地获取节点的embedding:在每一层,要获取一个节点的embedding,需要通过采集相邻节点的embedding,然后进行一层或几层线性变换和非线性激活。最后一层embedding将用于一些最终任务。例如,在节点分类问题中,最后一层embedding被传递给分类器来预测节点标签,从而可以对GCN的参数进行端到端的训练。

由于GCN中的图卷积运算(operator)需要利用图中节点之间的交互来传播embeddings,这使得训练变得相当具有挑战性。不像其他神经网络,训练损失可以在每个样本上完美地分解为单独的项(decomposed into individual terms),GCN中的损失项(例如单个节点上的分类损失)依赖于大量的其他节点,尤其是当GCN变深时。由于节点依赖性,GCN的训练非常慢,需要大量的内存——反向传播需要将计算图上的所有embeddings存储在GPU内存中。

现有GCN训练算法缺陷

为了证明开发可扩展的GCN训练算法的必要性,文中首先讨论了现有方法的优缺点,包括:内存需求、每个epoch的时间、每个epoch收敛速度。

这三个因素是评估训练算法的关键。注意,内存需求直接限制了算法的可扩展性,后两个因素结合在一起将决定训练速度。在接下来的讨论中,用N为图中的节点数,F为embedding的维数,L为分析经典GCN训练算法的层数。

  • GCN的第一篇论文提出了全批次梯度下降(Full-batch gradient descent)。要计算整个梯度,它需要存储所有中间embeddings,导致O(NFL)内存需求,这是不可扩展的。
  • GraphSAGE中提出了Mini-batch SGD。它可以减少内存需求,并在每个epoch执行多次更新,从而加快了收敛速度。然而,由于邻居扩展问题,mini-batch SGD在计算L层单个节点的损失时引入了大量的计算开销。
  • VR-GCN提出采用variance减少技术来减小邻域采样节点的大小。但它需要将所有节点的所有中间的embeddings存储在内存中,从而导致O(NFL)内存需求。

朴素Cluster-GCN

作者定义了“Embedding utilization”的概念来表达计算效率。如果节点i在第l层的embedding在计算第l+1层的embeddings时被重用了u次,那么就说相应的的embedding utilization是u。

下表中总结了现有GCN训练算法相应的时间和空间复杂度。显然,所有基于SGD的算法的复杂度都和层数呈指数级关系。对于VR-GCN,即使r很小,也会产生超出GPU内存容量的巨大空间复杂度。

本文提出的的Cluster-GCN算法,它实现了两全其美的效果:即每个epoch和full gradient descent具有相同的时间复杂度, 同时又能与朴素GD具有相同的空间复杂度。

文中的Cluster-GCN技术是由以下问题驱动的:在mini-batch SGD更新中,我们可以设计一个batch和相应的计算子图来最大限度地提高embedding utilization吗?文中使用了图聚类算法来划分图。图聚类的方法,旨在在图中的顶点上构建分区,使簇内连接远大于簇间连接,从而更好地捕获聚类和社区结构。

下图展示了两种不同的节点分区策略:随机分区和clustering分区。可以看到,cluster-GCN可以避免大量的邻域搜索,并且集中在每个簇中的邻居上。作者使用随机分割和Metis聚类方法将图分成10个部分。然后使用一个分区作为一个batch来执行SGD更新。在相同的时间段内,使用聚类划分可以获得更高的精度。这表明使用图聚类是很重要的,分区不应该随机形成。

随机多聚类

尽管朴素Cluster-GCN实现了良好的时间和空间复杂度,但仍然存在两个潜在问题:

  • 图被分割后,一些连接被删除。因此,性能可能会受到影响。
  • 图聚类算法往往将相似的节点聚集在一起,因此聚类的分布可能不同于原始数据集,从而导致在执行SGD更新时对 full gradient的估计有偏差。

为了解决上述问题,文中提出了一种随机多聚类方法,在簇接之间进行合并,并减少batch间的差异(variance)。作者首先用一个较大的p把图分割成p个簇V1,...,Vp,然后对于SGD的更新重新构建一个batch B,而不是只考虑一个簇。随机地选择q个簇,定义为t1,...,tq ,并把它们的节点包含到这个batch B中。此外,在选择的簇之间的连接也被添加回去。作者在Reddit数据集上进行了一个实验,证明了该方法的有效性。

实验结果

文中评估了所提出的针对四个公共数据集的多标签和多类分类两个任务的GCN训练方法,数据集统计如表3所示。Reddit数据集是迄今为止为GCN所看到的最大的公共数据集,为了测试GCN训练算法在大规模数据上的可扩展性,作者基于Amazon co-purchase network构建了一个更大的图Amazon2M,包含超过200万个节点和6100万条边。

作者比较了不同层次GCNs的VRGCN在训练时间、内存使用和测试准确度(F1分数)方面的差异。从表中可以看出

  • 训练两层时VRGCN比Cluster-GCN快,但是当增加一层网络,却慢于实现相似准确率的Cluster-GCN
  • 在内存使用方面,VRGCN比Cluster-GCN使用更多的内存(对于三层的情况5倍多)。当训练4层GCN的时候VRGCN将被耗尽,然而Cluster-GCN当增加层数的时候并不需要增加太多的内存,并且Cluster-GCN对于这个数据集训练4层的GCN将实现最高的准确率。

原文链接:

https://blog.csdn.net/yyl424525/article/details/100057907

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
k8s中使用cert-manager玩转证书
前几天写过一篇k8s加入TLS安全访问,其中说到用cfssl之类的工具手动生成TLS证书,这样就可以轻松搞定站点的https访问了。理想是很美好,但实际操作时却很痛苦,主要有以下几点缺陷:
jeremyxu
2019/03/13
11.4K2
k8s中使用cert-manager玩转证书
Step by Step!教你如何在k3s集群上使用Traefik 2.x
Traefik是一个十分可靠的云原生动态反向代理。轻量级Kubernetes发行版K3s早在去年就已经内置Traefik,将其作为集群的默认反向代理和Ingress Controller。然而,在本文成文时K3s中的默认内置Traefik版本为v1.7.14。这一版本固然也能很好地运行,但还是少了一些有用的功能。我最想用的功能是为正在使用的Ingress Route自动生成Let’s Encrypt证书。而使用Traefik 2.x版本可以获得这一功能,甚至还有更多其他功能。那么,我们来看看如何使用K3s设置并使用新版本的Traefik。
k3s中文社区
2020/04/10
3.8K0
Step by Step!教你如何在k3s集群上使用Traefik 2.x
手把手教你使用 cert-manager 签发免费证书
roc,腾讯高级工程师,Kubernetes Contributor,热爱开源,专注云原生领域。目前主要负责腾讯云TKE 的售中、售后的技术支持,根据客户需求输出合理技术方案与最佳实践,为客户业务保驾护航。 概述 随着 HTTPS 不断普及,越来越多的网站都在从 HTTP 升级到 HTTPS,使用 HTTPS 就需要向权威机构申请证书,需要付出一定的成本,如果需求数量多,也是一笔不小的开支。cert-manager 是 Kubernetes 上的全能证书管理工具,如果对安全级别和证书功能要求不高,可以利用
腾讯云原生
2020/10/27
3.6K0
Cert Manager 申请 SSL 证书流程及相关概念 - 一
2022.3.9 用 cert-manager 申请成功通配符证书 (*.ewhisper.cn), 2022.4.30 该证书距离过期还有 30 天,cert-manager 进行自动续期,但是却失败了。😱😱😱 然后过了几天,在 2022.5.8, 最终成功了。如下图: 续期成功的 ewhisper.cn 通配符证书 正好借着这个情况捋一下 cert-manager 的 SSL 证书申请流程以及过程中涉及到的相关概念。 中英文对照表 英文 英文 - K8S CRD 中文 备注 certificates
东风微鸣
2022/06/14
1.1K0
Cert Manager 申请 SSL 证书流程及相关概念 - 一
Cert Manager 申请SSL证书流程及相关概念-三
Issuers 和 ClusterIssuers 是 Kubernetes CRD,代表证书颁发机构(CA),能够通过兑现证书签名请求来生成签名证书。所有 cert-manager 证书都需要一个被引用的签发者,该签发者处于准备就绪的状态,可以尝试兑现请求。
东风微鸣
2022/06/14
1.2K0
Cert Manager 申请SSL证书流程及相关概念-三
k3s 使用 Letsencrypt 和 Traefik 完成 https 入口部署
完成了 k3s 集群的部署,下一步就是需要对外暴露服务,在当下这个网络安全日趋紧迫的时刻,加密传输已经成为 Web 服务的标配。
宋天伦
2023/10/20
6940
k3s 使用 Letsencrypt 和 Traefik 完成 https 入口部署
K3S 从放弃到入门(二)使用域名访问dashboard
书接上回,首先对上一篇文章做一个补充:主、从节点还需要打开TCP:10250端口。
2022/03/30
3.1K0
k8s安装自动证书签发cert-manager letsencrypt
创建 namespace kubectl create namespace cert-manager 安装 crds kubectl apply -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.11/deploy/manifests/00-crds.yaml 标记命名空间 cert-manager 为 disable-validation kubectl lab el namespace cert-manager
少羽大怪兽
2020/10/16
9310
【K8s】Kubernetes 证书管理工具 Cert-Manager
根据官方介绍,Cert-Manager 是一个开源的云原生证书管理(Cloud Native Certificate Management)工具,适用于 Kubernetes 和 OpenShift 的 X.509 证书管理。
行者Sun
2024/10/23
3560
【K8s】Kubernetes 证书管理工具 Cert-Manager
Cert Manager 申请SSL证书流程及相关概念-二
这张图显示了使用 ACME/Let's Encrypt Issuer 的名为cert-1的证书的生命周期:
东风微鸣
2022/06/14
1.1K0
Cert Manager 申请SSL证书流程及相关概念-二
Kubernetes之Ingress自动化https
在Kubernetes集群中使用 HTTPS 协议,需要一个证书管理器、一个证书自动签发服务,主要通过 Ingress 来发布 HTTPS 服务,因此需要Ingress Controller并进行配置,启用 HTTPS 及其路由。
仙人技术
2020/04/29
1.6K0
使用 Cert-Manager 实现 Ingress Https
什么是 HTTPS 超文本传输协议 HTTP 协议被用于在 Web 浏览器和网站服务器之间传递信息,HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP 协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
iMike
2019/07/29
1.6K0
基于AWS EKS的K8S实践 - 打通外网对集群内服务的调用
service 通常用作集群内服务之前的通信,ingress 通常用于暴露给集群外的服务使用。
shysh95
2023/08/23
8401
基于AWS EKS的K8S实践 - 打通外网对集群内服务的调用
自动签发https证书工具 cert manager
最近cert manager进行升级,不再支持0.11以下的版本了,所以进行升级。但是发现不能直接通过更改镜像版本来升级,在Apps里的版本也是旧版本,部署后发现不支持,于是自已动手,根据文档整理了一套部署cert manager的过程。
少羽大怪兽
2019/11/08
9880
27 Dec 2021 cert-manager签发证书
这里需要指定clusterissuer和生成证书的secret名字,创建certificate:
俊采
2023/10/17
2230
Kubernetes (K8S)中Traefik路由(ingressRoute)
kubernetes 中使用 Traefik ingress 的 ingressRoute 代理 http、https、tcp、udp。
王先森sec
2023/10/17
2.8K0
Kubernetes (K8S)中Traefik路由(ingressRoute)
利用cert-manager让Ingress启用免费的HTTPS证书
cert-manager 是替代 kube-lego 的一个开源项目,用于在 Kubernetes 集群中自动提供 HTTPS 证书,支持 Let’s Encrypt, HashiCorp Vault 这些免费证书的签发。
imroc
2018/07/26
2.5K0
KubernetesIngress自动化https
随着 HTTPS 不断普及,大多数网站开始由 HTTP 升级到 HTTPS。使用 HTTPS 需要向权威机构申请证书,并且需要付出一定的成本,如果需求数量多,则开支也相对增加。cert-manager 是 Kubernetes 上的全能证书管理工具,支持利用 cert-manager 基于 ACME 协议与 Let’s Encrypt 签发免费证书并为证书自动续期,实现永久免费使用证书。
mikelLam
2022/10/31
8600
KubernetesIngress自动化https
TKE/EKS集群使用cert-manager申请免费的HTTPS证书
cert-manager是一个云原生证书管理开源工具,用于在Kubernetes集群中提供HTTPS证书并自动续期。以下示例介绍了如何使用cert-manager给nginx ingress申请免费证书并自动续期。
聂伟星
2023/12/16
4980
TKE之Traefik最佳实践
k8s的接入层有很多种,常见的7层负载均衡有nginx-ingress、traefik、kong等,还有每个云厂商为了对接自己的负载均衡产品所开发的控制器,tke集群现在默认是clb类型ingress,也支持组件安装nginx-ingress到集群内使用,其他类型的网关,需要自己在集群内部署才行,今天我们讲讲traefik在tke上的部署安装和一些使用实践。
聂伟星
2022/03/18
2.4K0
相关推荐
k8s中使用cert-manager玩转证书
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档