Génération de molécules guidés par texte avec modèle de langage de diffusion

Il s'agit du code du papier AAAI 2024: génération de molécules guidés par texte avec modèle de langage de diffusion.
Usage
Données sur papier
- Installer le package
cd TGMDLMCODE; pip install -e improved-diffusion/; pip install -e transformers/ . - Téléchargez Scibert et mettez-le dans le fichier
scibert .
Entraînement
-
cd improved-diffusion; cd scripts - Encodez le texte
python process_text.py -i train_val_256; python process_text.py -i test - Modèle de train pour la phase un:
python train.py - Modèle de train pour la phase deux:
python train_correct_withmask.py
Les détails suivants sont importants pour vous de savoir avant de former ce modèle par vous-même!
- Pour ce modèle, il a toujours besoin de plus de 100 000 étapes de formation avant d'échantillonnage afin que vous puissiez obtenir un résultat normal. La perfomance converge longtemps après la convergence de la perte.
- La perte convergera enfin environ 0,015 (cette valeur dépend de la quantité de paramètres formables, 0,015 est pour le modèle dans ce code. Dans une plage raisonnable, le modèle est plus important, la perte est plus petite). Il est possible que la perte dans votre expérience ne converge pas à 0,015 (inférieure à 0,02) et soit coincée à une valeur élevée relative (comme 0,08), nous vous suggérons de relancer la procédure de formation avec une autre graine aléatoire. Normalement, la perte devrait converger très rapidement à moins de 0,03 en 15 000 étapes. Si votre perte ne se comporte pas ainsi, essayez simplement une autre fois :) (Merci à @yhanjg qui rapporte ce problème)
Nous n'avons aucune idée de la raison pour laquelle ce problème apparaîtra. J'ai observé une fois que la perte est restée à une valeur élevée, et un autre chercheur m'a atteint après avoir exécuté mon code et signalé ce problème également. Ce problème doit être résolu après la moitié du taux d'apprentissage :)
Échantillonnage
-
python text_sample.py; python post_sample.py Le fichier final OURMODEL_OUTPUT.txt est notre sortie.
Évaluation
Vous pouvez évaluer toutes les mesures, sauf pour Text2Mol en exécutant ev.py Pour Text2Mol, veuillez aller sur Molt5 pour plus de détails.
Exigences
- python3
- Pytorch 2.0
- Transformers (veillez à suivre l'installation de ReadMe exactement.)
Citation
Veuillez citer notre papier si vous utilisez le code:
@article{gong2024text,
title={Text-Guided Molecule Generation with Diffusion Language Model},
author={Gong, Haisong and Liu, Qiang and Wu, Shu and Wang, Liang},
volume={38},
url={https://ojs.aaai.org/index.php/AAAI/article/view/27761},
DOI={10.1609/aaai.v38i1.27761},
number={1},
journal={Proceedings of the AAAI Conference on Artificial Intelligence},
year={2024},
month={Mar.},
pages={109-117}
}
Reconnaître
Ce code est basé sur https://github.com/xiangli1999/diffusion-lm et https://github.com/blender-nlp/molt5