Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. interaktivnom izgradnjom korištenjem verzije sandbox
  2. izgradnjom slike korištenjem definicijske datoteke .def

Nadogradnja kontejnera (lokalno) - shell --writable

Note
titleIzrada kontejnera

Upute koje koriste sudo pri izgradnji nisu moguće na Supeku i Padobranu jer korisnici nemaju takve ovlasti.

Pri izgradnji ili nadogradnji na Supeku i Padobranu koristite opciju fakeroot (npr. za interaktivnu nadogradnju):

Code Block
[korisnik@x3000c0s27b0n0 ~]$ apptainer shell --writable --fakeroot ...

U prvom slučaju, pri izgradnji kontejnera moramo navesti opciju opciju  build --sandbox koja će generirati kontejner u obliku direktorija ubuntu_20.04:

...

Note
titleIzrada kontejnera

Prethodne upute Naredbe koje koriste sudo pri izgradnji nisu moguće na Supeku i Padobranu jer korisnici nemaju takve ovlasti.

Pri izgradnji ili nadogradnji na Supeku koristite opciju fakeroot (npr. za interaktivnu nadogradnju):

Code Block
[korisnik@x3000c0s27b0n0 ~]$ apptainer shell --writable --fakeroot ...
Tip
titleAPPTAINER_TMPDIR - Staza za privremene datoteke

Pri izgradnji ili nadogradnji, apptainer kreira privremene datoteke koje se spajaju u konačni kontejner i koristi stazu /tmp kao zadani direktorij.

/tmp direktorij na pristupnom poslužitelju je dijelom datotečnog prostora vezanog uz operativni sustav pristupnog poslužitelja i ima ograničen prostor od 178 gigabajta.

U trenutcima jače korisničke aktivnosti, a pogotovo višestruke izgradnje kontejnera koji mogu imati i do desetak gigabajta, zbog zadanog ponašanja s privremenim datotekama može doći do preopterećenja diskovnog prostora i smanjene funkcionalnosti operativnog sustava za sve korisnike.

U svrhu izbjegavanja ovog tipa preopterećenja, preporučeno je postaviti varijablu okoliša APPTAINER_TMPDIR prije izgradnje koja mijenja zadani direktorij i postaviti ga (primjerice) na direktorij unutar /scratch prostora (opisano u primjeru ispod)


Primjer Primjer sandbox izgradnje s dodatnim knjižnicama korištenjem Ubuntu v20.04 operativnog sustava:

...

Code Block
languagebash
# spajanje na pristupni poslužitelj
[korisnik@kompjuter:~] $ ssh mkvakic@login-gpu.hpc.srce.hr

# izgradnja pytorch kontejnera
[korisnik@x3000c0s27b0n0:~] $ apptainer build pytorch_1.13.1.sif docker://pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime

# print raznih informacija korištenjem --nv
[korisnik@x3000c0s27b0n0:~] $ apptainer run --nv ./pytorch_1.13.1.sif python -c "import torch; print('Is cuda available?:', torch.cuda.is_available())"
Is cuda available?: True
[korisnik@x3000c0s27b0n0:~] $ apptainer run --nv ./pytorch_1.13.1.sif python -c "import torch; print('Device count:', torch.cuda.device_count())"
Device count: 1
[korisnik@x3000c0s27b0n0:~] $ apptainer run --nv ./pytorch_1.13.1.sif python -c "import torch; print('Current device:', torch.cuda.current_device())"
Current device: 0
[korisnik@x3000c0s27b0n0:~] $ apptainer run --nv ./pytorch_1.13.1.sif python -c "import torch; print('Device name:', torch.cuda.get_device_name(0))"
Device name: NVIDIA A100-PCIE-40GB


Nadogradnja sandbox kontejnera sa korištenjem  --nv opcije moguća je nakon modifikacije sandbox direktorija izvan kontejnera. 

Code Block
titleKorištenje "sandbox" kontejnera sa --nv opcijom
# izgradnja test.sandbox sandbox slike kontejnera
[korisnik@x3000c0s27b0n0:~] $ apptainer build --sandbox --fix-perms test.sandbox test.def

# modifikacija slike kontejnera
[korisnik@x3000c0s27b0n0:~] $ touch test.sanbox/usr/bin/nvidia-smi
[korisnik@x3000c0s27b0n0:~] $ touch test.sanbox/usr/bin/nvidia-debugdump
[korisnik@x3000c0s27b0n0:~] $ touch test.sanbox/usr/bin/nvidia-persistenced
[korisnik@x3000c0s27b0n0:~] $ touch test.sanbox/usr/bin/nvidia-cuda-mps-control
[korisnik@x3000c0s27b0n0:~] $ touch test.sanbox/usr/bin/nvidia-cuda-mps-server
[korisnik@x3000c0s27b0n0:~] $ mkdir -p test.sandbox/var/run/nvidia-persistenced/
[korisnik@x3000c0s27b0n0:~] $ touch test.sanbox/var/run/nvidia-persistenced/socket

# pokretanje "sandbox" kontainera sa --nv opcijom
[korisnik@x3000c0s27b0n0:~] $ apptainer shell --nv --writable --fakeroot test.sandbox


NVIDIA NGC kontejneri

Tip
NVIDIA driveri na pristupnom poslužitelju su nadograđeni i usklađeni sa radnim poslužiteljima u siječnju 2024. godine!
Izgradnja valjanog kontejnera sa NGC repozitorija moguća je na pristupnom poslužitelju bez --bind opcije ili dodatnih naredbi i konfiguracije.

...