跳转到主要内容

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 (2.3 kB 查看哈希值)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面