zpwiki/pages/topics/bert/README.md

76 lines
3.5 KiB
Markdown
Raw Normal View History

2021-10-12 11:52:58 +00:00
---
title: Jazykový model slovenského jazyka
published: true
author: Daniel Hládek
---
! Cieľ:
!
2021-10-21 11:14:54 +00:00
! - Natrénovať a vyhodnotiť slovenský jazykový model typu BERT z korpusu webových textov
2021-10-12 11:52:58 +00:00
## 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
2021-10-12 11:55:31 +00:00
- bakalárska práca [Ondrej Megela](/students/2018/ondrej_megela)
2021-10-21 11:10:46 +00:00
- https://git.kemt.fei.tuke.sk/dano/bert-train
2021-10-12 11:52:58 +00:00
2021-10-20 06:45:31 +00:00
2021-10-12 11:52:58 +00:00
## Hotové úlohy
- Dotrénovaný model multilingual BERT base na SK QUAD, funguje demo skript. Nefunguje exaktné vyhodnotenie.
2021-10-21 11:16:18 +00:00
- Natrénovaný model Electra-small 128, 256 batch size, learning 2e-4, skweb2017dedup, Slovník 32K wordpiece, 0.83 POS, 0.51 Squad
2021-10-12 11:52:58 +00:00
## Rozpracované úlohy
- Natrénovať Electra Base.
- Vylepšiť parametre trénovania.
- Dokončiť SK SQUAD databázu pre exaktné vyhodnotenie.
- Dotrénovať model na SK QUAD a exaktne vyhodnotiť pomocou oficiálneho squad skriptu.
- Pripraviť aj iné množiny na vyhodnotnie:
- kategorizácia textu na SCNC1.
- POS na Slovak Treebank.
- pripraviť iné množiny.
## Poznámky
2021-10-13 05:53:05 +00:00
- 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í.
2021-10-12 11:52:58 +00:00
- Electra vie využiť iba jednu Titan kartu, druhú zbytočne blokuje.
- Trénovanie base electra trvá cca 40 dní na jednej karte.
2021-10-12 13:09:09 +00:00
- 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
2021-10-12 11:52:58 +00:00
- Dotrénovanie trvá iba niekoľko hodín.
2021-10-12 13:09:09 +00:00
- Electric small 128 nefunguje na Quadre kvôli pamäti,
2021-10-13 05:53:05 +00:00
- Electra small 512/32 batch funguje na Titane.
- Spotrebu pamäte ovplyvňujú veľkosť vstupného vektora, veľkosť trénovacej dávky.
2021-10-12 15:16:25 +00:00
- V SLovak Bert bola veľkosť vstupného vektora 512. Máme toľko pamäte?
2021-10-13 06:03:10 +00:00
- learning rate by malo byť priamo úmerné s batch_size. Malý batch size by mal mať malý learning rate.
2021-10-13 06:38:29 +00:00
- electra prepare skript defaultne odstraňuje diakritiku a dáva malé písmená.
2021-10-15 13:37:18 +00:00
- 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.
2021-10-15 13:40:54 +00:00
- TODO: Vytvorenie slovníka ako pri BERT https://github.com/google-research/electra/issues/58
2021-10-15 13:37:18 +00:00
2021-10-12 11:52:58 +00:00
## Budúci výskum
2021-10-12 15:16:25 +00:00
- Zistiť aký je optimálny počet tokenov? V Slovak BERT použili 50k.
2021-10-12 11:52:58 +00:00
- Zistiť aký je optimálný slovník?
- 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.
2021-10-13 05:53:05 +00:00
- Adaptovať SlovakBERT na SQUAD. To znamená dorobiť úlohu SQUAD do fairseq.
2021-10-21 11:10:46 +00:00
## 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