Panel | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
|
Na ovoj stranici možete naći upute i prijedloge o korištenju pythona, pipa i conde na Supeku:
- Lustre i virtualna okruženja - Kako se virtualna okruženja ponašaju na datotečnom sustavu Lustre
- Apptainer i kontejnerizacija - Poželjan način dopremanja i korištenja virtualnih okruženja
- Primjeri - Primjeri stvaranja kontejnera za određene aplikacije
- Kako dalje? - Reference s dodatnim detaljima
Prva dva poglavlja plitku plitki su uvod u potrebu kontejnera pri korištenju python knjižnica na Supeku, dok su druga dva posvećena naputcima ( za nestrpljive ) i referencama za one koji žele ući dublje u načine na koje se to može ostvariti.
Lustre i virtualna okruženja
Anchor | ||||
---|---|---|---|---|
|
...
Lustre je paralelni raspodijeljeni datotečni sustav koji koristi Supek, namijenjen okruženju HPC u kojem veliki broj korisnika generira i koristi iznimnu količinu podataka, i čija je visoka dostupnost i brzina prijenosa bitna radi što efikasnijeg izvođenja paralelnih aplikacija.
...
Slika 2. Vrijeme izvođenja komande ls -l *
stotinu puta nad
kombinacijama broja direktorija (1-1000) i datoteka (1-100) koje
sadrže 10GB podataka.
Python i virtualna okruženja
...
Iako ove aplikacije pružaju veoma jednostavno i efikasno okruženje za brzi razvoj i eksperimentiranje raznih knjižnica i njihovih kombinacija, svakom novom instalacijom broj datoteka se multiplicira i dodatno opterećuje dijeljeni sustav (učestalim čitanjem i pisanjem pri razvoju ili izvršavanju).
Ispod se nalazi primjer okruženja nastalog pip instalacijama za samo jednu verziju pythona, koje u sebi sadrži tipični data stack u kojem se nalazi (approx.):
...
veličine za tipičan python3.9 data stack.
Code Block | ||||
---|---|---|---|---|
| ||||
marko@pc-mkvakic 15:05 ~ $ find ~/.local/lib/python3.9/site-packages /usr/local/lib/python3.9/dist-packages -type d | wc -l 4338 marko@pc-mkvakic 15:05 ~ $ find ~/.local/lib/python3.9/site-packages /usr/local/lib/python3.9/dist-packages -type f | wc -l 47355 marko@pc-mkvakic 15:06 ~ $ du -hcs ~/.local/lib/python3.9/site-packages /usr/local/lib/python3.9/dist-packages 939M /home/marko/.local/lib/python3.9/site-packages 747M /usr/local/lib/python3.9/dist-packages 1.7G total |
Apptainer i kontejnerizacija
Anchor | ||||
---|---|---|---|---|
|
...
Jedan od sve ustaljenijih načina dopremanja aplikacija na HPC klastere su apptainer i singularity; sučelja za stvaranje izoliranih razvojnih okolina zvanih kontejneri.
Kontejneri su datoteke koje u sebi sadrže aplikacije i njihove ovisnosti potrebne za izvršavanje na Unix operativnim sustavima. To čine putem direktne integracije sa samo njihovom jezgrom (koju dijele i koja je odgovorna za upravljanje hardverom), zbog čega su prilagodljivi bilo kojem računalu koje koristi isti operativni sustav.
Datoteke kontejnera obično su u formi tzv. slike (engl. image) koja se stvara na osobnom računalu, gdje se instaliraju datoteke nužne za razvoj i korištenje aplikacija. Jednom kada se pripremi odgovarajući image, doprema se na superračunalo i koristi kao bilo koja druga aplikacija.
Na Supeku je dostupna verzija v1.1.6 apptainer aplikacije. Ispod se nalaze osnove stvaranja i korištenja kontejnera, dok detaljnije upute možete naći na službenim stranicama i našem wikiju Isabelle.
Napomena: Upute pretpostavljaju da applikaciju apptainer imate već instaliranu na osobnom računalu sa sudo ovlastima.
Izgradnja kontejnera
Najbitnija komanda apptainera je komanda build
kojom se kontejneri mogu izgraditi u obliku slike (samo čitanje) ili sandbox verziji putem opcije build --sandbox
(za interaktivno modificiranje).
Kontejneri se grade korištenjem recepata zvanih definition datoteka i mogu se:
- preuzeti s online repozitorija - za brzo pripremanje već testiranih recepata
- skrojiti ručno - za pripremanje specifičnih konfiguracija
Primjerice, ako želimo izgraditi kontejner s operativnim sustavom ubuntu v20.04 (popularnim OS-om koji pruža veliki broj već prevedenih knjižnica kroz svoj upravitelj knjižnicama apt
) osnovnu radnu verziju možemo izgraditi:
Code Block |
---|
[korisnik@kompjuter] apptainer build ubuntu.sif docker://ubuntu:20.04 |
Iako je ovaj image ograničene koristi (jer ubuntu sam po sebi ne sadrži aplikacije za izvođenje na HPC-u), ovom komandom se mogu dohvatiti već pripremljeni recepti za koje postoje posvećeni repozitoriji.
Neki od poznatijih repozitorija su:
- hub.docker.com - najpoznatija meka za kontejnere i obično prvi rezultat Google upita
- biocontainers.pro - posvećeno bioinformatici
- Nvidia NGC - posvećeni ML i AI aplikacijama optimiziranim za grafičke procesore
- docker://condaforge - kontejneri s već pripremljenim upraviteljima paketa conda ili mamba
Primjeri
Anchor | ||||
---|---|---|---|---|
|
...