返回列表

Fine-Tuning of TransPolymer for Polymer Property Prediction

667. NeurIPS - Open Polymer Prediction 2025 | neurips-open-polymer-prediction-2025

开始: 2025-06-16 结束: 2025-09-15 化学与材料 数据算法赛
TransPolymer 微调用于聚合物性质预测

NeurIPS - 2025 开放聚合物预测竞赛:银牌解决方案

团队: 个人参赛

成员: Fernando Villafuerte (fjoaquin.villafuerte@gmail.com)

发布日期: 2025-09-29

背景

方法概述

竞赛描述

本竞赛专注于从 SMILES 表示中预测五个关键的聚合物性质,包括:

  1. 玻璃化转变温度 (Tg, 摄氏度)
  2. 热导率 (Tc, W/(m*K))
  3. 回转半径 (Rg, 埃)
  4. 密度 (g/cc)
  5. 自由分数体积 (FFV)

使用的模型与算法

我采用了 TransPolymer 基于 Transformer 的语言模型进行 LoRA 微调,用于从 SMILES 字符串预测聚合物性质。LoRA 部署使用了 PEFT 和 HuggingFace Trainer,其实现可见于项目链接中包含的 GitHub 仓库中的 DownStream.py 脚本。

数据预处理

来源: 竞赛组织者提供的主要数据和补充数据。

增强: 使用 RDKit 进行 SMILES 字符串增强。采用了标准枚举、凯库勒化 (kekulization) 和立体枚举策略进行增强(参见链接 GitHub 仓库中的 data_prep.py 脚本)。

划分: 从增强数据集中,为竞赛的每个目标性质(Tg, Tc, Rg, FFV 和密度)创建了五对独立的下游训练集和测试集。每个集的测试数据和训练数据之间的比例为 0.9/0.1(参见链接 GitHub 仓库中的 data_prep.py 脚本)。

归一化: Tc, Rg, FFV 和密度的数据未进行归一化。对于 Tg,数据被重新缩放为开尔文 (Kelvin),并测试了最大值归一化和 z-score 归一化;最佳性能通过最大值归一化实现(参见链接 GitHub 仓库中的 z-normalization.py 和 normalization.py)。

训练和测试数据集格式:

SMILES 性质
CC(=O)OC1=CC=... 0.123

验证策略

如上所述,在数据预处理中,验证是针对每个目标性质的测试集进行的,该测试集占该性质总数据的 10%。HuggingFace trainer 设置为训练 10 个 epoch,每个 epoch 结束时在测试集上进行验证。如果连续两个 epoch 后验证损失没有观察到改善,训练将终止。使用的 LoRA 训练参数为标准参数。训练参数设置在 config_finetune.yaml 文件中,训练使用链接 GitHub 仓库中包含的 DownStream_LoRA.py 脚本执行。

通过使用该目标性质的五个 LoRA 微调模型检查点中的每一个进行推理,评估预测值和真实值之间的皮尔逊相关系数 (Pearson correlation),并生成相应的散点图,来评估训练的有效性。绘制了一条参考线,表示预测值和真实性质完美相关的理想情况。完美相关线与散点图之间的一致性,以及高相关系数分数,用于评估每个模型检查点的预测能力。参见链接 GitHub 仓库中的 correlation.ipynb 笔记本文件以供参考。

提交详情

结果

使用标准 LoRA 参数进行微调产生了具有合理预测 Tc, Rg, 密度和 FFV 能力的模型检查点。然而,Tg 出现了一些问题。在没有归一化的情况下对 Tg 数据进行训练产生的微调模型无法预测超过特定阈值的 Tg,皮尔逊相关系数较差,且与完美相关线的一致性较差,表明对未见过的 SMILES 数据准确预测 Tg 的可能性较低。首先将 Tg 数据重新缩放为开尔文,然后通过训练和测试数据集中的最大值对其进行归一化, substantially 提高了微调模型的预测能力,如下图所示。

Tg 归一化对皮尔逊相关系数的影响

然后将开尔文重新缩放并通过训练和测试数据集中的最大值归一化的 Tg 数据与 z-score 归一化的开尔文重新缩放 Tg 数据进行了比较。虽然在 z-score 归一化 Tg 数据上训练的模型,其预测值和真实值之间的皮尔逊相关系数略高,但真实值和预测值的散点图与完美相关线对齐不佳,表明该模型的预测能力可能不如在通过最大 Tg 值归一化的 Tg 数据上训练的模型,如下图所示。

Tg 按最大值归一化与 Z-score 归一化的对比
  • 排行榜排名: 银牌获得者
  • 最佳公共分数: 0.068
  • 最佳私有分数: 0.087

关键见解与经验教训

  • 在大型 Transformer 模型上进行 LoRA 微调对于从 SMILES 数据预测聚合物性质非常有效。
  • 仔细的归一化,尤其是对于 Tg,能显著提高性能。
  • 简单的架构配合良好的数据预处理可以表现良好。

致谢

  • 预训练模型来自 TransPolymer
  • LoRA 方法灵感来自 Hu et al. (2021)
  • 竞赛组织者、圣母大学 (Notre Dame University) 和 Kaggle 社区。

参考文献

  1. Xu, C., Wang, Y., & Barati Farimani, A. (2023). TransPolymer: a Transformer-based language model for polymer property predictions. npj Computational Materials, 9(1), 64.
  2. Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., Wang, L., & Chen, W. (2021). LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685.

附录

相关文件

  1. config_finetune.yaml: LoRA 微调的配置文件
  2. data_prep.py: 数据增强脚本
  3. DownStream_LoRA.py: 微调脚本
  4. inference.ipynb: 用于从模型检查点运行推理的笔记本
  5. correlation.ipynb: 用于评估预测值和真实测试值之间皮尔逊相关系数的笔记本
  6. normalization.py: 按最大 Tg 值归一化 Tg 数据的文件
  7. z_normalization.py: Tg 数据的 z-score 归一化文件。

环境设置

创建 Python 环境:

python -m venv your_environment_name

克隆仓库:

git clone https://github.com/fvillafu125/polymers_ftw.git
cd polymers_ftw

安装依赖:

pip install -r requirements.txt

或手动安装包:

pip install torch rdkit pandas ...

微调

  1. 编辑 config_finetune.yaml 文件中的训练参数。
  2. 运行以下命令:
python DownStream_LoRA.py

注意下游训练的默认损失函数为 MSE (均方误差)。

推理

可以使用包含的笔记本 inference.ipynb 执行推理。

模型检查点

预训练的 TransPolymer 模型检查点包含在 ckpt/pretrain.pt 中。LoRA 微调的模型检查点包含在 ckpt/neurips.pt 中。

数据可视化

提供的 correlation.ipynb 笔记本允许可视化实际测试和预测性质之间的皮尔逊相关系数。loss_plot.ipynb 笔记本允许绘制训练和测试损失。

同比赛其他方案