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.