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

8.7 KiB

title published taxonomy
Lukáš Pokrývka true
category tag author
dp2021
bp2019
gpu
cloud
Daniel Hladek

Lukáš Pokrývka

Rok začiatku štúdia: 2016

Diplomový projekt 2 2020

Ciele na semester:

  • Pripraviť tabuľku s výsledkami experimentov v rôznych konfiguráciách
  • Napísať stručný report (cca 8 strán) vo forme článku.

Zásobník úloh:

  • Ten istý scenár spustiť v rôznych podmienkach a zmerať čas.
    • Trénovanie na jednej karte na jednom stroji
      • tesla
      • xavier
    • Trénovanie na dvoch kartách na jednom stroji
      • idoc DONE
      • titan
    • možno trénovanie na 4 kartách na jednom
      • quadra
    • Trénovanie na dvoch kartách na dvoch strojoch pomocou NCCL (idoc, tesla)
    • možno trénovanie na 2 kartách na dvoch strojoch (quadra plus idoc).

Virtuálne stretnutie 13.11.2020

Stav:

  • Preštudovaná kniha "Deep Learning with PyTorch" o multi GPU tréningu.
  • vyskúšaný LUNA dataset, CT torza pre detekciu rakoviny pľúc - 60GB dát. Dáta sa predpripravia a uložia do cache. 10 epoch trvá 1 hod na bežnom počítači. Nastal problém s "Compute Capability" - kompatibilita verzie CUDA, Pytorch a GPU Tesla V40.
  • vyskúšaný wrapper data_paralel, distribute_data_parallel (trénovanie pytorch v klastri).
  • Pytorch Lightning - cluster trénovanie Pytorch cez Slurm.

Virtuálne stretnutie 27.10.2020

Stav:

  • Trénovanie na procesore, na 1 GPU, na 2 GPU na idoc
  • Príprava podkladov na trénovanie na dvoch strojoch pomocou Pytorch.
  • Vytvorený prístup na teslu a xavier.

Úlohy na ďďalšie stretnutie:

  • Štdúdium odbornej literatúry a vypracovanie poznámok.
  • Pokračovať v otvorených úlohách zo zásobníka
  • Vypracované skripty uložiť na GIT repozitár
  • vytvorte repozitár dp2021

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átová sada yelp.
  • preštudovaná kniha NLP with Pytorch, NLP in Action.
  • trénovanie na NVIDIA RTX2070 Super.

Úlohy do ďalšieho stretnutia:

  • Prejsť odborné publikácie na tému "benchmarking" a "parallel training of neural networks".
    • Zapísať si relevantné bibliografické odkazy.
    • Zapísať poznámky
    • Použiť index scopus alebo scholar
  • Trénovanie na jednej karte na jednom stroji - tesla.fei.tuke.sk
  • Trénovanie na dvoch kartách na jednom stroji - zistite čas trénovania a spotrebu pamäte. - idoc

Diplomový projekt 1 2020

Paralelné trénovanie neurónových sietí pomocou knižnice Pytorch. Ú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.