跳转到主要内容

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_cu12-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 状态页面