pylibcugraphops - GPU 图神经网络操作
项目描述
pylibcugraphops
pylibcugraphops 是围绕 cugraph-ops 的包装器,并为 cugraph-ops 的自定义图运算符提供框架无关和轻量级的 Python 绑定。有关实现功能的信息,请查看相应的文档。
结构
在结构方面,绑定在一定程度上遵循 cugraph-ops 的指南。主要区别在于 pylibcugraphops 更加专注于提供合理的子模块,因此整体结构相当扁平。核心功能位于 pylibcugraphops.operators
之下,类似于 C++ API 中的 <cugraph-ops/operators>
命名空间。这包括基本的聚合运算符(例如用于 GraphSAGE)、专用运算符(例如用于 RGCN)以及执行类似于池化操作的运算符(例如从图到标量的聚合运算)。虽然 C++ API 进一步区分了消息流图和其他可以通过 CSC 表示的图的运算符,但 pylibcugraphops.operators
保持为一个扁平的子模块,函数名称进行区分。
命名约定
公开运算符和相应文件的名称应具有自解释性,以提供对所有相关特征的易于概述。因此,我们采用以下命名约定为运算符。
<operator family>_<graph type>_<"direction">_(<operator specification>_)<[fwd|bwd|bwd_rev|...]
示例
agg_simple_csc_bwd
pool_csc_n2s_bwd
agg_hg_basis_mfg_n2n_post_bwd
通过重载支持不同的数据类型,因此通常不是运算符名称的显式部分。
各个部分的解释
<operator family>
表示底层操作符,我们目前有agg_simple
:基本的聚合器,对指定的集合执行平均值/总和/最小值/最大值缩减agg_concat
:类似于agg_simple
,但还额外连接每个集合成员的自我表示agg_dmpnn
:实现了 DMPNN 边到边的聚合pool
:求和/平均值/最小值/最大值池化,例如节点到标量的读取hg_basis
:使用不同边类型进行异构聚合,可能使用基分解mha_gat
:多头注意力聚合,在这种情况下是 GAT 的特定变体
<graph type>
:操作符旨在用于哪种图类型csc
:图的简单 CSC 表示bipartite
:二部图的简单 CSC 表示mfg
:消息流图
<"direction">
:为了更容易了解我们已有的哪些操作符,多个方向通过下划线组合和分隔(例如e2n_n2n
)n2n
:节点到节点(基本聚合)e2n
:边到节点e2e
:边到边n2s
:节点到标量
<operator specification>
:一些操作符定义了不同类型的“口味”,例如hg_basis
操作符的“预”和“后”变体
函数签名
应使用以下模式
func(output_vector_arg_0, ..., output_vector_arg_n,
input_vector_arg_0, ..., input_vector_arg_n,
graph_structure_arg_0, ..., graph_structure_arg_n,
*args,
**kwargs,
cuda_stream=None)
*args
:对func
必要的参数,但既不是缓冲区也不是图结构**kwargs
:可选参数或具有默认值的参数- 如果适用且已默认,则
cuda_stream
应为绑定中的最后一个参数
RGCN 的示例(hg_basis_pre)
def agg_hg_basis_mfg_n2n_pre_bwd(output_gradient,
input_gradient,
input_embedding,
message_flow_graph_hg_csc_int32 graph,
output_weight_gradient=None,
weights_combination=None,
concat_own=False,
norm_by_degree=False,
cuda_stream=None):
项目详情
关闭
pylibcugraphops_cu11-24.8.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 87f0898c1d95760bd505275edd37c46e4ad6d3564142526e194f48afde04329b |
|
MD5 | 18177d18068255db97d90e9b728afdfc |
|
BLAKE2b-256 | 92d76b1dfd22c6ef5a9dc014944567bf3382b611ddb35b93ad2e428b95eb4a27 |