Этот репозиторий содержит экспериментальный код для воспроизведения результатов в слиянии знаний о данных путем слияния весов языковых моделей, статьи, которая будет опубликована во время Одиннадцатой Международной конференции по обучению (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. См. TEDS.TXT для других требований.
Если вы просто заинтересованы в алгоритме среднего (регмери) регрессии, пожалуйста, проверьте regmean_demo.ipynb.
Это отдельная ноутбук Jupyter, которая объединяет две модели Transformer Cransformer, настраиваемые на клей. Этот файл не импортирует файлы в src/ .
Пожалуйста, загрузите набор данных Unified Emotion в этом репо. Файлы должны быть размещены в рамках 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 за строку.
{"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"}
Наборы данных Glue будут загружены и загружены библиотекой datasets Hugging Face.
Пожалуйста, загрузите предварительно проведенные модели (например, Roberta-Base) из репозитория моделей обнимающего лица и поместите их в PROJECT_ROOT/resources (например, PROJECT_ROOT/resources/roberta-base ).
--config_files : см. В разделе src/configs . Обучающий модуль ( src.run_experiments ) требует трех файлов конфигурации, определяющих аргументы по умолчанию ( src/defaults.yaml ), конфигурация данных (в разделе src/configs/datasets ) и Exp Config (в рамках src/configs/exps ).
--filter_model : Полезно при объединении только подмножества отдельных моделей, специфичных в конфигурации данных, например, --filter_model model0 model1 будет выполнять пары слияния Model0 и Model1 (см. Определение псевдонима, например модели, модель1 в конфигурации данных).
--templates : файлы конфигурации могут содержать шаблоны, такие как {seed} . Значения шаблонов должны быть указаны в командных строках (например, --templates seed=1 ).
Отдельные модели (до слияния) будут обучены и хранятся в разделе local_zoo_dir , указанные в конфигурации. Если ни одна из отдельных моделей в зоопарке не совпадает с данным типом модели и аргументами zoo_filter в конфигурации, то программа автоматически будет обучать новые отдельные модели и хранить их в рамках local_zoo_dir . Если отдельные модели найдены в local_zoo_dir , они будут загружены без повторного обучения.
Пример: Regmean, Emotion, та же голова init, объединение модели (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Обратите внимание, что эти сценарии запускают вывод как на доменных, так и на выездных тестовых наборах.
Каждый сценарий выше будет работать простым, Фишер и Регмианскую усреднение. Они также запускают многозадачное обучение (MTL), модель-ансамбль и производительность отдельных моделей (до слияния) в качестве компараторов. Вы можете прокомментировать строки внутри этих сценариев, чтобы просто запустить часть каждого из них.
Этот проект лицензирован по лицензии Apache 2.0. Смотрите файл лицензии для получения подробной информации.
Этот проект принял кодекс поведения. Если у вас есть какие -либо опасения по поводу кода или поведения, которое вы испытали в проекте, пожалуйста, свяжитесь с нами по адресу [email protected].
Если вы считаете, что вы определили уязвимость безопасности в этом проекте, отправьте электронное письмо в команду проекта по адресу [email protected], в которой подробно описывается предполагаемая проблема и любые методы, которые вы нашли, чтобы воспроизводить его.
Пожалуйста, не открывайте проблему в репозитории GitHub, так как мы бы предпочли сохранять уязвимые отчеты о уязвимости, пока у нас не будет возможности просмотреть и обратиться к ним.