forked from KEMT/zpwiki
		
	
		
			
				
	
	
		
			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
 |