Container Kullanarak Çalışma

TRUBA altyapısında GPU bulunan kümelerde Singularity kullanarak container imajları çalıştırabilirsiniz.

Not

Singularity, karmaşık uygulamaların YBH kümelerinde taşınabilir ve tekrarlanabilir şekilde çalıştırılmasını sağlar. Singularity kullanarak Sylabs Cloud Library’deki ve Docker Hub’daki imajları çalıştırabilirsiniz.

sbatch Kullanarak Kuyruğa İş Gönderme

DockerHub’daki Tensorflow imajlarından uygun etiketli (gpu) birini seçin ve singularity pull komutunu kullanarak indirin:

singularity pull docker://tensorflow/tensorflow:latest-gpu

Örnek python kodu hazırlayın: print_gpu.py

import tensorflow as tf
print(tf.__version__)
print(tf.config.list_physical_devices('GPU'))

Kuyruğa iş göndermek için bir slurm betiği hazırlayın: submit-tensorflow-job.sh

#!/bin/bash
#SBATCH -p akya-cuda        # Kuyruk adi: Uzerinde GPU olan kuyruk olmasina dikkat edin.
#SBATCH -A [USERNAME]       # Kullanici adi
#SBATCH -J print_gpu        # Gonderilen isin ismi
#SBATCH -o print_gpu.out    # Ciktinin yazilacagi dosya adi
#SBATCH --gres=gpu:1        # Her bir sunucuda kac GPU istiyorsunuz? Kumeleri kontrol edin.
#SBATCH -N 1                # Gorev kac node'da calisacak?
#SBATCH -n 1                # Ayni gorevden kac adet calistirilacak?
#SBATCH --cpus-per-task 10  # Her bir gorev kac cekirdek kullanacak? Kumeleri kontrol edin.
#SBATCH --time=0:01:00      # Sure siniri koyun.

# NVIDIA GPU kullanmak icin --nv opsiyonunu kullanin.
singularity run --nv tensorflow_latest-gpu.sif python print_gpu.py

Not

Betikteki [USERNAME] yertutucusunu kullanıcı adınızla değiştirmeyi unutmayın.

Uyarı

GPU kullanan işleri gönderirken toplam çekirdek sayısını işi gönderdiğiniz kümeye ve kullanacağınız GPU sayısına göre belirlemeniz gerekmektedir. İlgili bilgi GPU Kılavuzu’nda bulunmaktadır.

İşi kuyruğa gönderin:

sbatch submit-tensorflow-job.sh

Kuyruğa gönderdiğiniz işleri kontrol edin:

squeue

İş bittikten sonra output dosyasını terminalde görüntüleyin:

cat print_gpu.out

Jupyter Notebook ile Çalışma

Uyarı

TRUBA tipi Yüksek Başarımlı Hesaplama altyapılarında limitli miktarda kaynak pek çok kullanıcı tarafından paylaşımlı olarak kullanılmaktadır. Bu nedenle bu bölümde anlatılan bilgileri kullanarak uzun süreli kaynak tahsis edip bu kaynakları etkili bir şekilde kullanmamak (örneğin interaktif işi sonlandırmadan bilgisayar başından ayrılmak) doğru değildir.

Jupyter ve gpu etiketli tensorflow docker imajlarından birini indirin:

singularity pull docker://tensorflow/tensorflow:latest-gpu-jupyter

srun kullanarak üzerinde GPU bulunan kuyruklardan interaktif çalışmak için tahsis talep edin:

srun -N 1 -n 1 -c 10 --gres=gpu:1 -p akya-cuda --time 1:00:00 --pty /bin/bash

Not

--gres=gpu:1 parametresindeki rakamı daha fazla GPU talep etmek için değiştirebilirsiniz. Bu durumda çekirdek sayısını GPU Kılavuzu’na göre güncellemeyi unutmayın.

Jupyter’in çalıştığı makinenin ismini öğrenin: [HOSTNAME]

hostname

Çalışan imaja bağlamak için notebooks klasörü oluşturun:

mkdir notebooks

Jupyter notebook başlatın.

singularity run --nv -B notebooks:/tf/notebooks tensorflow_latest-gpu-jupyter.sif

Not

URL’deki port numarasını [PORT] ve token’i not edin.

Jupyter Notebook’a erişmek için yeni bir terminal kullanarak ssh tüneli oluşturun:

ssh -N -L 8888:[HOSTNAME]:[PORT] 172.16.7.1

Web tarayıcınızda http://localhost:8888 üzerinden Jupyter Notebook’a token kullanarak giriş yapabilirsiniz. notebooks klasöründe yaptığınız çalışmalar kalıcı olacaktır.