Jupyter GPU

Do poniższego poradnika wymagane jest ukończenie sekcji SSH.

Konieczna będzie także rezerwacja maszyny z GPU, na przykład ekskluzywna na 1 godzinę:

salloc --no-shell --partition=gpu --gpus=1 \
    --exclusive --time=01:00:00
Wskazówka

Zalecane jest użycie multipleksera terminala podczas realizacji tego poradnika.

Bezpośrednio po zalogowaniu do węzła obliczeniowego z GPU widoczne są tylko podstawowe programy. Aby skorzystać z innego oprogramowania konieczne jest zmodyfikowanie środowiska użytkownika za pomocą systemu modułów środowiskowych.

Moduł zawiera w sobie informację o oprogramowaniu oraz metodzie jego udostępnienia dla użytkownika. Po jego załadowaniu środowisko zostanie rozbudowane o nowe funkcje. Analogicznie wyładowanie modułu je usunie. Modły mogą być ze sobą łączone, mogą posiadać zależności (jeden moduł ładuje inne) oraz wchodzić ze sobą w konflikt (jeden moduł nie może być jednocześnie załadowany z innym).

Conda to narzędzie ułatwiające zarządzanie oprogramowaniem języka Python. W klastrze dostępne są dystrybucje Anaconda i Miniconda. Pierwsza z nich zawiera zestaw oprogramowania w bazowym środowisku, a druga tylko minimalny służący do konstrukcji własnych środowisk.

Aby rozpocząć pracę z Jupyterem należy załadować moduł anaconda:

module load anaconda

Znak zachęty powinien ulec zmianie poprzez dodanie nazwy środowiska, w tym wypadku bazowego, przed nazwą użytkownika:

(base) s123456@g1n1:~$

Moduł anaconda zawiera w sobie dwa środowiska Python dostosowane do obsługi GPU oparte na PyTorch i TensorFlow.

Listę dostępnych środowisko możemy uzyskać za pomocą polecenia conda env list:

# conda environments:
#
base        *  /projects/wmi_conda/anaconda/2024.02-1
pytorch-gpu    /projects/wmi_conda/anaconda/2024.02-1/envs/pytorch-gpu
r              /projects/wmi_conda/anaconda/2024.02-1/envs/r
tf-gpu         /projects/wmi_conda/anaconda/2024.02-1/envs/tf-gpu
  1. Aktywacja środowiska tf-gpu zawierającego TensorFlow wraz z Jupyter Lab:

    conda activate tf-gpu
  2. Aktywacja środowiska pytorch-gpu zawierającego PyTorch wraz z Jupyter Lab:

    conda activate pytorch-gpu

Znak zachęty powinien zmienić się wskazując nazwę aktywnego środowiska.

Należy uruchomić Jupyter Lab w trybie nasłuchu na wszystkich adresach aby można było się do niego połączyć z przeglądarki na innym komputerze (wymagana jest sieć WMI lub VPN):

jupyter lab --ip 0.0.0.0

Z wypisanych komunikatów należy wybrać adres w domenie cluster.wmi.amu.edu.pl oraz skopiować jego całość do przeglądarki internetowej, przykładowo:

Or copy and paste one of these URLs:
    http://g1n1.cluster.wmi.amu.edu.pl:8888/lab?token=ABCDE

Aby przetestować poprawne uruchomienie środowiska należy uruchomić nowy kernel Python oraz:

  1. w przypadku TensorFlow wykonać następujący kod:

    from tensorflow.python.client import device_lib
    
    local_device_protos = device_lib.list_local_devices()
    
    [x.physical_device_desc for x in local_device_protos if x.device_type == 'GPU']

    Jeśli wszystko się udało, to wynik powinien wyglądać podobnie do:

    ['device: 0, name: NVIDIA GeForce RTX 4090, pci bus id: 0000:00:10.0, compute capability: 8.9']
  2. w przypadku PyTorch wykonać następujący kod:

    import torch
    
    print([(i, torch.cuda.get_device_properties(i)) for i in range(torch.cuda.device_count())])

    Jeśli wszystko się udało, to wynik powinien wyglądać podobnie do:

    [(0, _CudaDeviceProperties(name='NVIDIA GeForce RTX 4090', major=8, minor=9, total_memory=24210MB, multi_processor_count=128))]