การซื้อคืนนี้ให้ซอร์สโค้ดและข้อมูลของเอกสาร GreaseLM : Graph REASoning Enhanced Language Models for Question Answering (สปอตไลท์ ICLR 2022) หากคุณใช้โค้ด ข้อมูลที่ประมวลผล หรือโมเดลที่ได้รับการฝึกล่วงหน้าใดๆ ของเรา โปรดอ้างอิง:
@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%;">
รันคำสั่งต่อไปนี้เพื่อสร้างสภาพแวดล้อม conda (สมมติว่า 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/
เพื่อความสะดวกของคุณ หากคุณไม่ต้องการประมวลผลข้อมูลล่วงหน้าด้วยตนเอง คุณสามารถดาวน์โหลดข้อมูลที่ประมวลผลล่วงหน้าทั้งหมดได้ที่นี่ ดาวน์โหลดลงในไดเร็กทอรีระดับบนสุดของ repo นี้แล้วแตกไฟล์ ย้ายโฟลเดอร์ 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/
คุณสามารถระบุ GPU ได้สูงสุด 2 ตัวที่คุณต้องการใช้ในตอนต้นของคำสั่ง 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 acc 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
อีกครั้งคุณสามารถระบุ GPU ได้สูงสุด 2 ตัวที่คุณต้องการใช้ในการเริ่มต้นคำสั่ง 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
เพื่อรองรับชุดข้อมูลของคุณเอง repo นี้สร้างขึ้นจากงานต่อไปนี้:
QA-GNN: Question Answering using Language Models and Knowledge Graphs
https://github.com/michiyasunaga/qagnn
ขอบคุณมากสำหรับผู้เขียนและนักพัฒนา!