Aplikacja
Na tej stronie
Na platformie mUQSA uruchomienie aplikacji lub modeli użytkownika jest możliwe jest poprzez dwa odrębne tryby: Preinstalled i Apptainer.
Tryb Preinstalled
Tryb Preinstalled polega na ewaluacji aplikacji lub modeli preinstalowanych, tzn. takich które zostały uprzednio zainstalowane na klastrze przez administratora lub użytkownika.
Tryb Apptainer
Tryb Apptainer opiera się na wykorzystaniu platformy kontenerowej Apptainer (znanej także jako Singularity), dostosowanej specjalnie do tworzenia i uruchamiania kontenerów zoptymalizowanych do zadań naukowych i badawczych. Kontenery stanowią lekkie, samowystarczalne środowiska, które pozwalają w hermetyczny sposób odizolować aplikację wraz z jej zależnościami od systemu operacyjnego, zapewniając przenośność i spójne wykonanie aplikacji na różnorodnych systemach komputerowych, w szczególności klastrach.
Pliki Definicji Apptainer
Tworzenie obrazów Apptainer opiera się na wykorzystaniu pliku definicji (patrz Pliki definicji Apptainer). W kontekście mUQSA proces tworzenia obrazów Apptainer wymaga przestrzegania prostych wytycznych:
- Obraz powinien wykorzystywać katalog oznaczony ścieżką
/workdir
, w którym aplikacja poddawana ewaluacji będzie uruchomienia. Zakłada się, że ten katalog będzie montowany z systemu hosta i bedzie wykorzystywany do wymiany danych między hostem i kontenerem. - Model użytkownika powinien być uruchamiany za pomocą sekcji
%runscript
, w katalogu/workdir
, z wykorzystaniem argumentu$@
w celu umożliwienia dynamicznego przekazywania parametrów.
Oto ilustracyjny przykład pliku definicji Apptainer:
# Konfiguracja
Bootstrap: docker
From: python:3.11.4-alpine3.18
# '/projectile' do przechowywania modelu
# '/workdir' jako katalog roboczy
%setup
mkdir -p ${SINGULARITY_ROOTFS}/projectile
mkdir -p ${SINGULARITY_ROOTFS}/workdir
# skopiuj pliki do katalogu, w którym powinien być przechowywany model
%files
projectile.py /projectile/projectile.py
requirements.txt /projectile/requirements.txt
# Dodaj SDK i zainstaluj zależności modelu
%post
apk add --update alpine-sdk
pip install -r /projectile/requirements.txt
# Podczas uruchamiania kontenera: przejdź do katalogu roboczego i wywołaj model.
# Całą logika wykonania jest wykonywana w katalogu '/workdir'.
%runscript
cd /workdir
python3 /projectile/projectile.py "$@"
%help
Example help.
Aby zbudować obraz na podstawie powyższego pliku, wykonaj poniższe polecenie:
# Zakładając, że powyższy plik definicji znajduje się w pliku `projectile.def`
apptainer build --fakeroot projectile.simg projectile.def
Spowoduje ono utworzenie pliku obrazu Apptainer o nazwie projectile.simg
który może być następnie wykorzystywany w mUQSA.
Info
Na tym etapie rozwoju mUQSA, użytkownik musi ręcznie skopiować obraz do zdalnego systemu plików klastra i podać odpowiednie polecenie do wykonania obrazu za pomocą Apptainera, zostanie to jednak zmienione w przyszłych wersjach platformy.