يحتوي هذا المستودع على الرمز التجريبي لإعادة إنتاج النتائج في الانصهار المعرفة Dataless من خلال دمج أوزان نماذج اللغة ، وهي ورقة يتم نشرها خلال المؤتمر الدولي الحادي عشر لتمثيل التعلم (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/ .
يرجى تنزيل مجموعة بيانات العاطفة الموحدة في هذا الريبو. يجب وضع الملفات ضمن 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.
يرجى تنزيل النماذج المسبقة (على سبيل المثال ، Roberta-Base) من مستودع Models 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 سيؤدي دمج Pairwaint دمج Model0 و Model1 (انظر تعريف الاسم المستعار مثل Model0 ، Model1 في تكوين البيانات).
--templates : قد تحتوي ملفات التكوين على قوالب مثل {seed} . يجب تحديد قيم القوالب في خطوط الأوامر (على سبيل المثال ، --templates seed=1 ).
سيتم تدريب النماذج الفردية (قبل الاندماج) وتخزينها بموجب محدد local_zoo_dir في التكوين. إذا لم تتطابق أي من الطرز الفردية في حديقة الحيوان مع نوع الطراز المعطى ووسائط zoo_filter في التكوين ، فسيقوم البرنامج تلقائيًا بتدريب طرز فردية جديدة وتخزينها ضمن local_zoo_dir . إذا تم العثور على نماذج فردية في local_zoo_dir ، فسيتم تحميلها دون إعادة التدريب.
مثال: Regmean ، العاطفة ، نفس الرأس init ، Merginging 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 دمج جشع نماذج متعددة (اثنان إلى جميع) بترتيب أداء النماذج الفردية.
scripts/roberta/incremental_emotion.pyscripts/t5/incremental_emotion.pyscripts/deberta/incrementale_emotion.pyscripts/roberta/incremental_ner.pyscripts/deberta/incremental_ner.pyيرجى ملاحظة أن هذه البرامج النصية تقوم بتشغيل الاستدلال على كل من مجموعات الاختبار داخل المجال.
سيقوم كل برنامج نصي أعلاه بتشغيل متوسط فيشر وريميان. كما أنها تدير التعلم متعدد المهام (MTL) ، فرقة النموذج ، وأداء النماذج الفردية (قبل الاندماج) كمقارنات. يمكنك التعليق على الخطوط داخل هذه البرامج النصية لتشغيل جزء من كل واحدة فقط.
هذا المشروع مرخص بموجب ترخيص Apache 2.0. انظر ملف الترخيص للحصول على التفاصيل.
اعتمد هذا المشروع مدونة قواعد السلوك. إذا كان لديك أي مخاوف بشأن الكود ، أو السلوك الذي شهدته في المشروع ، فيرجى الاتصال بنا على [email protected].
إذا كنت تعتقد أنك حددت ثغرة أمنية في هذا المشروع ، فيرجى إرسال بريد إلكتروني إلى فريق المشروع على [email protected] بالتفصيل المشكلة المشتبه فيها وأي طرق وجدتها لإعادة إنتاجها.
يرجى عدم فتح مشكلة في مستودع GitHub ، لأننا نفضل الحفاظ على تقارير الضعف الخاصة إلى أن أتيحت لنا فرصة لمراجعة ومعالجتها.