Code zur Reproduktion des Papiers "Multifit: effizientes mehrsprachiges Sprachmodell Feinabstimmung".
Hier ist ein Blog -Beitrag mit einer Einführung in unser Papier: http://nlp.fast.ai/classification/2019/09/10/multifit.html
Dieses Repository enthält ein kleines Framework auf Fastai v1.0; Der Code ist mit V1.0.47 bis V1.0.59 (dem Strom ab 2019.11.03) kompatibel. Die Ergebnisse zwischen Fastai -Versionen können sich aufgrund von Optimierungen, die zu Fastai hinzugefügt wurden, abweichen. Unsere Modelle wurden mit 1.0.47 trainiert.
Das Framework wurde umgeschrieben, um die Verwendung mit dem neuesten Fastai einfacher zu machen.
Wir haben 7 Sprachmodelle veröffentlicht, die auf entsprechenden Wikipedia -Dumps trainiert wurden:
Um das Modell abzurufen, verwenden Sie einfach multifit.from_pretrained Funktion. Hier sind ein Beispiel Notizbuch, das zeigt, wie ein Klassifikator mithilfe eines vorbereiteten Modelle trainiert wird.
Ergebnisse der Dokumente Klassifizierung zu MLDOC -Datensatz Schwenk und Li, 2018
| Modell | de | es | fr | Es | Ja | Ru | Zh |
|---|---|---|---|---|---|---|---|
| LASER | 92.70 | 88.75 | 90.80 | 85,93 | 85.15 | 84,65 | 88,98 |
| Multibert | 94.0 | 95.15 | 93.20 | 85,82 | 87,48 | 86,85 | 90.72 |
| Multifit | 95,90 | 96.07 | 94.77 | 90.25 | 90.03 | 87,65 | 92.52 |
Sentiment -Klassifizierungsergebnisse zu CLS Dataset Prettenhofer und Stein, 2010
| De | Fr | Ja | |
|---|---|---|---|
| Multibert | 86.05 / 84.90 / 82.00 | 86.15 / 86.90 / 86.65 | 80.87 / 82.83 / 79,95 |
| Multifit | 93.19 / 90.54 / 93.00 | 91.25 / 89.55 / 93.40 | 86.29 / 85.75 / 86.59 |
Sie können die vorgezogenen Modelle mit der Fastai -Bibliothek wie folgt verwenden:
from fastai.text import *
import multifit
exp = multifit.from_pretrained("name of the model")
fa_config = exp.pretrain_lm.tokenizer.get_fastai_config(add_open_file_processor=True)
data_lm = (TextList.from_folder(imdb_path, **fa_config)
.filter_by_folder(include=['train', 'test', 'unsup'])
.split_by_rand_pct(0.1)
.label_for_lm()
.databunch(bs=bs))
learn = exp.finetune_lm.get_learner(data_lm)
# learn is a preconfigured fastai learner with a pretrained model loaded
learn.fit_one_cycle(10)
learn.save_encoder("enc")
...
Dieses Repository ist ein Umschreiben der ursprünglichen Trainingsskripte, sodass alle im Papier verwendeten Skripte fehlen. Wir arbeiten an einem Port zu Fastai v2.0 und werden dann die Skripte hinzufügen, die zeigen, wie die Ergebnisse reproduziert werden. Falls Sie die Skripte schneller verwenden müssen, können Sie hier auf die ursprünglichen Skripte zugreifen.
@article{Eisenschlos2019MultiFit,
title={MultiFiT: Efficient Multi-lingual Language Model Fine-tuning},
author={Julian Eisenschlos, Sebastian Ruder, Piotr Czapla, Marcin Kardas, Sylvain Gugger, Jeremy Howard}
journal={Proceedings of EMNLP-IJCNLP 2019},
year={2019}
}