2019-05-11 22:00:34 +00:00
2019-05-11 22:00:34 +00:00
2019-05-11 22:00:34 +00:00
2018-11-08 20:33:10 +01:00
2019-02-20 10:22:44 +01:00
2019-02-13 10:50:01 -03:00
2018-11-19 06:50:50 +00:00
2018-11-15 23:41:02 +01:00

ulmfit-multilingual

Repository used for collaboration on application of ulmfit for multiple languages, it helps with pertraining and uses the fastai v1 . (The version in n-waves/fastai:ulmfit_multilingual)

How to train classifier

$ LANG=en
$ python -m ulmfit lm --dataset-path data/wiki/${LANG}-100 --tokenizer='f' --nl 3 --name 'orig' --max-vocab 60000 \ 
        --lang ${LANG} --qrnn=False - train 10 --bs=50 --drop_mult=0  --label-smoothing-eps=0.0
...
Model name: data/wiki/en-100/models/f60k/lstm_orig.m
...

$ python -m ulmfit cls --dataset-path data/imdb --base-lm-path  data/wiki/${LANG}-100/models/f60k/lstm_orig.m  \
        --lang=${LANG} --name orig - train 20 --bs 18 --num-cls-epochs=4 --lr_sched=1cycle --label-smoothing-eps=0.1   

You can re-evaluate classifiers by running

python -m ulmfit eval --glob="imdb/models/*/lstm_*.m"

The same command can be used to quickly trian multiple classifiers, by adding the --name parameter:

python -m ulmfit eval --glob="imdb/models/*/lstm_nl3.m" --name "nl3-my-test1" --num-cls-epochs 4 --label-smoothing-eps=0.1 --lr_sched=1cycle

To create a tar with model simply run

python -m ulmfit tar data/imdb/models/f60k/lstm_nl3.m

data directory strucutre

Directory structure after changes to the way we process wiki dumps.

data
├── imdb
│   ├── aclImdb
│   ├── imdb_lm
│   └── tmp
├── wiki
│   ├── de-100
│   │   └── models
│   ├── de-100-unk
│   │   └── models
│   ├── de-2
│   │   └── models
│   ├── de-2-unk
│   │   └── models
│   ├── de-all
│   │   └── models
│   ├── wikitext-103
│   │   └── models
│   └── wikitext-2
│       └── models
├── wiki_dumps
├── wiki_extr
│   └── de
│       ├── AA
│       ├── AB
...
        └── CC
└── xnli
    ├── XNLI-1.0
    └── XNLI-MT-1.0
        ├── multinli
        └── xnli

how to contribute

We have a fork of fastai to propose changes to fastai.text, with a branch for this project: https://github.com/n-waves/fastai/tree/ulmfit_multilingual

Let us know that you want to start collaboration on fastai forum thread: Multilingual ULMFIT and you will get access to both repositories.

Here is what I did:

$ cd fastai
$ git remote add n-waves https://github.com/n-waves/fastai.git
$ git remote -v 
n-waves	https://github.com/n-waves/fastai.git (fetch)
n-waves	https://github.com/n-waves/fastai.git (push)
origin	https://github.com/fastai/fastai.git (fetch)
origin	https://github.com/fastai/fastai.git (push)

$ git fetch n-waves
$ git checkout ulmfit_multilingual
Branch 'ulmfit_multilingual' set up to track remote branch 'ulmfit_multilingual' from 'n-waves'.
Switched to a new branch 'ulmfit_multilingual'

$ git push --set-upstream n-waves ulmfit_multilingual  # to automatically push ulmfit_multilingual branch to the n-waves repo

Running tests

To run the tests, the following data is necessary:

  • wikitext-2 (prepared by ./prepare_wiki-en.sh, along with wikitext-103)
  • imdb (prepared by ./prepare_imdb.sh)

then simply run tests, e.g. pytest .

S
Description
The code to reproduce results from paper "MultiFiT: Efficient Multi-lingual Language Model Fine-tuning" https://arxiv.org/abs/1909.04761
Readme MIT
1.5 MiB
Languages
Jupyter Notebook 67.3%
Python 31.1%
Shell 1.6%