Repositori ini berisi kode eksperimental untuk mereproduksi hasil dalam fusi pengetahuan dataless dengan menggabungkan bobot model bahasa, sebuah makalah yang akan diterbitkan selama Konferensi Internasional Kesebelas tentang Representasi Pembelajaran (ICLR 2023), yang akan diadakan 1-5 Mei 2023 di Kigali, Rwanda.
@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}
}
Kami menggunakan Pytorch 1.13.1. Lihat persyaratan.txt untuk persyaratan lain.
Jika Anda hanya tertarik dengan algoritma regression rata -rata (Regmean), silakan periksa Regmean_Demo.ipynb.
Ini adalah buku catatan Jupyter mandiri yang menggabungkan dua model transformator wajah memeluk yang disesuaikan dengan lem. File ini tidak mengimpor file di bawah src/ .
Silakan unduh dataset emosi terpadu dalam repo ini. File harus ditempatkan di bawah PROJECT_ROOT/resources/emotion_splits dalam struktur berikut.
.
├── 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
...
Harap persiapkan dataset Conll2003, Ontonotes, dan Twitter dan letakkan di bawah 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
Di sini, dataset Conll dan Ontonotes berisi entri dalam format 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 berisi 1 dikt json per baris.
{"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"}
Dataset lem akan diunduh dan dimuat dengan perpustakaan datasets Face memeluk.
Silakan unduh model pretrained (misalnya, Roberta-base) dari Repositori Model Face Memeluk dan menempatkannya di bawah PROJECT_ROOT/resources (misalnya, PROJECT_ROOT/resources/roberta-base ).
--config_files : Lihat di bawah src/configs . Modul pelatihan ( src.run_experiments ) memerlukan tiga file konfigurasi yang mendefinisikan argumen default ( src/defaults.yaml ), konfigurasi data (di bawah src/configs/datasets ), dan config exp (di bawah src/configs/exps ).
--filter_model : Berguna saat menggabungkan hanya sebagian dari model individual yang ditentukan dalam konfigurasi data, misalnya- --filter_model model0 model1 akan melakukan penggabungan pasangan model0 dan model1 (lihat definisi alias seperti model0, model1 dalam konfigurasi data).
--templates : File konfigurasi mungkin berisi templat seperti {seed} . Nilai -nilai templat harus ditentukan dalam baris perintah (misalnya, --templates seed=1 ).
Model individual (sebelum penggabungan) akan dilatih dan disimpan di bawah local_zoo_dir yang ditentukan dalam konfigurasi. Jika tidak ada model individu di kebun binatang yang cocok dengan jenis model yang diberikan dan argumen zoo_filter di konfigurasi, maka program akan secara otomatis melatih model individu baru dan menyimpannya di bawah local_zoo_dir . Jika setiap model ditemukan di local_zoo_dir , mereka akan dimuat tanpa pelatihan ulang.
Contoh: Regmean, emosi, init kepala yang sama, menggabungkan model0 (DailyDialogue) dan 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
Menggabungkan dua model klasifikasi emosi yang dilatih pada dataset yang berbeda (domain).
scripts/roberta/pairwise_emotion.pyscripts/t5/pairwise_emotion.pyscripts/t5/pairwise_emotion.pyMenggabungkan dua model yang dilatih pada tugas lem yang berbeda. Kepala klasifikasi khusus tugas tidak digabungkan.
scripts/distilbert/pairwise_glue_difftask.pyscripts/roberta/pairwise_glue_difftask.pyMenggabungkan dua model yang dilatih pada dua partisi non-IID dari tugas lem yang sama
scripts/distilbert/pairwise_glue_subset.pyscripts/roberta/pairwise_glue_subset.py Dengan rakus menggabungkan beberapa (dua untuk semua) model dalam urutan kinerja ood dari model individu.
scripts/roberta/incremental_emotion.pyscripts/t5/incremental_emotion.pyscripts/deberta/incrementale_emotion.pyscripts/roberta/incremental_ner.pyscripts/deberta/incremental_ner.pyHarap dicatat skrip ini menjalankan inferensi pada set tes in-domain dan out-of-domain.
Setiap skrip di atas akan berjalan rata -rata sederhana, Fisher, dan Regmean. Mereka juga menjalankan Multi-Task Learning (MTL), Model Ensemble, dan kinerja model individu (sebelum penggabungan) sebagai pembanding. Anda dapat mengomentari baris di dalam skrip ini untuk hanya menjalankan sebagian dari masing -masing.
Proyek ini dilisensikan di bawah lisensi Apache 2.0. Lihat file lisensi untuk detailnya.
Proyek ini telah mengadopsi kode etik. Jika Anda memiliki kekhawatiran tentang kode, atau perilaku yang telah Anda alami dalam proyek, silakan hubungi kami di [email protected].
Jika Anda yakin telah mengidentifikasi kerentanan keamanan dalam proyek ini, silakan kirim email ke tim proyek di [email protected] yang merinci masalah yang dicurigai dan metode apa pun yang Anda temukan untuk mereproduksinya.
Tolong jangan buka masalah di repositori GitHub, karena kami lebih suka menjaga laporan kerentanan tetap pribadi sampai kami memiliki kesempatan untuk meninjau dan mengatasinya.