登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
Gitee 618 年中盛典开启:企业版新购最高送一年,PocketClaw 首次限时折扣
代码拉取完成,页面将自动刷新
仓库状态说明
开源项目
>
人工智能
>
AI-人工智能
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
228
Star
951
Fork
729
GVP
MindSpore
/
mindscience
关闭
代码
Issues
34
Pull Requests
20
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
【MindScience-Core】API-GraphNeuralNetwork
TODO
#ICKORM
Requirement
mengqinghe
创建于
2025-07-08 11:00
# 一、特性概述 ## 1.1 需求来源及价值描述 ### 1.1.1 图神经网络在AI4Science领域的重要性 图神经网络(Graph Neural Network,下文统一称GNN)在AI4Science领域应用十分广泛,其核心价值在于对复杂系统内在关系的天然建模能力。科学研究的核心对象(分子、蛋白质、材料、气候系统、物理相互作用网络等)本质上都是由实体及其关系构成的图结构数据。GNN在此领域的独特优势体现在: 1. 直接建模非欧几里得关系: 传统CNN/RNN难以有效处理原子键、蛋白质残基连接、材料晶体结构以及物理场拓扑结构复杂的数据。GNN通过消息传递机制,直接学习和推理实体(节点)之间连接(边)所蕴含的物理、化学或生物规律。 2. 学习多尺度特征与相互作用: GNN能同时捕捉局部原子/残基环境与长程相互作用(如分子内氢键、蛋白质折叠、材料中的电子耦合),这对于理解物质性质、蛋白质功能、材料性能等至关重要。层级GNN架构可有效提取从微观到介观的多尺度特征。 3. 数据高效与物理规律融合: 科学实验数据往往昂贵且稀少。GNN的归纳偏置(即图结构先验)使其在少量标注数据上也能表现出色。更重要的是,GNN架构易于与物理定律(如对称性约束、能量守恒)结合,发展物理信息驱动的GNN模型,提升预测的准确性、可解释性和外推能力。 具体地,当前通过GNN赋能关键领域科学发现与工程应用包括且不限于: * 药物发现: 精准预测分子性质、药物-靶点相互作用、蛋白质-配体结合,加速新药研发。 * 材料设计: 高效搜索具有特定性能(如高导电性、强韧性)的新材料,缩短研发周期。 * 结构生物学: 解析蛋白质结构(如AlphaFold2的关键组件)、预测蛋白质功能、理解蛋白质动态行为。 * 量子化学计算: 替代部分昂贵的量子力学计算,快速预测分子能量、力场、反应路径。 * 气候与地球科学: 建模复杂的地球系统(如大气环流、生态网络)中各组成部分的相互作用。 * 复杂边界物理场离散:建模复杂边界条件下的物理场,对应点云、非结构化网格等物理场表征方法。 ### 1.1.2 GNN当前生态和MindSpore能力 目前业界已有的主流GNN生态包括pytorch_geometric(下称PyG)和deep graph library(下称DGL),其中PyG在运行性能、API友好程度、GNN SOTA模型覆盖度方面更具优势。 MindSpore已有Graph Learning库,能够针对图模型特有的执行模式进行编译优化,帮助开发者缩短训练时间。MindSpore Graph Learning还创新提出了以点为中心编程范式,提供更原生的图神经网络表达方式,并内置覆盖了大部分应用场景的模型。然而,基于静态图优化的MindSpore Graph Learning限制了GNN结构的多变性,同时也增大了调试难度。尤其在AI4Science领域,对高效、灵活、易用、可拓展,且符合业界使用习惯的GNN接口的需求愈发迫切。 ## 1.2基本原理 [sharker库](https://gitee.com/XuhanLiu/sharker)是刘许晗老师参考PyG在MindSpore框架实现的一整套GNN库,为纪念徐霞客,刘许晗老师将其命名为sharker。MindSpore开源社区感谢刘许晗老师的贡献,将部分网络进行性能优化,并将sharker库中主要功能看护起来,形成现在的mindscience_core.sharker接口。 ## 1.3场景分析 为便于开发者使用,sharker API看护的功能主要包括以下几个部分 |module|接口名|描述| |--|--|--| |nn.conv|GATConv|提供性能优化后的GATConv功能| |nn.conv|GCNConv|提供GCNConv功能| |nn|MessagePassing|提供MessagePassing基本功能以方便开发者撰写自己的网络| |nn|Aggregation|提供Aggregation基本功能以便开发者撰写自己的网络| |data|Dataset|提供Dataset基本接口,尤其是生物、电网拓扑示例| |data|InMemoryDataset|提供InMemoryDataset功能| |loader|DataLoader|提供DataLoader功能| |utils|scatter|提供特征聚合相关函数| |utils|segment|提供特征分割相关函数| # 二、详细设计 ## 2.1总体方案描述 MindScience的sharker接口提供了基本的图数据接口和网络接口,并给出GCNConv、GATConv和GINConv等多个网络实践,针对scatter等操作的性能进行了优化。目前,暂不提供CSR数据类型支持,也不提供Hetero/Hyper图支持。 ## 2.2基本功能设计 sharker类的设计和基本功能如下: ``` mindscience.src │ __init__.py ├─sharker │ │ experimental.py │ │ home.py │ │ inspector.py │ │ resolver.py │ │ seed.py │ │ template.py │ │ typing.py │ │ __init__.py │ ├─data │ │ │ batch.py │ │ │ collate.py │ │ │ database.py │ │ │ datapipe.py │ │ │ dataset.py │ │ │ download.py │ │ │ extract.py │ │ │ graph.py │ │ │ in_memory.py │ │ │ on_disk.py │ │ │ remote_store.py │ │ │ separate.py │ │ │ storage.py │ │ │ summary.py │ │ │ temporal.py │ │ │ view.py │ │ │ __init__.py │ ├─dataset │ │ qm9.py | | powerflow.py │ │ __init__.py │ │ │ ├─io │ │ │ fs.py │ │ │ npz.py │ │ │ obj.py │ │ │ off.py │ │ │ planetoid.py │ │ │ ply.py │ │ │ sdf.py │ │ │ tu.py │ │ │ txt_array.py │ │ │ __init__.py │ ├─loader │ │ │ dataloader.py │ │ │ __init__.py │ ├─nn │ │ │ encoding.py 时空编码 │ │ │ inits.py 权重初始化 │ │ │ reshape.py 带repr的reshape │ │ │ __init__.py │ │ ├─aggr │ │ │ │ attention.py │ │ │ │ base.py │ │ │ │ basic.py │ │ │ │ __init__.py │ │ ├─conv │ │ │ │ edge_conv.py │ │ │ │ gatv2_conv.py │ │ │ │ gat_conv.py │ │ │ │ gcn_conv.py │ │ │ │ gin_conv.py │ │ │ │ message_passing.py │ │ │ │ sage_conv.py │ │ │ │ __init__.py | │ ├─models │ │ │ │ mlp.py │ │ ├─norm │ │ │ │ batch_norm.py │ │ │ │ __init__.py │ ├─utils │ │ │ assortativity.py │ │ │ augmentation.py │ │ │ cluster.py │ │ │ coalesce.py │ │ │ convert.py │ │ │ degree.py │ │ │ dropout.py │ │ │ embedding.py │ │ │ functions.py │ │ │ grid.py │ │ │ hetero.py │ │ │ homophily.py │ │ │ isolated.py │ │ │ laplacian.py │ │ │ loop.py │ │ │ map.py │ │ │ mask.py │ │ │ mixin.py │ │ │ ncon.py │ │ │ negative_sampling.py │ │ │ noise_scheduler.py │ │ │ normalize.py │ │ │ num_nodes.py │ │ │ random.py │ │ │ repeat.py │ │ │ select.py │ │ │ softmax.py │ │ │ sort_edge_index.py │ │ │ sparse.py │ │ │ subgraph.py │ │ │ to_dense_adj.py │ │ │ to_dense_batch.py │ │ │ tree_decomposition.py │ │ │ trim_to_layer.py │ │ │ unbatch.py │ │ │ undirected.py │ │ │ _scatter.py │ │ │ _segment.py │ │ │ __init__.py ``` ## 2.3可靠性、可用性 参考刘许晗老师的sharker库,网络中已经提供了完备的异常告警功能 sharker库目前仅支持动态图版本,看护版本支持MindSpore版本≥2.6.0,并在MindSpore2.3.0版本初步验证,但不再看护 看护策略如下 ``` tests │ test_config_store.py │ test_edge_index.py │ test_inspector.py │ test_schnet.py │ test_seed.py │ test_typing.py │ tree.txt │ __init__.py ├─data │ test_batch.py │ test_data.py │ test_database.py │ test_dataset.py │ test_dataset_summary.py │ test_feature_store.py │ test_graph_store.py │ test_hetero.py │ test_hypergraph.py │ test_inherit.py │ test_on_disk_dataset.py │ test_remote_backend_utils.py │ test_storage.py │ test_temporal.py │ test_view.py ├─datasets | test_qm9.py | test_powerflow.py ├─io │ test_fs.py │ test_off.py │ ├─loader │ test_cache.py │ test_cluster.py │ test_common.py │ test_dataloader.py │ test_dynamic_batch_sampler.py │ test_graph_saint.py │ test_hgt_loader.py │ test_ibmb_loader.py │ test_imbalanced_sampler.py │ test_link_neighbor_loader.py │ test_mixin.py │ test_neighbor_loader.py │ test_neighbor_sampler.py │ test_random_node_loader.py │ test_shadow.py │ test_temporal_dataloader.py │ test_utils.py │ test_zip_loader.py ├─nn │ │ test_encoding.py │ │ test_inits.py │ │ test_reshape.py │ │ test_resolver.py │ │ │ ├─aggr │ │ test_aggr_utils.py │ │ test_attention.py │ │ test_basic.py │ │ test_deep_sets.py │ │ test_equilibrium.py │ │ test_fused.py │ │ │ ├─conv │ │ test_gated_graph_conv.py │ │ test_gatv2_conv.py │ │ test_gat_conv.py │ │ test_gcn2_conv.py │ │ test_gcn_conv.py │ │ test_gin_conv.py │ │ test_message_passing.py │ │ │ └─norm │ test_batch_norm.py │ test_graph_norm.py │ ├─performance | | test_gat_conv_performance | | test_dataloader_performance └─utils test_assortativity.py test_augmentation.py test_coalesce.py test_convert.py test_degree.py test_dropout.py test_embedding.py test_functions.py test_geodesic.py test_grid.py test_hetero.py test_homophily.py test_isolated.py test_laplacian.py test_lexsort.py test_loop.py test_map.py test_mask.py test_mesh_laplacian.py test_negative_sampling.py test_noise_scheduler.py test_normalized_cut.py test_num_nodes.py test_ppr.py test_random.py test_repeat.py test_select.py test_softmax.py test_sort_edge_index.py test_sparse.py test_spmm.py test_subgraph.py test_to_dense_adj.py test_to_dense_batch.py test_tree_decomposition.py test_trim_to_layer.py test_unbatch.py test_undirected.py ```
# 一、特性概述 ## 1.1 需求来源及价值描述 ### 1.1.1 图神经网络在AI4Science领域的重要性 图神经网络(Graph Neural Network,下文统一称GNN)在AI4Science领域应用十分广泛,其核心价值在于对复杂系统内在关系的天然建模能力。科学研究的核心对象(分子、蛋白质、材料、气候系统、物理相互作用网络等)本质上都是由实体及其关系构成的图结构数据。GNN在此领域的独特优势体现在: 1. 直接建模非欧几里得关系: 传统CNN/RNN难以有效处理原子键、蛋白质残基连接、材料晶体结构以及物理场拓扑结构复杂的数据。GNN通过消息传递机制,直接学习和推理实体(节点)之间连接(边)所蕴含的物理、化学或生物规律。 2. 学习多尺度特征与相互作用: GNN能同时捕捉局部原子/残基环境与长程相互作用(如分子内氢键、蛋白质折叠、材料中的电子耦合),这对于理解物质性质、蛋白质功能、材料性能等至关重要。层级GNN架构可有效提取从微观到介观的多尺度特征。 3. 数据高效与物理规律融合: 科学实验数据往往昂贵且稀少。GNN的归纳偏置(即图结构先验)使其在少量标注数据上也能表现出色。更重要的是,GNN架构易于与物理定律(如对称性约束、能量守恒)结合,发展物理信息驱动的GNN模型,提升预测的准确性、可解释性和外推能力。 具体地,当前通过GNN赋能关键领域科学发现与工程应用包括且不限于: * 药物发现: 精准预测分子性质、药物-靶点相互作用、蛋白质-配体结合,加速新药研发。 * 材料设计: 高效搜索具有特定性能(如高导电性、强韧性)的新材料,缩短研发周期。 * 结构生物学: 解析蛋白质结构(如AlphaFold2的关键组件)、预测蛋白质功能、理解蛋白质动态行为。 * 量子化学计算: 替代部分昂贵的量子力学计算,快速预测分子能量、力场、反应路径。 * 气候与地球科学: 建模复杂的地球系统(如大气环流、生态网络)中各组成部分的相互作用。 * 复杂边界物理场离散:建模复杂边界条件下的物理场,对应点云、非结构化网格等物理场表征方法。 ### 1.1.2 GNN当前生态和MindSpore能力 目前业界已有的主流GNN生态包括pytorch_geometric(下称PyG)和deep graph library(下称DGL),其中PyG在运行性能、API友好程度、GNN SOTA模型覆盖度方面更具优势。 MindSpore已有Graph Learning库,能够针对图模型特有的执行模式进行编译优化,帮助开发者缩短训练时间。MindSpore Graph Learning还创新提出了以点为中心编程范式,提供更原生的图神经网络表达方式,并内置覆盖了大部分应用场景的模型。然而,基于静态图优化的MindSpore Graph Learning限制了GNN结构的多变性,同时也增大了调试难度。尤其在AI4Science领域,对高效、灵活、易用、可拓展,且符合业界使用习惯的GNN接口的需求愈发迫切。 ## 1.2基本原理 [sharker库](https://gitee.com/XuhanLiu/sharker)是刘许晗老师参考PyG在MindSpore框架实现的一整套GNN库,为纪念徐霞客,刘许晗老师将其命名为sharker。MindSpore开源社区感谢刘许晗老师的贡献,将部分网络进行性能优化,并将sharker库中主要功能看护起来,形成现在的mindscience_core.sharker接口。 ## 1.3场景分析 为便于开发者使用,sharker API看护的功能主要包括以下几个部分 |module|接口名|描述| |--|--|--| |nn.conv|GATConv|提供性能优化后的GATConv功能| |nn.conv|GCNConv|提供GCNConv功能| |nn|MessagePassing|提供MessagePassing基本功能以方便开发者撰写自己的网络| |nn|Aggregation|提供Aggregation基本功能以便开发者撰写自己的网络| |data|Dataset|提供Dataset基本接口,尤其是生物、电网拓扑示例| |data|InMemoryDataset|提供InMemoryDataset功能| |loader|DataLoader|提供DataLoader功能| |utils|scatter|提供特征聚合相关函数| |utils|segment|提供特征分割相关函数| # 二、详细设计 ## 2.1总体方案描述 MindScience的sharker接口提供了基本的图数据接口和网络接口,并给出GCNConv、GATConv和GINConv等多个网络实践,针对scatter等操作的性能进行了优化。目前,暂不提供CSR数据类型支持,也不提供Hetero/Hyper图支持。 ## 2.2基本功能设计 sharker类的设计和基本功能如下: ``` mindscience.src │ __init__.py ├─sharker │ │ experimental.py │ │ home.py │ │ inspector.py │ │ resolver.py │ │ seed.py │ │ template.py │ │ typing.py │ │ __init__.py │ ├─data │ │ │ batch.py │ │ │ collate.py │ │ │ database.py │ │ │ datapipe.py │ │ │ dataset.py │ │ │ download.py │ │ │ extract.py │ │ │ graph.py │ │ │ in_memory.py │ │ │ on_disk.py │ │ │ remote_store.py │ │ │ separate.py │ │ │ storage.py │ │ │ summary.py │ │ │ temporal.py │ │ │ view.py │ │ │ __init__.py │ ├─dataset │ │ qm9.py | | powerflow.py │ │ __init__.py │ │ │ ├─io │ │ │ fs.py │ │ │ npz.py │ │ │ obj.py │ │ │ off.py │ │ │ planetoid.py │ │ │ ply.py │ │ │ sdf.py │ │ │ tu.py │ │ │ txt_array.py │ │ │ __init__.py │ ├─loader │ │ │ dataloader.py │ │ │ __init__.py │ ├─nn │ │ │ encoding.py 时空编码 │ │ │ inits.py 权重初始化 │ │ │ reshape.py 带repr的reshape │ │ │ __init__.py │ │ ├─aggr │ │ │ │ attention.py │ │ │ │ base.py │ │ │ │ basic.py │ │ │ │ __init__.py │ │ ├─conv │ │ │ │ edge_conv.py │ │ │ │ gatv2_conv.py │ │ │ │ gat_conv.py │ │ │ │ gcn_conv.py │ │ │ │ gin_conv.py │ │ │ │ message_passing.py │ │ │ │ sage_conv.py │ │ │ │ __init__.py | │ ├─models │ │ │ │ mlp.py │ │ ├─norm │ │ │ │ batch_norm.py │ │ │ │ __init__.py │ ├─utils │ │ │ assortativity.py │ │ │ augmentation.py │ │ │ cluster.py │ │ │ coalesce.py │ │ │ convert.py │ │ │ degree.py │ │ │ dropout.py │ │ │ embedding.py │ │ │ functions.py │ │ │ grid.py │ │ │ hetero.py │ │ │ homophily.py │ │ │ isolated.py │ │ │ laplacian.py │ │ │ loop.py │ │ │ map.py │ │ │ mask.py │ │ │ mixin.py │ │ │ ncon.py │ │ │ negative_sampling.py │ │ │ noise_scheduler.py │ │ │ normalize.py │ │ │ num_nodes.py │ │ │ random.py │ │ │ repeat.py │ │ │ select.py │ │ │ softmax.py │ │ │ sort_edge_index.py │ │ │ sparse.py │ │ │ subgraph.py │ │ │ to_dense_adj.py │ │ │ to_dense_batch.py │ │ │ tree_decomposition.py │ │ │ trim_to_layer.py │ │ │ unbatch.py │ │ │ undirected.py │ │ │ _scatter.py │ │ │ _segment.py │ │ │ __init__.py ``` ## 2.3可靠性、可用性 参考刘许晗老师的sharker库,网络中已经提供了完备的异常告警功能 sharker库目前仅支持动态图版本,看护版本支持MindSpore版本≥2.6.0,并在MindSpore2.3.0版本初步验证,但不再看护 看护策略如下 ``` tests │ test_config_store.py │ test_edge_index.py │ test_inspector.py │ test_schnet.py │ test_seed.py │ test_typing.py │ tree.txt │ __init__.py ├─data │ test_batch.py │ test_data.py │ test_database.py │ test_dataset.py │ test_dataset_summary.py │ test_feature_store.py │ test_graph_store.py │ test_hetero.py │ test_hypergraph.py │ test_inherit.py │ test_on_disk_dataset.py │ test_remote_backend_utils.py │ test_storage.py │ test_temporal.py │ test_view.py ├─datasets | test_qm9.py | test_powerflow.py ├─io │ test_fs.py │ test_off.py │ ├─loader │ test_cache.py │ test_cluster.py │ test_common.py │ test_dataloader.py │ test_dynamic_batch_sampler.py │ test_graph_saint.py │ test_hgt_loader.py │ test_ibmb_loader.py │ test_imbalanced_sampler.py │ test_link_neighbor_loader.py │ test_mixin.py │ test_neighbor_loader.py │ test_neighbor_sampler.py │ test_random_node_loader.py │ test_shadow.py │ test_temporal_dataloader.py │ test_utils.py │ test_zip_loader.py ├─nn │ │ test_encoding.py │ │ test_inits.py │ │ test_reshape.py │ │ test_resolver.py │ │ │ ├─aggr │ │ test_aggr_utils.py │ │ test_attention.py │ │ test_basic.py │ │ test_deep_sets.py │ │ test_equilibrium.py │ │ test_fused.py │ │ │ ├─conv │ │ test_gated_graph_conv.py │ │ test_gatv2_conv.py │ │ test_gat_conv.py │ │ test_gcn2_conv.py │ │ test_gcn_conv.py │ │ test_gin_conv.py │ │ test_message_passing.py │ │ │ └─norm │ test_batch_norm.py │ test_graph_norm.py │ ├─performance | | test_gat_conv_performance | | test_dataloader_performance └─utils test_assortativity.py test_augmentation.py test_coalesce.py test_convert.py test_degree.py test_dropout.py test_embedding.py test_functions.py test_geodesic.py test_grid.py test_hetero.py test_homophily.py test_isolated.py test_laplacian.py test_lexsort.py test_loop.py test_map.py test_mask.py test_mesh_laplacian.py test_negative_sampling.py test_noise_scheduler.py test_normalized_cut.py test_num_nodes.py test_ppr.py test_random.py test_repeat.py test_select.py test_softmax.py test_sort_edge_index.py test_sparse.py test_spmm.py test_subgraph.py test_to_dense_adj.py test_to_dense_batch.py test_tree_decomposition.py test_trim_to_layer.py test_unbatch.py test_undirected.py ```
评论 (
1
)
登录
后才可以发表评论
状态
TODO
CLOSED
TODO
ACCEPTED
WIP
VALIDATION
DONE
REJECTED
负责人
未设置
mengqinghe
mengqinghe0909
负责人
协作者
+负责人
+协作者
标签
未设置
项目
未立项任务
未立项任务
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (
-
)
标签 (
-
)
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
预计工期
(小时)
参与者(2)
1
https://gitee.com/mindspore/mindscience.git
git@gitee.com:mindspore/mindscience.git
mindspore
mindscience
mindscience
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册