ที่เก็บนี้มีรหัสทดลองเพื่อทำซ้ำผลลัพธ์ในการหลอมรวมความรู้ของข้อมูลโดยการรวมน้ำหนักของแบบจำลองภาษากระดาษที่จะเผยแพร่ในระหว่างการประชุมนานาชาติครั้งที่สิบเอ็ดเกี่ยวกับการเป็นตัวแทนการเรียนรู้ (ICLR 2023) จะจัดขึ้น 1-5 พฤษภาคม 2023 ในคิกาลีรวันดา
@inproceedings{
jin2023dataless,
title={Dataless Knowledge Fusion by Merging Weights of Language Models},
author={Xisen Jin and Xiang Ren and Daniel Preotiuc-Pietro and Pengxiang Cheng},
booktitle={The Eleventh International Conference on Learning Representations},
year={2023},
url={https://openreview.net/forum?id=FCnohuR6AnM}
}
เราใช้ Pytorch 1.13.1 ดูข้อกำหนด. txt สำหรับข้อกำหนดอื่น ๆ
หากคุณเพียงแค่สนใจอัลกอริทึมค่าเฉลี่ยการถดถอย (regmean) โปรดตรวจสอบ regmean_demo.ipynb
นี่คือสมุดบันทึก Jupyter แบบสแตนด์อโลนที่ผสานโมเดลหม้อแปลงใบหน้ากอดสองรุ่นที่ปรับแต่งบนกาว ไฟล์นี้ไม่ได้นำเข้าไฟล์ภายใต้ src/
โปรดดาวน์โหลดชุดข้อมูล Emotion Unified ใน repo นี้ ควรวางไฟล์ภายใต้ PROJECT_ROOT/resources/emotion_splits ในโครงสร้างต่อไปนี้
.
├── crowdflower
│ ├── dev.jsonl
│ ├── full.jsonl
│ ├── test.jsonl
│ └── train.jsonl
├── dailydialog
│ ├── dev.jsonl
│ ├── full.jsonl
│ ├── test.jsonl
│ └── train.jsonl
├── electoraltweets
│ ├── dev.jsonl
│ ├── full.jsonl
│ ├── test.jsonl
│ └── train.jsonl
├── emobank
│ ├── dev.jsonl
│ ├── full.jsonl
│ ├── test.jsonl
│ └── train.jsonl
...
โปรดเตรียมชุดข้อมูล Conll2003, Ontonotes และ Twitter ner และวางไว้ภายใต้ PROJECT_ROOT/resources/ner
.
├── conll2003
│ ├── dev.conll
│ ├── test.conll
│ └── train.conll
├── ontonotes
│ ├── onto.development.bc.ner
│ ├── onto.development.bn.ner
│ ├── onto.development.mz.ner
│ ├── onto.development.nw.ner
│ ├── onto.development.tc.ner
│ ├── onto.development.wb.ner
│ ├── onto.test.bc.ner
│ ├── onto.test.bn.ner
│ ├── onto.test.mz.ner
│ ├── onto.test.nw.ner
│ ├── onto.test.tc.ner
│ ├── onto.test.wb.ner
│ ├── onto.train.bc.ner
│ ├── onto.train.bn.ner
│ ├── onto.train.mz.ner
│ ├── onto.train.nw.ner
│ ├── onto.train.tc.ner
│ └── onto.train.wb.ner
└── twitter
├── annotated.twitter-ner-20-21-tweet-dev-withcleaned.json
├── annotated.twitter-ner-20-21-tweet-test-withcleaned.json
└── annotated.twitter-ner-20-21-tweet-train-withcleaned.json
ที่นี่ชุดข้อมูล Conll และ Ontonotes มีรายการในรูปแบบ Conll
CRICKET O Conll
- O Conll
LEICESTERSHIRE B-ORG Conll
TAKE O Conll
OVER O Conll
AT O Conll
TOP O Conll
AFTER O Conll
INNINGS O Conll
VICTORY O Conll
. O Conll
LONDON B-LOC Conll
1996-08-30 O Conll
...
Twitter ner มี 1 json dict ต่อบรรทัด
{"text": "Spectacular skies over #Clonmel tonight http://t.co/OxclQkuyTp /via @niallodonovan #lastdayofautumn", "id": "539106999980797952", "entities": [{"startCharOffset": 24, "endOffset": 31, "endCharOffset": 31, "surface": "Clonmel", "startOffset": 24, "type": "LOC"}, {"startCharOffset": 69, "endOffset": 82, "endCharOffset": 82, "surface": "niallodonovan", "startOffset": 69, "type": "PER"}], "labels": ["O", "O", "O", "O", "B-LOC", "O", "O", "O", "O", "B-PER", "O", "O"], "tokens": ["Spectacular", "skies", "over", "#", "Clonmel", "tonight", "http://t.co/OxclQkuyTp", "/", "via", "@niallodonovan", "#", "lastdayofautumn"], "domain": "TWT"}
ชุดข้อมูลกาวจะถูกดาวน์โหลดและโหลดด้วยไลบรารีชุด datasets ของ Hugging Face
โปรดดาวน์โหลดโมเดล Pretrained (เช่น Roberta-Base) จากที่เก็บโมเดล Hugging Face และวางไว้ภายใต้ PROJECT_ROOT/resources (เช่น PROJECT_ROOT/resources/roberta-base )
--config_files : ดูภายใต้ src/configs โมดูลการฝึกอบรม ( src.run_experiments ) ต้องการไฟล์กำหนดค่าสามไฟล์ที่กำหนดอาร์กิวเมนต์เริ่มต้น ( src/defaults.yaml ) การกำหนดค่าข้อมูล (ภายใต้ src/configs/datasets ) และการกำหนดค่า EXP (ภายใต้ src/configs/exps )
--filter_model : มีประโยชน์เมื่อรวมเฉพาะชุดย่อยของแต่ละรุ่นที่ระบุในการกำหนดค่าข้อมูลเช่น --filter_model model0 model1 จะทำการรวมคู่ของ Model0 และ Model1 (ดูคำจำกัดความของนามแฝงเช่น Model0, Model1 ในการกำหนดค่าข้อมูล)
--templates : ไฟล์ config อาจมีเทมเพลตเช่น {seed} ควรระบุค่าของเทมเพลตในบรรทัดคำสั่ง (เช่น --templates seed=1 )
แต่ละรุ่น (ก่อนการรวม) จะได้รับการฝึกอบรมและจัดเก็บภายใต้ local_zoo_dir ที่ระบุไว้ในการกำหนดค่า หากไม่มีโมเดลแต่ละรุ่นในสวนสัตว์ที่ตรงกับประเภทรุ่นที่กำหนดและอาร์กิวเมนต์ zoo_filter ในการกำหนดค่าโปรแกรมจะฝึกอบรมแต่ละรุ่นใหม่โดยอัตโนมัติและจัดเก็บไว้ภายใต้ local_zoo_dir หากพบแต่ละรุ่นใน local_zoo_dir พวกเขาจะถูกโหลดโดยไม่ต้องฝึกอบรมอีกครั้ง
ตัวอย่าง: regmean, อารมณ์, หัว init เดียวกัน, การผสาน Model0 (DailyDialogue) และ Model1 (CrowdFlower)
HF_DATASETS_OFFLINE=1 CUDA_VISIBLE_DEVICES=0 python -m src.run_experiments --config src/configs/defaults.yaml src/configs/datasets/emotion.yaml src/configs/exps/roberta-base/roberta-base-emotion.yaml --templates seed=1 --filter_model model0 model1
การรวมโมเดลการจำแนกอารมณ์สองแบบที่ได้รับการฝึกฝนในชุดข้อมูลที่แตกต่างกัน (โดเมน)
scripts/roberta/pairwise_emotion.pyscripts/t5/pairwise_emotion.pyscripts/t5/pairwise_emotion.pyการรวมสองรุ่นที่ผ่านการฝึกอบรมเกี่ยวกับงานกาวที่แตกต่างกัน หัวการจำแนกประเภทเฉพาะงานจะไม่ถูกรวมเข้าด้วยกัน
scripts/distilbert/pairwise_glue_difftask.pyscripts/roberta/pairwise_glue_difftask.pyการรวมสองรุ่นที่ผ่านการฝึกอบรมสองพาร์ติชันที่ไม่ใช่ IID ของงานกาวเดียวกัน
scripts/distilbert/pairwise_glue_subset.pyscripts/roberta/pairwise_glue_subset.py การรวมหลายรุ่น (สองถึงทั้งหมด) ตามลำดับของประสิทธิภาพ OOD ของแต่ละรุ่น
scripts/roberta/incremental_emotion.pyscripts/t5/incremental_emotion.pyscripts/deberta/incrementale_emotion.pyscripts/roberta/incremental_ner.pyscripts/deberta/incremental_ner.pyโปรดทราบว่าสคริปต์เหล่านี้ใช้การอนุมานทั้งในโดเมนและชุดทดสอบนอกโดเมน
แต่ละสคริปต์ด้านบนจะใช้งานง่ายฟิชเชอร์และค่าเฉลี่ย regmean พวกเขายังเรียกใช้การเรียนรู้แบบหลายงาน (MTL), Model Ensemble และประสิทธิภาพของแต่ละรุ่น (ก่อนที่จะรวมกัน) เป็นตัวเปรียบเทียบ คุณสามารถแสดงความคิดเห็นบรรทัดภายในสคริปต์เหล่านี้เพื่อเรียกใช้ส่วนหนึ่งของแต่ละอัน
โครงการนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต Apache 2.0 ดูไฟล์ใบอนุญาตสำหรับรายละเอียด
โครงการนี้ได้ใช้จรรยาบรรณ หากคุณมีข้อกังวลใด ๆ เกี่ยวกับรหัสหรือพฤติกรรมที่คุณเคยมีประสบการณ์ในโครงการโปรดติดต่อเราที่ [email protected]
หากคุณเชื่อว่าคุณได้ระบุช่องโหว่ด้านความปลอดภัยในโครงการนี้โปรดส่งอีเมลไปที่ทีมงานโครงการที่ [email protected] ซึ่งรายละเอียดปัญหาที่น่าสงสัยและวิธีการใด ๆ ที่คุณพบเพื่อทำซ้ำ
โปรดอย่าเปิดปัญหาในพื้นที่เก็บข้อมูลของ GitHub เนื่องจากเราต้องการรายงานความอ่อนแอเป็นส่วนตัวจนกว่าเราจะมีโอกาสตรวจสอบและจัดการกับพวกเขา