Version 7 (modified by 5 years ago) (diff) | ,
---|
Jak využít stroje Metacentra pro počítání neuronových sítí s GPU
Prihláška
Stránka na prihlásenie: https://metavo.metacentrum.cz/cs/application/index.html
Pre vyplnenie prihlášky stačí odkliknúť Formulář pro přihlášku v lište naľavo. Súčasťou prihlášky je aj preukázanie príslušnosti ku akademickej inštitúcii nachádzajúcej sa v ČR. Príslušnosť k MU sa dá preukázať prihlásením sa pomocu svojho UČO a sekundárneho hesla po kliknutí na logo univerzity. Pri vyplňovaní prihlášky dostanete možnosť vyplniť aj príslušnosť ku niektorému labu: CZPJ sa tiež nachádza medzi možnostami.
Po odovzdaní formulára bude potrebné počkať na jeho schválenie (zvyčajne to trvá len pár hodín).
Na stránke sa okrem možnosti vyplnenia formulára nachádzaju aj podmienky používania.
Dôležité: V prípade, že výsledky vaších výpočtov uvediete v publikácii, je v nej potrebné uviesť aj formálne poďakovanie Metacentru viz. pravidla
Prihlásenie na výpočtový uzol
Login: "ssh <META_USERNAME>@<FRONTEND>"
Zoznam všetkých výpočtový uzlov a ich stav nájdete na: https://metavo.metacentrum.cz/pbsmon2/nodes/pbs
Je v podstate jedno na aký frontend sa prihlásite, kedže pri žiadaní o zdroje vám bude pridelený uzol ktorý vyhovuje požiadavkom (čo nemusí byť nutne ten na ktorom ste prihlásený). Ďalším rozdielom je lokácia domovského adresára v /storage, viz Úložné priestory.
Viac info na: https://wiki.metacentrum.cz/wiki/How_to_compute/Accessing_machines
Úložiská
Metacentrum ponuka 3 typy úložných priestorov pre vaše data.
Scratch storage
Rýchle a malé lokálne úložisko (zvyčajne SSD disky mountnuté do /scratch), ktoré slúžia výhradne pre dočasné súbory počas počítania. Užívateľ si od metacentra "vypýta" veľkosť scratchového úložiska ktoré dostane k danej úlohe. To sa uloží do premennej prostredia $SCRATCHDIR, ktorá zvyčajne referencuje na cestu /scratch-*/<LOGIN>/<JOB_ID>
Keď sa na vašom scratchovom úložisku nachádzajú dôležité dáta z výstupov, tak ich je potom vhodné premiestnit na diskové polia - vyžiadaný scratch sa do 14tich dní sám zmaže. Best practice je toto uložisko sám uvolniť po skončení výpočtov.
Viac info: https://wiki.metacentrum.cz/wiki/Scratch_storage
Diskové polia
Mountnuté do /storage, tieto polia predstavujú vaše primárne úložisko pre data na ktorých práve nepočítate (nachádza sa tam aj váš domovský adresár). Je limitovaný diskovou kvótou (zhruba 200GB, líši sa podľa poľa). V prípade, že vaše data sú dostatočne malé (do 5 GB poďla wiki), môžete vykonávať výpočty bez scratchu priamo na diskovom poli. V opačnom prípade odporúčam použiť scratch.
Osobný pohľad do vášho zaplnenia diskových kvót a zoznamu diskových polí môžete nájsť tu: https://metavo.metacentrum.cz/osobniv3/quotas/user
Viac info: https://wiki.metacentrum.cz/wiki/Types_of_data_storages#Data_storages_description.23Disk_arrays
Hierarchické disky
Poskytuje obrovskú kapacitu zložené buď z MAID alebo magnetických pások, ale je vhodné len na data ktoré dlhšiu dobu nebudete používať ale jedného dňa sa k nim vrátite.
Príprava na výpočty
Všetky moduly sa dajú pridávať pomocou príkazu module(1)
podobne ako na stroji Aisa.
Python
Kedže je u nas Python dost dominantný jazyk, tak som sa mu rozhodol venovať jednu sekciu. Samotný python si viete pridať pomocou module add python-3.6.2-gcc
, pokial nechcete staršiu alebo Intel verziu:
python-3.6.2 (modul python-3.6.2-gcc) python-3.5.0 (modul python-3.5.0-gcc) python-3.4.1 (modul python-3.4.1-gcc a python-3.4.1-intel) python-2.7.10 (modul python-2.7.10-gcc python-2.7.10-intel) python-2.7.6 (modul python-2.7.6-gcc a python-2.7.6-intel) python-2.7.5 (modul python-2.7.5) python-2.6.2 (modul python-2.6.2) python-2.5 (module python-2.5)
Keď chcete pridať pythonovské knižnice, skúste sa pozrieť či ich nenájdete medzi modulmi. Známé výpočtové frameworky ako Keras a Tensorflow sa medzi nimi dajú nájsť (ako napr tensorflow-1.13.1-gpu-python3
).
V prípade že sa knižnica nedá najsť v moduloch, bude potrebné použiť v lepšom prípade PyPI, v horšom Condu, každopádne detailný postup ako tieto moduly (a to nielen pre Python) nainštalovať nájdete tu: https://wiki.metacentrum.cz/wiki/How_to_install_an_application#easy_way_-_using_PyPI_tool
CUDA
Kedže chcete počítať na GPU, bude vhodné pridať aj modul s vhodnými ovladačmi pre danú grafickú kartu, voľne dostupné sú tieto verzie:
cuda -> cuda-7.5 cuda-3.2-kky cuda-4.0 cuda-4.2 cuda-5.0 cuda-5.5 cuda-6.0 cuda-6.5 cuda-7.0 cuda-7.5 cuda-8.0 cuda-9.0 cuda-10.0 cuda-10.1
Systém plánovania
Metacentrum používa systém plánovania jobov PBS Professional. Tento systém ponúka 2 typy jobov:
- Interaktívny job
- Batch job
Interaktívny job
Popis
Interaktívny job je job v ktorom uživateľ ručne narába s poskytnutými zdrojmi prostredníctvom shellu
Výhody:
- GUI
- lepší prehľad o tom čo človek robí
- dobrý error management
Nevýhody:
- horšie využitie poskytnutého výpočtového času (čakanie na ľudský vstup)
- nevhodné pre dlho bežiace procesy (náhodou zabijete terminál a váš výpočtový čas je fuč)
- nutnosť spoľahlivého pripojenia
- nutnosť 'babysittovať' celý výpočet
Keď to tak zhrniem, interaktívne joby sú vhodné na experimentovanie či všetko funguje ako má, lebo keď také zlyhanie nastane pri batch scripte tak stratíte všetok výpočtový čas a ten sa prenesie na ďalšieho užívatela vo fronte.
Syntax
Príklad:
qsub -I -l select=1:ncpus=2:mem=4gb:scratch_local=10gb -l walltime=1:00:00 -q gpu
qsub
: príkaz ktorý vykoná job submission a zaradí vas do fronty, keď si frontu vyčakáte dostanete shell prideleného uzlu
Prepínač -I
: interaktívny job
Parameter -l
: príznak toho že další parameter bude modifikovať požiadavky na zdroje
Parameter select=
: počet uzlov alebo chunkov
, ktoré vám poskytnú
- default=1
Parameter ncpus=
: počet CPU na jeden chunk
Parameter ngpus=
: počet GPU na chunk
Parameter walltime=
: maximálny čas pre job, keď ho prekročíte, bude vám job automaticky odobratý
- default=24 hodín
Parameter mem=
: veľkosť RAMky
Parameter scratch_local=
: veľkosť lokálneho scratchového úložiska
Všetky validne možnosti nájdete tu: https://wiki.metacentrum.cz/wiki/How_to_compute/Requesting_resources
Dávkové úlohy
Popis
Batch script je v podstate obyčajný bash script s pridanou hlavičkou pre PBS. Keď príde rada na užívateľa, vykonajú sa v ňom všetky príkazy a potom job skončí (alebo aj po timeoute)
Výhody:
- job bude vykonávaný na pozadí
- opustenie terminálu neukončí job
- možnosť automatizácie
Nevýhody:
- náchylné ku ľudským chybám (chybný script znamená že stratíte všetok výpočtový čas, musíte všetko opraviť, a potom sa znovu zaradiť do fronty)
Príklad
Otvorte textový súbor vo svojom obľúbenom textovom editore (či už nano, pico, vim, či bože chráň emacs):
#!/bin/bash #PBS -N myFirstJob #PBS -l select=1:ncpus=4:mem=4gb:scratch_local=10gb #PBS -l walltime=1:00:00 #Vyse uvedene radky jsou urcene pro planovaci system: uloha pobezi maximalne hodinu, bude pozadovat jeden stroj se 4 procesory, 4 GiB RAM pameti a 10gb scratch adresare trap 'clean_scratch' TERM EXIT # nastaveni uklidu SCRATCHE v pripade chyby cd $SCRATCHDIR || exit 1 # vstoupi do scratch adresare module add g03 # nahraje modul aplikace cp /software/testData/gaussian_test.com $SCRATCHDIR # ziska vstupni data g03 <gaussian_test.com >results.out # spusti aplikaci Gaussin a ulozi vysledky do souboru results.out cp results.out /storage/CITY/home/$USER || export CLEAN_SCRATCH=false # presune vysledky do domovskeho adresare nebo je ponecha ve scratchi v pripade chyby
Tento jednoduchý script okrem počítania obsluhuje aj presun dát to scratchového úložiska, + obsluha chybových stavov.
Dôležité: Kedže script dostane nový shell, tak bude potrebné všetky moduly pridať priamo v scripte (kedže tam nebudú)
Tento script viete submitnúť pomocou qsub script.sh
. Potom vám bude pridelený unikátny job ID, s ktorým viete manipulovať pri modifikovaní jobu.
Sledovať svoje joby cez prehliadač v reálnom čase viete tu: <nevedel som nájsť link, doplním>
Výstup
Váš výstup sa bude nachádzať v adresári, ktorý bol v dobe submitovania jobu pracovný.
<job_name>.o<jobID>
pre stdout
<job_name>.e<jobID>
pre stderr
Komplikovanejšiu správu jobov ako sledovanie stavu, storno nájdete tu: https://wiki.metacentrum.cz/wiki/How_to_compute/Job_management
https://wiki.metacentrum.cz/wiki/How_to_compute/Requesting_resources
Attachments (2)
- sshlogin.gif (19.8 KB) - added by 5 years ago.
-
tty.gif (26.3 KB) - added by 5 years ago.
SSH Login to zubat1 cluster
Download all attachments as: .zip