Release Notes
MindSpore Graph Learning 0.2.0 Release Notes
Major Features and Improvements
[STABLE] Add a CSR sparse operator-based acceleration solution, covering CSR data format conversion, CSR graph padding, and CSR message aggregation.
[STABLE] Provide training examples of APPNP, GCN, GAT, GATv2, and MPNN based on the CSR sparse operator.
API Change
New APIs & Enhanced APIs
Python APIs
Add graph API
mindspore_gl.graph.batch_graph_csr_data
。Add graph API
mindspore_gl.graph.graph_csr_data
。Add graph API
mindspore_gl.graph.PadCsrEdge
。Add graph API
mindspore_gl.graph.sampling_csr_data
。Add nn API
mindspore_gl.nn.GNNCell.sparse_compute
。
Incompatible Modification
Python APIs
mindspore_gl.GraphField
add the parameterindices
、indptr
、indices_backward
、indptr_backward
、csr
,set to use sparse mode. (!214)Original Interface 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
add the parameterindices
、indptr
、indices_backward
、indptr_backward
、csr
,set to use sparse mode. (!214)Original Interface 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)
Contributors
Thanks goes to these wonderful people:
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.
Contributions of any kind are welcome!