121 lines
5.0 KiB
Markdown
121 lines
5.0 KiB
Markdown
---
|
|
title: Jazykový model slovenského jazyka
|
|
published: true
|
|
author: Daniel Hládek
|
|
---
|
|
|
|
! Cieľ:
|
|
!
|
|
! - Natrénovať a vyhodnotiť slovenský jazykový model typu BERT z korpusu webových textov
|
|
|
|
## Súvisiace projekty
|
|
|
|
- [SlovakBERT](https://github.com/gerulata/slovakbert) od Kinit, a [článok](https://arxiv.org/abs/2109.15254)
|
|
- [SK Quad](/topics/question) - Slovak Question Answering Dataset
|
|
- bakalárska práca [Ondrej Megela](/students/2018/ondrej_megela)
|
|
- diplomová práza Jozef Olekšák (in progress, trénovanie electra na colab).
|
|
- https://git.kemt.fei.tuke.sk/dano/bert-train
|
|
|
|
## Rozpracované úlohy
|
|
|
|
- Trénovanie na TPU Google Colab Electra Base. (Olekšák)
|
|
- trénovanie XLNet Base
|
|
- Tokenizer SentencePiece pre XLNet
|
|
- Trénovanie Roberta Base (zatiaľ najlepšie 0.65)
|
|
|
|
|
|
## Hotové úlohy
|
|
|
|
## Trénovací korpus
|
|
|
|
Deduplikované a tokenizované webové dáta pomocou nášho tokenizátora a deduplikátora.
|
|
|
|
- Wikipédia
|
|
- Oscar Dedup
|
|
- Sita
|
|
- Websucker 2010,2012,2017
|
|
- Websucker 2022 in progress
|
|
|
|
Spolu 25 GB po deduplikovaní.
|
|
|
|
### Electra Model
|
|
|
|
- Vyhodnotenie Electra na SK SQUAD, UDP POS tagging
|
|
- Trénovacie skripty Electra
|
|
- Konvertovanie Electra do Transformers pomocou ransformers/src/transformers/models/electra/convert_electra_original_tf_checkpoint_to_pytorch.py
|
|
- Natrénovaný model Electra-small 128, 256 batch size, learning 2e-4, skweb2017dedup, Slovník 32K wordpiece, 0.83 POS, 0.51 Squad
|
|
|
|
### Hugging Face Models Finetuning
|
|
|
|
- Dotrénovaný model multilingual BERT base na SK QUAD, funguje demo skript. (0.72)
|
|
- Dotrénovany Slovak Bert na SK QUAD (0.75)
|
|
- Dotrénovaný model multilingual BERT na SQUAD anglickej, overné na slovenskej SK QUAD
|
|
- SK Quad Datasets Interface
|
|
|
|
### Hugging Face Roberta
|
|
|
|
- Natrénovaný HF Roberta Small
|
|
- Deduplikovaný webový korpus oscar plus skweb2017
|
|
- tokenizer BPE Roberta
|
|
- natrénovaný roberta base na 17GB korpuse, 0.65 na Squad
|
|
- trénovanie pomocou deepspeed (zrýchľuje cca 2x).
|
|
- pri efektívnej veľkosti dávky 1000 je asi najrýchlejčia konvrergencia pri lr 1e-4. , adam (0.9-0.999).
|
|
- Tokenizátor BPE treba trénovať na celkom korpuse.
|
|
|
|
## Budúce úlohy
|
|
|
|
- Pripraviť aj iné množiny na vyhodnotnie: kategorizácia textu na SCNC1.
|
|
- trénovanie na HPC
|
|
- trénovanie Large modelu
|
|
- trénovanie BART
|
|
|
|
## Poznámky Roberta
|
|
|
|
- Trénovanie roberta base s deepspeed 5 epoch, 25G korpus trvá 400 hod. BEz deepsdpeed 900 hod. na dvoch kartách.
|
|
- Veľkosť dávky roberta base na jedno zariadenie Titan24GB je 64 pre deepspeed.
|
|
- Dáta z prokuratúry asi zhoršujú model kvôli anonymizácii, skratkám a právnickému jazyku.
|
|
- Konfigurácia deepspeed po čase nastavila lr na nula a trénovanie sa zastavilo.
|
|
|
|
## Poznámky Electra
|
|
|
|
- Electra vie využiť iba jednu Titan kartu, druhú zbytočne blokuje.
|
|
- Trénovanie base electra trvá cca 40 dní na jednej karte.
|
|
- Trénovanie electra small trvá asi 3 dni na jednej karte Titan RTX, ale model už ďalej nekonverguje po jednom dni.
|
|
- Trénovanie electra small trvá asi 7 dní na jednej karte GTX1080
|
|
- Dotrénovanie trvá iba niekoľko hodín.
|
|
- Electric small 128 nefunguje na Quadre kvôli pamäti,
|
|
- Electra small 512/32 batch funguje na Titane.
|
|
- ELECTRA ingoruje pokyn na ponechanie diakritiky!!!! Ponechanie diakritiky funguje iba pre "prepare", inak sa diakritika stále odstraňuje. Ne ponechanie diakritiky sú potrebné úpravy v zdrojových kódoch.
|
|
- TODO: Vytvorenie slovníka ako pri BERT https://github.com/google-research/electra/issues/58
|
|
- electra prepare skript defaultne odstraňuje diakritiku a dáva malé písmená.
|
|
|
|
|
|
## Poznámky ku hyperparametrom
|
|
|
|
- V SLovak Bert bola veľkosť vstupného vektora 512. Máme toľko pamäte?
|
|
- Spotrebu pamäte ovplyvňujú veľkosť vstupného vektora, veľkosť trénovacej dávky.
|
|
- Nie každý model je vhodný na QA. Je potrebné aby mal veľký rozmer vstupného vektora aby aj dlhší odsek mohol byť na vstupe. Z toho dôvodu 128 "small model" asi nestačí na QA.
|
|
- Väčší vstupný rozmer je obmedzený veľkosťou RAM pri trénovaní.
|
|
- learning rate by malo byť priamo úmerné s batch_size. Malý batch size by mal mať malý learning rate.
|
|
|
|
## Budúci výskum
|
|
|
|
- Zistiť aký je optimálny počet tokenov? V Slovak BERT použili 50k.
|
|
- Pripraviť webové demo na slovenské QA.
|
|
- Integrovať QA s dialógovým systémom.
|
|
- Integrovať QA s vyhľadávačom.
|
|
- Zostaviť multilinguálny BERT model.
|
|
- Natrénovať BART model.
|
|
- Natrénovať model založený na znakoch.
|
|
|
|
## Hardvérové požiadavky
|
|
|
|
[https://medium.com/nvidia-ai/how-to-scale-the-bert-training-with-nvidia-gpus-c1575e8eaf71](zz):
|
|
|
|
When the mini-batch size n is multiplied by k, we should multiply the starting learning rate η by the square root of k as some theories may suggest. However, with experiments from multiple researchers, linear scaling shows better results, i.e. multiply the starting learning rate by k instead.
|
|
|
|
| BERT Large | 330M |
|
|
| BERT Base | 110M |
|
|
|
|
Väčšia veľkosť vstupného vektora => menšia veľkosť dávky => menší parameter učenia => pomalšie učenie
|