| .. | ||
| dp2021 | ||
| timovy_projekt | ||
| gensim.PNG | ||
| README.md | ||
Lukáš Pokrývka
Rok začiatku štúdia: 2016
Diplomový projekt 2 2020
Stretnutie 2.10.2020
Urobené https://github.com/LukasPokryvka/YELP-on-GPU
- demonštračná úloha pre automatické hodnotenie reštaurácií na základe recenzie v anglickom jazyku, dátavá sada yelp.
 - preštudovaná kniha NLP with Pytorch.
 
Diplomový projekt 1 2020
Paralelné trénovanie neurónových sietí pomocou knižnice Pytorch.
Zásobník úloh na ďalší semester:
- 
Vybrať a prejsť scenár trénovania neurónových sietí pomocou nástroja Fairseq, napr. (https://github.com/pytorch/fairseq/blob/master/examples/roberta/README.pretraining.md)
 - 
Prejsť odborné publikácie na tému "benchmarking" a "parallel training of neural networks".
 - 
Ten istý scenár spustiť v rôznych podmienkach a zmerať čas.
 - 
Trénovanie na jednej karte na jednom stroji (máme rôzne - idoc, nový xavier)
 - 
Trénovanie na dvoch kartách na jednom stroji (idoc, nový server)
 - 
Trénovanie na dvoch kartách na dvoch strojoch pomocou NCCL (idoc, tesla)
 - 
možno trénovanie na 4 kartách na jednom stroji (quadra).
 - 
možno trénovanie na 2 kartách na dvoch strojoch (quadra plus idoc).
 
Úlohy 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 11.6:
- Prebieha nákup https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/jetson-agx-xavier/
 - zatiaľ NCCL nefunguje na Jetson Nano, funguje na Jetson Xavier?
 - Spustenie paralelného trénovania PyTorch https://pytorch.org/docs/stable/distributed.html#launch-utility
 - Spustenie paralelného trénovania Fairseq https://fairseq.readthedocs.io/en/latest/getting_started.html#distributed-training
 
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 /
 
Virtuálne stretnutie 14.4:
Nové úlohy:
- rozbehať knižnicu NCCL na servri idoc
 - Preskúmať možnosti zakúpenia NVIDIA Jetson / pre vedúceho
 - nájsť vhodnú neurónovú sieť ktorá bude vedieť využívať NCCL, optimálne založenú na PyTorchm napr. Fairseq
 
Revízia 14.4.
- Natrénovaný FastText a GenSim 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. 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.
 - 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
 
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
Diplomová práca 2021
Paralelné trénovanie neurónových sietí
Meno vedúceho: Ing. Daniel Hládek, PhD.
Návrh na zadanie DP:
- Vypracujte prehľad literatúry na tému "Paralelné trénovanie neurónových sietí".
 - Vyberte vhodnú metódu paralelného trénovania.
 - Pripravte dáta a vykonajte sadu experimentov pre overenie funkčnosti a výkonu paralelného trénovania.
 - Navrhnite možné zlepšenia paralelného trénovania neurónových sietí.
 
- Zaujímavá príručka Word2vec na Spark
 
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. 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.
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.