zpwiki/pages/students/2016/lukas_pokryvka/README.md

7.1 KiB

Lukáš Pokrývka

Rok začiatku štúdia: 2016

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:

Revízia 13.5:

Pozrite si odkazy na paralelné trénovanie:

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:

Stretnutie 9.3.2020

Úlohy na ďalšie stretnutie:

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:

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

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.

Výsledok implementácie Gensim

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.