--- 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