Kode untuk mereproduksi makalah "Multifit: Fine-tuning model bahasa multi-bahasa yang efisien".
Berikut adalah posting blog dengan perkenalan ke makalah kami: http://nlp.fast.ai/classification/2019/09/10/multifit.html
Repositori ini berisi kerangka kerja kecil di atas Fastai v1.0; Kode ini kompatibel dengan v1.0.47 hingga v1.0.59 (saat ini pada 2019.11.03). Hasil antara versi Fastai mungkin berbeda karena optimisasi yang ditambahkan ke Fastai. Model kami dilatih menggunakan 1.0.47.
Kerangka kerja ini ditulis ulang untuk membuatnya lebih mudah digunakan dengan Fastai terbaru.
Kami merilis 7 model bahasa yang dilatih pada dump wikipedia yang sesuai:
Untuk mengambil model, cukup gunakan fungsi multifit.from_pretrained . Berikut adalah beberapa contoh notebook yang menunjukkan cara melatih classifier menggunakan model pretrained.
Hasil Klasifikasi Dokumen pada Dataset MLDOC Schwenk dan Li, 2018
| Model | de | es | fr | dia | 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 |
Hasil klasifikasi sentimen pada dataset CLS Prettenhofer dan 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 |
Anda dapat menggunakan model pretrained dengan Perpustakaan Fastai sebagai berikut:
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")
...
Repositori ini adalah penulisan ulang skrip pelatihan asli sehingga tidak memiliki semua skrip yang digunakan di koran. Kami sedang mengerjakan port ke fastai v2.0 dan kemudian kami akan menambahkan skrip yang menunjukkan cara mereproduksi hasilnya. Jika Anda perlu menggunakan skrip lebih cepat, Anda dapat mengakses skrip asli di sini.
@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}
}