يوفر هذا الريبو الكود المصدري والبيانات الخاصة بمقالتنا GreaseLM : Graph REASoning Enhanced Language Models for Question Answering (ICLR 2022 Spotlight). إذا كنت تستخدم أيًا من أكوادنا البرمجية أو البيانات المعالجة أو النماذج المعدة مسبقًا، فيرجى ذكر ما يلي:
@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" alt="" style="max-width: 100%;">
قم بتشغيل الأوامر التالية لإنشاء بيئة كوندا (بافتراض 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
قد تستغرق المعالجة المسبقة للبيانات بنفسك وقتًا طويلاً، لذا إذا كنت تريد تنزيل البيانات المعالجة مسبقًا مباشرةً، فيرجى الانتقال إلى القسم الفرعي التالي.
قم بتنزيل بيانات ConceptNet وCommonsenseQA وOpenBookQA الأولية باستخدام
./download_raw_data.sh
يمكنك معالجة هذه البيانات الأولية مسبقًا عن طريق التشغيل
CUDA_VISIBLE_DEVICES=0 python preprocess.py -p <num_processes>
يمكنك تحديد GPU الذي تريد استخدامه في بداية الأمر CUDA_VISIBLE_DEVICES=...
. البرنامج النصي سوف:
data/csqa/statement/
) يتوفر البرنامج النصي لتنزيل بيانات MedQA-USMLE ومعالجتها مسبقًا والرسم البياني للمعرفة الطبية الحيوية استنادًا إلى قاعدة بيانات الأمراض وDrugBank في utils_biomed/
.
لراحتك، إذا كنت لا ترغب في معالجة البيانات مسبقًا بنفسك، فيمكنك تنزيل جميع البيانات التي تمت معالجتها مسبقًا هنا. قم بتنزيلها في دليل المستوى الأعلى لهذا الريبو وقم بفك ضغطها. انقل مجلدات medqa_usmle
و ddb
إلى الدليل data/
.
يجب أن تبدو بنية الملف الناتج كما يلي:
.
├── 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/
لتدريب GreaseLM على CommonsenseQA، قم بتشغيل
CUDA_VISIBLE_DEVICES=0 ./run_ GreaseLM .sh csqa --data_dir data/
يمكنك تحديد ما يصل إلى وحدتي معالجة رسومات تريد استخدامهما في بداية الأمر CUDA_VISIBLE_DEVICES=...
.
وبالمثل، لتدريب GreaseLM على OpenbookQA، قم بتشغيل
CUDA_VISIBLE_DEVICES=0 ./run_ GreaseLM .sh obqa --data_dir data/
لتدريب GreaseLM على MedQA-USMLE، قم بتشغيل
CUDA_VISIBLE_DEVICES=0 ./run_ GreaseLM __medqa_usmle.sh
يمكنك تنزيل نموذج GreaseLM المُدرب مسبقًا على CommonsenseQA هنا، والذي يحقق حساب IH-dev. من 79.0
وحساب اختبار IH. من 74.0
.
يمكنك أيضًا تنزيل نموذج GreaseLM مُدرب مسبقًا على OpenbookQA هنا، والذي يحقق حسابًا تجريبيًا. من 84.8
.
يمكنك أيضًا تنزيل نموذج GreaseLM المُدرب مسبقًا على MedQA-USMLE هنا، والذي يحقق حساب اختبار. من 38.5
.
لتقييم نقطة تفتيش نموذج GreaseLM التي تم تدريبها مسبقًا على CommonsenseQA، قم بتشغيل
CUDA_VISIBLE_DEVICES=0 ./eval_ GreaseLM .sh csqa --data_dir data/ --load_model_path /path/to/checkpoint
مرة أخرى، يمكنك تحديد ما يصل إلى وحدتي معالجة رسومات تريد استخدامهما في بداية الأمر CUDA_VISIBLE_DEVICES=...
.
وبالمثل، لتقييم نقطة تفتيش نموذج GreaseLM المدربة مسبقًا على OpenbookQA، قم بتشغيل
CUDA_VISIBLE_DEVICES=0 ./eval_ GreaseLM .sh obqa --data_dir data/ --load_model_path /path/to/checkpoint
لتقييم نقطة تفتيش نموذج GreaseLM المدربة مسبقًا على MedQA-USMLE، قم بتشغيل
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
بتنسيق .jsonl (راجع data/csqa/statement/train.statement.jsonl
)data/{yourdataset}/
لتخزين ملفات .jsonlpreprocess.py
وقم بإجراء استخراج الرسم البياني الفرعي لبياناتكutils/parser_utils.py
لدعم مجموعة البيانات الخاصة بك تم بناء هذا الريبو على العمل التالي:
QA-GNN: Question Answering using Language Models and Knowledge Graphs
https://github.com/michiyasunaga/qagnn
شكرا جزيلا للمؤلفين والمطورين!