pytorch_geometric
PyTorch原生图神经网络框架,内置70+数据集和GCN/GAT/GIN等主流算子
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
PyTorch原生图神经网络框架,内置70+数据集和GCN/GAT/GIN等主流算子
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:PyTorch Geometric 官方 Logo
想象一下这样的场景:一位生物信息学研究员手里握着一份蛋白质相互作用网络数据,节点是蛋白质,边是它们之间的交互关系;或者一位社交网络分析师需要从数亿条用户互动记录中找出社区结构——这类"关系型数据"用传统神经网络很难处理,而图神经网络(Graph Neural Network, GNN)正是为解决这类问题而生的。PyTorch Geometric(简称 PyG)就是目前最流行、star 最多的 GNN 开源库,它让研究人员用不到 20 行代码就能跑通一个完整的图神经网络训练流程。
PyG 由德国多特蒙德工业大学(TU Dortmund University)的 Matthias Fey 博士于 2019 年发起,最初作为其博士研究项目的一部分,发表在 NeurIPS 2019 的系统展示论文《PyTorch Geometric: A Fast Graph Representation Learning Library》中。2025 年 7 月,团队又发表了 PyG 2.0 论文,系统性重构了底层架构。
PyG 的诞生填补了当时 PyTorch 生态缺乏专业图数据处理工具的空白。在此之前,图神经网络的实现分散在各个论文的代码仓库中,接口不统一、代码不可复用。PyG 通过提供统一的 Message Passing API,将各种 GNN 架构(GCN、GAT、GIN、SAGE 等)封装为标准化的卷积层,极大降低了研究门槛。
目前项目由 pyg-team 团队维护,star 数超过 23,000,是图深度学习领域毫无争议的标杆项目,斯坦福大学 CS224W 课程也将 PyG 列为推荐工具。
PyG 的设计哲学是"PyTorch-on-the-rocks"——既保留 PyTorch 的所有原生特性,又为图结构数据提供专门支持。
模型层面,PyG 收录了截至目前几乎所有主流 GNN 架构的参考实现,包括图卷积网络(GCN)、图注意力网络(GAT)、GraphSAGE、消息传递神经网络(MPNN)、图同构网络(GIN)等数十种模型,覆盖节点分类、边预测、图分类等多种任务。值得注意的是,PyG 2.0 引入了全新的 Message Passing v2 API,将"消息构造-聚合-更新"三步骤标准化,使得自定义新架构变得异常简单。
图2:PyG 的分布式图采样策略,支持大规模图数据的 GPU 高效处理
数据处理层面,PyG 内置了超过 100 个常用基准数据集的自动下载接口(如 Cora、CiteSeer、Reddit、OGB 等),涵盖了学术研究和工业实践中最常用的图数据基准。同时提供了丰富的数据变换(Transform)工具,可以对图结构进行随机游走扩展、图增强、网格-点云互转等操作。
规模化训练层面,PyG 支持多 GPU 分布式训练、图数据的批量化 mini-batch 加载(通过 GraphSAINT 和NeighborSampler 等采样算法),可以处理百万级节点的超大规模图。PyG 2.6 版本还引入了对 torch.compile 的完整支持,进一步释放 GPU 算力。
PyG 的强大之处还在于围绕其构建的扩展生态:
这些扩展以预编译 wheel 的形式发布,支持 CUDA 12.x / cuDNN 等主流 GPU 环境,开发者只需一条 pip 命令即可安装对应的 GPU 优化版本,无需自行编译。
图3:PyG 的图数据分区处理,支持将超大图切分为多个子图并行计算
PyG 2.3 版本之后,基础安装变得极为简洁——只需一条 pip install torch_geometric,即可在没有额外依赖的情况下运行基础的 GNN 模型。项目支持 Python 3.10 到 3.14,PyTorch 2.9 到 2.11,覆盖主流开发环境。
如果要使用完整功能(GPU 加速、稀疏运算、大规模数据集),则需要额外安装 pyg-lib、torch-scatter 等扩展包。PyG 官方提供了各 PyTorch/CUDA 组合对应的预编译 wheel,通过 pip install pyg_lib torch_scatter torch_sparse -f https://data.pyg.org/whl/torch-2.11.0+cu126.html 的格式指定。
import torch
from torch_geometric.nn import GCNConv
from torch_geometric.datasets import Planetoid
dataset = Planetoid(root='.', name='Cora')
model = GCN(dataset.num_features, 16, dataset.num_classes)
data = dataset[0]
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
for epoch in range(200):
optimizer.zero_grad()
loss = torch.nn.functional.cross_entropy(model(data.x, data.edge_index)[data.train_mask], data.y[data.train_mask])
loss.backward()
optimizer.step()
上述约 15 行代码就完成了从数据加载、模型定义到完整训练的全流程,这正是 PyG 的核心价值——将学术前沿的研究成果变成每个人都能快速使用的工具。
PyG 在以下领域有广泛应用:
PyG 也有其局限性:首先,它是一个 Python 库而非独立服务,没有 Web 界面,调试和可视化需要配合 PyTorch 生态工具(如 tensorboard、wandb);其次,对动态图(Temporal Graph)和异构图的支持虽然存在,但在工业级大规模部署上仍有优化空间;最后,自定义 Message Passing 层的性能调优需要对 PyTorch C++ 扩展有一定了解。
PyG 的出现让图深度学习从"专家专属"变成了"人人可用"。它不仅是学术论文中 GNN 模型的权威实现参考,更是工业界构建图数据管道的首选基础库。其 Message Passing 统一抽象已成为该领域的 API 规范,被多个后继框架沿用。随着图数据在推荐系统、知识图谱、科学研究中的作用日益凸显,PyG 的影响力还在持续扩大。
图4:PyG 在 Intel 平台的大规模图神经网络训练方案
图5:GraphGym 模块——PyG 提供的 GNN 设计空间探索与自动调参框架