Aktualizovat „pages/students/2016/patrik_pavlisin/dp21/README.md“

This commit is contained in:
Patrik Pavlišin 2021-05-11 16:16:47 +00:00
parent dde8bdf7cf
commit f6c6cbd4be

View File

@ -95,66 +95,73 @@ V preklade má často zmysel kopírovať zriedkavé názvy entít alebo čísla
## OpenNMT-py tutoriál
Pri práci na tomto tutoriály som použil školský server idoc, rovnako ako aj voľne dostupný Linuxový program Ubuntu.
Predtým než začneme so samotným tutoriálom je nutné si nainštalovať PyTorch (rámec pre preklad neurónových strojov s otvoreným zdrojom) verziu projektu OpenNMT rovnako ako inštaláciu najnovšej dostupnej verzie knižnice pip. To vykonáme zadaním nasledujúcich príkazov:
-pip install --upgrade pip
-pip install OpenNMT-py
- pip install --upgrade pip
- pip install OpenNMT-py
Prvým krokom v tutoriály je príprava dát, na to nám poslúži predpripravená vzorka dát v anglicko-nemeckom jazyku voľne dostupná na internete obsahujúca 10 000 tokenizovaných viet (Tokenizovanie je rozdelenie frázy, vety, odseku alebo celého textu na menšie jednotky teda tokeny na menšie jednotky, teda slová alebo výrazy). Údaje pozostávajú z paralelných zdrojových (src) a cieľových (tgt) údajov obsahujúcich jednu vetu na riadok s tokenmi oddelenými medzerou.
-wget https://s3.amazonaws.com/opennmt-trainingdata/toy-ende.tar.gz
-tar xf toy-ende.tar.gz
-cd toy-ende
- wget https://s3.amazonaws.com/opennmt-trainingdata/toy-ende.tar.gz
- tar xf toy-ende.tar.gz
- cd toy-ende
Pre pokračovanie si musíme pripraviť konfiguračný súbor YAML, aby sme určili údaje, ktoré sa použijú:
-# toy_en_de.yaml
-
-## Where the samples will be written
-save_data: toy-ende/run/example
-## Where the vocab(s) will be written
-src_vocab: toy-ende/run/example.vocab.src
-tgt_vocab: toy-ende/run/example.vocab.tgt
-# Prevent overwriting existing files in the folder
-overwrite: False
-
-# Corpus opts:
-data:
- -# toy_en_de.yaml
- -## Where the samples will be written
- save_data: toy-ende/run/example
- -## Where the vocab(s) will be written
- src_vocab: toy-ende/run/example.vocab.src
- tgt_vocab: toy-ende/run/example.vocab.tgt
- -# Prevent overwriting existing files in the folder
- overwrite: False
- -# Corpus opts:
- data:
- corpus_1:
- path_src: toy-ende/src-train.txt
- path_tgt: toy-ende/tgt-train.txt
- valid:
- path_src: toy-ende/src-val.txt
- path_tgt: toy-ende/tgt-val.txt
-...
...
Z tejto konfigurácie môžeme zostaviť slovnú zásobu, ktorá bude potrebná na trénovanie modelu:
-onmt_build_vocab -config toy-ende/toy_en_de.yaml -n_sample 10000
- onmt_build_vocab -config toy-ende/toy_en_de.yaml -n_sample 10000
Aby sme mohli model trénovať, musíme do konfiguračného súboru YAML pridať:
- cesty slovnej zásoby, ktoré sa budú používať (v tomto prípade cesty vygenerované programom onmt_build_vocab)
- tréning špecifických parametrov.
-- cesty slovnej zásoby, ktoré sa budú používať (v tomto prípade cesty vygenerované programom onmt_build_vocab)
-- tréning špecifických parametrov.
Pridáme do YAML konfiguračného súboru nasledujúce riadky:
-# Vocabulary files that were just created
-src_vocab: toy-ende/run/example.vocab.src
-tgt_vocab: toy-ende/run/example.vocab.tgt
-
-# Where to save the checkpoints
-save_model: toy-ende/run/model
-save_checkpoint_steps: 500
-train_steps: 1000
-valid_steps: 500
- -# Vocabulary files that were just created
- src_vocab: toy-ende/run/example.vocab.src
- tgt_vocab: toy-ende/run/example.vocab.tgt
- -# Where to save the checkpoints
- save_model: toy-ende/run/model
- save_checkpoint_steps: 500
- train_steps: 1000
- valid_steps: 500
Potom už len stačí spustiť proces trénovania:
-onmt_train -config toy-ende/toy_en_de.yaml
- onmt_train -config toy-ende/toy_en_de.yaml
V tejto konfigurácii bude bežať predvolený model, ktorý sa skladá z dvojvrstvového modulu LSTM s 500 skrytými jednotkami v kodéri aj v dekodéri.
Posledným krokom je samotný preklad, ktorý vykonáme zadaním nasledujúceho príkazu:
onmt_translate -model toy-ende/run/model_step_1000.pt -src toy-ende/src-test.txt -output toy-ende/pred_1000.txt -verbose
- onmt_translate -model toy-ende/run/model_step_1000.pt -src toy-ende/src-test.txt -output toy-ende/pred_1000.txt -verbose
Výsledkom je model, ktorý môžeme použiť na predpovedanie nových údajov. To prebieha spustením tzv. Beam search. Beam search sa využíva za účelom udržania ľahšieho ovládania vo veľkých systémoch s nedostatkom pamäte na uloženie celého vyhľadávacieho stromu. To vygeneruje predpovede do výstupného súboru toy-ende/pred_1000.txt . V mojom prípade proces prekladu trval na školskom serveri idoc približne 5 hodín zatiaľ čo v Linuxovom prostredí Ubuntu 1 hodinu. V obidvoch prípadoch boli výsledky dosť hrozné, pretože demo súbor údajov bol dosť malý.