Dieses Repo stellt den Quellcode und die Daten unseres Artikels GreaseLM : Graph REASoning Enhanced Language Models for Question Answering (ICLR 2022 Spotlight) bereit. Wenn Sie einen unserer Codes, verarbeiteten Daten oder vorab trainierten Modelle verwenden, geben Sie bitte Folgendes an:
@inproceedings { zhang2021 GreaseLM ,
title = { GreaseLM : Graph REASoning Enhanced Language Models } ,
author = { Zhang, Xikun and Bosselut, Antoine and Yasunaga, Michihiro and Ren, Hongyu and Liang, Percy and Manning, Christopher D and Leskovec, Jure } ,
booktitle = { International Conference on Learning Representations } ,
year = { 2021 }
}
GreaseLM-Modellarchitektur" alt="" style="max-width: 100%;">
Führen Sie die folgenden Befehle aus, um eine Conda-Umgebung zu erstellen (vorausgesetzt, CUDA 10.1):
conda create -y -n GreaseLM python=3.8
conda activate GreaseLM
pip install numpy==1.18.3 tqdm
pip install torch==1.8.0+cu101 torchvision -f https://download.pytorch.org/whl/torch_stable.html
pip install transformers==3.4.0 nltk spacy
pip install wandb
conda install -y -c conda-forge tensorboardx
conda install -y -c conda-forge tensorboard
# for torch-geometric
pip install torch-scatter==2.0.7 -f https://pytorch-geometric.com/whl/torch-1.8.0+cu101.html
pip install torch-cluster==1.5.9 -f https://pytorch-geometric.com/whl/torch-1.8.0+cu101.html
pip install torch-sparse==0.6.9 -f https://pytorch-geometric.com/whl/torch-1.8.0+cu101.html
pip install torch-spline-conv==1.2.1 -f https://pytorch-geometric.com/whl/torch-1.8.0+cu101.html
pip install torch-geometric==1.7.0 -f https://pytorch-geometric.com/whl/torch-1.8.0+cu101.html
Die Vorverarbeitung der Daten selbst kann lange dauern. Wenn Sie die vorverarbeiteten Daten direkt herunterladen möchten, fahren Sie bitte mit dem nächsten Unterabschnitt fort.
Laden Sie die rohen ConceptNet-, CommonsenseQA- und OpenBookQA-Daten herunter, indem Sie verwenden
./download_raw_data.sh
Sie können diese Rohdaten durch Ausführen vorverarbeiten
CUDA_VISIBLE_DEVICES=0 python preprocess.py -p <num_processes>
Sie können die GPU, die Sie verwenden möchten, am Anfang des Befehls CUDA_VISIBLE_DEVICES=...
angeben. Das Skript wird:
data/csqa/statement/
). Das Skript zum Herunterladen und Vorverarbeiten der MedQA-USMLE-Daten und des biomedizinischen Wissensgraphen basierend auf Disease Database und DrugBank wird in utils_biomed/
bereitgestellt.
Wenn Sie die Daten nicht selbst vorverarbeiten möchten, können Sie der Einfachheit halber alle vorverarbeiteten Daten hier herunterladen. Laden Sie sie in das oberste Verzeichnis dieses Repos herunter und entpacken Sie sie. Verschieben Sie die Ordner medqa_usmle
und ddb
in das Verzeichnis data/
.
Die resultierende Dateistruktur sollte wie folgt aussehen:
.
├── README.md
├── data/
├── cpnet/ (prerocessed ConceptNet)
├── csqa/
├── train_rand_split.jsonl
├── dev_rand_split.jsonl
├── test_rand_split_no_answers.jsonl
├── statement/ (converted statements)
├── grounded/ (grounded entities)
├── graphs/ (extracted subgraphs)
├── ...
├── obqa/
├── medqa_usmle/
└── ddb/
Um GreaseLM auf CommonsenseQA zu trainieren, führen Sie Folgendes aus:
CUDA_VISIBLE_DEVICES=0 ./run_ GreaseLM .sh csqa --data_dir data/
Sie können bis zu 2 GPUs angeben, die Sie am Anfang des Befehls CUDA_VISIBLE_DEVICES=...
verwenden möchten.
Um GreaseLM auf OpenbookQA zu trainieren, führen Sie Folgendes aus:
CUDA_VISIBLE_DEVICES=0 ./run_ GreaseLM .sh obqa --data_dir data/
Um GreaseLM auf MedQA-USMLE zu trainieren, führen Sie Folgendes aus:
CUDA_VISIBLE_DEVICES=0 ./run_ GreaseLM __medqa_usmle.sh
Sie können hier ein vorab trainiertes GreaseLM Modell auf CommonsenseQA herunterladen, das einen IH-dev gemäß erreicht. von 79.0
und einem IH-Test gem. von 74.0
.
Sie können hier auch ein vortrainiertes GreaseLM Modell auf OpenbookQA herunterladen, das einen Test gem. von 84.8
.
Sie können hier auch ein vortrainiertes GreaseLM Modell auf MedQA-USMLE herunterladen, das einen Test gem. von 38.5
.
Führen Sie Folgendes aus, um einen vorab trainierten GreaseLM -Modellprüfpunkt auf CommonsenseQA auszuwerten
CUDA_VISIBLE_DEVICES=0 ./eval_ GreaseLM .sh csqa --data_dir data/ --load_model_path /path/to/checkpoint
Auch hier können Sie am Anfang des Befehls CUDA_VISIBLE_DEVICES=...
bis zu 2 GPUs angeben, die Sie verwenden möchten.
Um einen vorab trainierten GreaseLM -Modellprüfpunkt auf OpenbookQA auszuwerten, führen Sie ebenfalls Folgendes aus:
CUDA_VISIBLE_DEVICES=0 ./eval_ GreaseLM .sh obqa --data_dir data/ --load_model_path /path/to/checkpoint
Führen Sie Folgendes aus, um einen vorab trainierten GreaseLM -Modellprüfpunkt auf MedQA-USMLE auszuwerten
INHERIT_BERT=1 CUDA_VISIBLE_DEVICES=0 ./eval_ GreaseLM .sh medqa_usmle --data_dir data/ --load_model_path /path/to/checkpoint
{train,dev,test}.statement.jsonl
im .jsonl-Format (siehe data/csqa/statement/train.statement.jsonl
).data/{yourdataset}/
um die .jsonl-Dateien zu speichernpreprocess.py
und führen Sie die Subgraph-Extraktion für Ihre Daten durchutils/parser_utils.py
um Ihren eigenen Datensatz zu unterstützen Dieses Repo basiert auf der folgenden Arbeit:
QA-GNN: Question Answering using Language Models and Knowledge Graphs
https://github.com/michiyasunaga/qagnn
Vielen Dank an die Autoren und Entwickler!