Release Notes

MindSpore Graph Learning 0.2.0 Release Notes

主要特性及增强

  • [STABLE] 新增了基于CSR稀疏算子的加速方案,涵盖了从CSR数据格式转换、CSR图填充到CSR消息聚合等方面。

  • [STABLE] 提供了基于CSR稀疏算子的APPNP、GCN、GAT、GATv2、MPNN的训练示例。

API变更

新增/增强API

Python APIs
  • 新增graph接口 mindspore_gl.graph.batch_graph_csr_data

  • 新增graph接口 mindspore_gl.graph.graph_csr_data

  • 新增graph接口 mindspore_gl.graph.PadCsrEdge

  • 新增graph接口 mindspore_gl.graph.sampling_csr_data

  • 新增nn接口 mindspore_gl.nn.GNNCell.sparse_compute

非兼容性变更

Python APIs
  • mindspore_gl.GraphField 新增参数 indicesindptrindices_backwardindptr_backwardcsr ,设置是否使用稀疏模式。(!214)

    原接口 v0.2.0
    n_nodes = 7
    n_edges = 8
    src_idx = ms.Tensor([0, 2, 2, 3, 4, 5, 5, 6], ms.int32)
    dst_idx = ms.Tensor([1, 0, 1, 5, 3, 4, 6, 4], ms.int32)
    graph_field = GraphField(src_idx, dst_idx, n_nodes, n_edges)
    
    n_nodes = 7
    n_edges = 8
    indices = ms.Tensor([2, 3, 5, 6, 3, 4, 0, 6], ms.int32)
    indptr = ms.Tensor([0, 2, 4, 5, 6, 7, 8, 8], ms.int32)
    indices_backward = ms.Tensor([4, 0, 0, 2, 3, 1, 1, 5], ms.int32)
    indptr_backward = ms.Tensor([0, 1, 1, 2, 4, 5, 6, 8], ms.int32)
    graph_field = GraphField
      (n_nodes=n_nodes, n_edges=n_edges, indices=indices, indptr=indptr,
    ...
       indices_backward=indices_backward, indptr_backward=indptr_backward, csr=True)
    
  • mindspore_gl.BatchedGraphField 新增参数 indicesindptrindices_backwardindptr_backwardcsr ,设置是否使用稀疏模式。(!214)

    原接口 v0.2.0
    n_nodes = 9
    n_edges = 11
    src_idx = ms.Tensor([0, 2, 2, 3, 4, 5, 5, 6, 8, 8, 8], ms.int32)
    dst_idx = ms.Tensor([1, 0, 1, 5, 3, 4, 6, 4, 8, 8, 8], ms.int32)
    ver_subgraph_idx = ms.Tensor([0, 0, 0, 1, 1, 1, 1, 2, 2], ms.int32)
    edge_subgraph_idx = ms.Tensor([0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2], ms.int32)
    graph_mask = ms.Tensor([1, 1, 0], ms.int32)
    graph_field = BatchedGraphField(src_idx, dst_idx, n_nodes, n_edges, ver_subgraph_idx,
    ...                             edge_subgraph_idx, graph_mask)
    
    n_nodes = 9
    n_edges = 11
    indices = ms.Tensor([0, 3, 4, 6, 8, 4, 5, 1, 8], ms.int32)
    indptr = ms.Tensor([0, 1, 3, 5, 6, 7, 8, 9, 9, 9], ms.int32)
    indices_backward = ms.Tensor([0, 5, 1, 1, 3, 4, 2, 2, 6], ms.int32)
    indptr_backward = ms.Tensor([0, 1, 2, 2, 3, 5, 6, 7, 7, 9], ms.int32)
    node_map_idx = ms.Tensor([0, 0, 0, 1, 1, 1, 1], ms.int32)
    edge_map_idx = ms.Tensor([0, 0, 0, 1, 1, 1, 1, 1], ms.int32)
    graph_mask = ms.Tensor([1, 0], ms.int32)
    graph_field = BatchedGraphField
      (indices=indices, indptr=indptr, indices_backward=indices_backward,
       indptr_backward=indptr_backward, csr=True, n_nodes=n_nodes,
    ...
    n_edges=n_edges, ver_subgraph_idx=node_map_idx,
    ...
    edge_subgraph_idx=edge_map_idx, graph_mask=graph_mask)
    

贡献者

感谢以下人员做出的贡献:

James Cheng, yufan, wuyidi, yinpeiqi, liuxiulong, wangqirui, chengbin, luolan, zhengzuohe, lujiale, liyang, huenrui, baocong, zhangqinghua, wangyushan, zhushujing, zhongjicheng, gaoxiang, yushunmin, fengxun, gongyue, wangyixuan, zuochuanyong, yuhan, wangying, chujinjin, xiezuoquan, yeyuhang, xuhn1997.

欢迎以任何形式对项目提供贡献!