Aplikacja

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:

  1. 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.
  2. 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.