# Lukáš Pokrývka *Rok začiatku štúdia:* 2016 ## Diplomový projekt 1 2020 Ulohy na semester: - podrobne si naštudovať vybranú metódu trénovania neurónových sietí - identifikujte možný spôsob paralelizácie - natrénujte zvolený model metódou paralelizácie Revízia 13.5: Pozrite si odkazy na paralelné trénovanie: - Knižnica pre neuronové siete podobná TensorFlow https://pytorch.org - Trénovanie WordEmbedding v PyTorch https://pytorch.org/tutorials/beginner/nlp/word_embeddings_tutorial.html - Toolkit na medziprocesovú komunikáciu https://developer.nvidia.com/nccl Podporuje aj trénovanie na viacerých výpočtových uzloch naraz. PyTorch podporuje NCCL aj Goo toolit - Toolkit na medziprocesovú komunikáciu https://github.com/facebookincubator/gloo - Paralelné trénovanie pomocou Pytorch https://pytorch.org/docs/stable/distributed.html / Revízia 14.4. - Natrénovaný word embedding model na slovenských dátach. Revízia 9.4.: Nové úlohy: Natrénujte word embedding model na veľkých dátach (odkaz poskytnutý). Môžete použiť server idoc. Nové úlohy: - Pozrite si [metódy vyhodnotenia embedding modelov](https://duckduckgo.com/?t=ffab&q=word+embedding+evaluation&ia=web). Ako by ste postupovali pri vyhodnotení slovenského modelu? - Pozrite si https://spacy.io/usage/training - Pozrite si [repozitáre a výsledky týkajúce sa Spacy](/topics/spacy). - Vyhodnotte slovenský spacy model Stretnutie 9.3.2020 Úlohy na ďalšie stretnutie: - Skúste natrénovať slovenský word2vec model podľa tutoriálu: http://spark.apache.org/docs/latest/ml-features.html#word2vec (podľa dát z emailu) - Pozrite si niečo o metóde BERT - https://medium.com/huggingface/introducing-fastbert-a-simple-deep-learning-library-for-bert-models-89ff763ad384 - https://github.com/huggingface/transformers ## Tímový projekt 2019 *Úlohy tímového projektu:* - Vypracujte min. 4 stranový rešerš na tému: "Paralelné spracovanie prirodzeného jazyka" (využitie napr. s word2vec, word embeddings, GloVe, fastText). - Citujte min. 10 najvýznamnejších bibliografických zdrojov. *Písomná práca:* [Paralelné spracovanie prirodzeného jazyka](./timovy_projekt) ## Diplomová práca 2021 ### Paralelné trénovanie neurónových sietí *Meno vedúceho:* Ing. Daniel Hládek, PhD. *Návrh na zadanie DP:* 1. Vypracujte prehľad literatúry na tému "Paralelné trénovanie neurónových sietí". 2. Vyberte vhodnú metódu paralelného trénovania. 3. Pripravte dáta a vykonajte sadu experimentov pre overenie funkčnosti a výkonu paralelného trénovania. 4. Navrhnite možné zlepšenia paralelného trénovania neurónových sietí. - Zaujímavá príručka [Word2vec na Spark](http://spark.apache.org/docs/latest/ml-features.html#word2vec) ### Priebeh práce *1. Pokus o natrénovanie modelu pomocou knižnice Gensim* Ako prvý nástroj na zoznámenie sa s trénovaním W2V som zvolil Gensim. Nevýhodou knižnice je, že pri trénovaní nevyužíva GPU v žiadnom prípade. Podľa zdrojov na internete je však Gensim násobne rýchlejšia knižnica pri implementácii na menšie korpusy (https://rare-technologies.com/gensim-word2vec-on-cpu-faster-than-word2veckeras-on-gpu-incubator-student-blog/). Keďže môj korpus má približne 30GB, trénovanie pomocou Gensim by zrejme nebol najlepší nápad. Preto som si z korpusu vytiahol prvých 10,000 riadkov a otestoval implementáciu na tomto súbore. Celý skript je dostupný na [gensim_W2V.py](./dp2021/scripts/gensim_w2v.py). Výsledok nebol vôbec presný, čo sa vzhľadom na veľkosť korpusu dalo očakávať. Pri slove letisko bola však zhoda vysoká, čo potvrdzuje správnosť implementácie. ![Výsledok implementácie Gensim](./gensim.PNG) Keďže som mal problém skript s plným korpusom spustiť na školskom serveri, v ďalšom riešení chcem využiť aj GPU. V úvahu pripadá aj rozdelenie korpusu na viacero častí s tým, že sa zachová kontext. *2. Natrénovanie slovenského modelu pomocou knižnice fasttext* Ako druhú možnosť na natrénovanie slovenského modelu som využil fasttext, knižnicu od Facebook-u. Prostredie a všetky dependencies som si vytvoril pomocou Anacondy. Následne som si naklonoval projekt z gitu (https://github.com/facebookresearch/fastText.git). Fasstext poskytuje jednoduchý nástroj na vyčistenie dát, ktorý všetky slová pretransformuje na lowercase a oddelí ich od čiarok, bodiek, atď... Následne je potrebné správne nastaviť spúšťacie parametre a zvoliť si metódu CBOW alebo skip-gram. V mojom prípade som zvolil 2-gram, dimenzionalitu vektorov 200, a nastavil som počet epochov na 10, pomocou ktorých sa vhybovosť výrazne znížila. Taktiež je možné nastaviť, koľko jadier procesora sa má využívať pre multi-threading. Na dátach o veľkosti približne 13GB trvalo trénovanie takmer 24 hodín. Výstupom su 2 súbory *.bin a *.vec. Prvý súbor obsahuje celý natrénovaný model a môže byť ďalej používaný a načítavaný podľa potreby, druhý súbor obsahuje vektory slov, jeden riadok pre každé slovo.