概览
GROVER 是配套论文《Self-Supervised Graph Transformer on Large-Scale Molecular Data》的 PyTorch 实现。它结合可下载的预训练模型与相关代码,用于学习分子表示,并将其适配到带标签的性质预测任务。README 提供 GROVER base 和 large 检查点,以及针对十一个分类和回归数据集微调的模型。其工作流涵盖表示学习、下游训练、预测、指纹提取和评估。
预训练从未标记的分子数据开始,并需要语义基序标签、原子和键的上下文词汇表,以及拆分后的数据集结构。文档所述的数据准备过程会生成特征数组、词汇表字典和彼此分离的图数据分区。微调使用包含 smiles 列的 CSV,也可以纳入存储在 .npz 文件中的额外分子描述符。微调后的检查点可用于生成并写入输出文件的预测;预测结果会在已配置的折数和集成成员之间取平均。
对于基于表示的工作流,GROVER 可导出由池化原子嵌入、池化键嵌入或两者拼接而成的指纹。提供额外分子特征时,也可以将其附加。因此,该项目既适用于特定任务的预测,也适用于在独立下游分析中评估学习到的分子表示。
README 指出了与复现相关的限制:index_select_nd 相关的非确定性行为使微调结果难以精确复现;与原始实现相比,本实现还在消息传递层中加入了稠密连接。项目提供评估流程和微调检查点,但并未证明其能在新用户的系统上实现可复现性。项目还明确说明,它不是 Tencent 官方支持的产品。
主要功能
- 使用语义基序标签以及原子/键上下文词汇表进行自监督 `GTransformer` 预训练,并提供有文档说明的单 GPU 和基于 Horovod 的多 GPU 工作流。
- 可下载的 GROVER base 和 large 预训练检查点,以及针对十一个分子基准数据集微调的检查点。
- 在包含 `smiles` 列的带标签 CSV 数据集上进行微调,并可选用存储为 `.npz` 数组的 `rdkit_2d_normalized` 分子特征。
- 使用微调模型进行预测,并对已配置的折数和集成成员的输出取平均。
- 导出使用原子嵌入、键嵌入或两者拼接生成的分子指纹,并可选用额外分子特征。
- 使用文档所述的 AUC 设置评估分类任务检查点;回归任务默认采用 RMSE;复现 QM7 和 QM8 时采用 MAE。
使用场景
- 建议的评估:将预训练 GROVER 检查点适配到带标签的分子分类或回归数据集,并在留出划分上评估表现。
- 建议的评估:比较原子、键和组合 GROVER 指纹,将其作为独立下游性质预测分析的输入。
- 建议的评估:使用提供的微调基准检查点和文档所述指标,考察其与 README 报告实验结果的一致程度。
- 建议的评估:准备好基序标签、上下文词汇表和数据分区后,在未标记的分子集合上预训练分子表示。
使用方式
- 阅读官方 README,并选择预训练、微调、预测、指纹生成或评估工作流。查看其中的依赖要求和环境说明;文档指定 Python 3.6.8,并引用
requirements.txt和Dockerfile。 - 如需从预训练模型开始,可获取 GROVER base 检查点,或选择 README 中 large 模型的链接。请将预训练表示检查点与特定任务的微调模型区分开。
- 按照相关 README 示例准备输入。微调需要包含
smiles的 CSV;预训练还需要基序标签、原子/键词汇表和数据集拆分,单 GPU 运行也不例外。 - 遵循文档中的微调或指纹工作流。如果训练时使用了额外分子特征,请为预测输入生成匹配的特征。根据分析目的选择原子、键或组合指纹。
- 使用文档所述的任务指标和数据划分设置评估已保存的检查点。将此视为拟议的本地评估,并考虑文档提到的非确定性行为和稠密连接差异;另行查阅代码许可,不要将其与检查点或数据集条款混为一谈。