Jupyter Notebook

Dari ALELEON by EFISON

Revisi sejak 29 Oktober 2021 06.44 oleh LSlowmotion (bicara | kontrib) (→‎Instalasi Jupyter Notebook: link aktivasi virtual environment)

Jupyter Notebook adalah salah satu komponen dari koleksi Jupyter sains data interaktif dan alat-alat komputasi saintifik. Ia biasa digunakan di komputer lokal dengan menggunakan instalasi Python (umumnya Anaconda) namun bisa juga memanfaatkan sumber daya memori maupun CPU yang tersebdia di compute node di HPC ALELEON Mk. II.

Laman ini bukan merupakan perkenalan Jupyter Notebook namun hanya menjelaskan mengenai bagaimana cara mempersiapkan environment Jupyter Notebook di HPC ALELEON Mk. II dan menjalankannya secara interaktif melalui scheduler SLURM.

Syarat: Login SSH Menggunakan PuTTY

User harus login menggunakan PuTTY karena Jupyter Notebook nantinya membutuhkan port forwarding untuk menyambungkan interface Jupyter Notebook ke perangkat user. Tutorial login SSH menggunakan PuTTY dapat dibaca di Panduan Pemula Login SSH#Melalui Software PuTTY.

Persiapan: Membuat Virtual Environment Menggunakan Anaconda

User harus mempersiapkan virtual environment Anaconda dan menjalankan Jupyter Notebook di dalam virtual environment tersebut.

Sebelum membuat virtual environment, user perlu melakukan load module Anaconda dengan perintah:

$ module load Anaconda3

Setelah itu user dapat mendefinisikan direktori virtual environment ke dalam variabel VE_DIR:

$ export VE_DIR=/work/<user>/<dir>

Buat virtual environment dengan perintah conda create :

$ conda create --prefix $VE_DIR

Mengaktifkan dan Menonaktifkan Virtual Environment

Sebelum mengaktifkan virtual environment, user perlu melakukan load module Anaconda:

$ module load Anaconda3

User dapat mengaktifkan virtual environment dengan perintah source activate:

$ source activate $VE_DIR

Atau apabila user belum mendefinisikan VE_DIR:

$ source activate /work/<user>/<dir>

Untuk menonaktifkan Virtual Environment, user dapat menggunakan perintah:

$ conda deactivate

Instalasi Jupyter Notebook

Sebelum menginstall Jupyter Notebook, pastikan virtual environment sudah aktif. Install Jupyter Notebook dengan perintah pip install:

$ pip install jupyter

SLURM Interaktif untuk Jupyter Notebook

Untuk menjalankan SLURM interaktif, user perlu membuat SLURM script khusus untuk dijalankan menggunakan perintah srun.

Script SLURM

#!/bin/bash

# LOAD MODULE YANG DIBUTUHKAN, MISAL module load Anaconda3 cuda R 
module load Anaconda3 cuda R

# TENTUKAN DIREKTORI VIRTUAL ENVIRONMENT DAN AKTIFKAN VIRTUAL ENVIRONMENT
export VE_DIR=/work/<user>/<dir>
source activate $VE_DIR

# PENYESUAIAN BERBAGAI DIREKTORI UNTUK MENJALANKAN JUPYTER NOTEBOOK
unset XDG_RUNTIME_DIR
export JUPYTER_RUNTIME_DIR=$VE_DIR/workdir/runtime
export JUPYTER_DATA_DIR=$VE_DIR/workdir/data
export JUPYTER_CONFIG_DIR=$VE_DIR/workdir/config

# MENGATUR INTERRUPT KE CTRL-T dari CTRL-C
echo "done."
echo "*** Setting Jupyter interrupt character to Ctrl-T instead of Ctrl-C"
echo "*** to avoid conflicts with Slurm."
stty intr ^T
echo ""

# MENULISKAN HOSTNAME KE TERMINAL
echo "*** Starting Jupyter on: " $(hostname)
which jupyter
jupyter notebook --no-browser --ip='0.0.0.0' # earlier versions of Jupyter allowed '*' instead of '0.0.0.0'

Pastikan script SLURM dapat dijalankan dengan permission x (execute). Menambahkan permission dapat dilakukan menggunakan perintah chmod seperti pada contoh di bawah:

$ chmod +x <nama_berkas_script_slurm>

Menjalankan SLURM Interaktif

User dapat menjalankan SLURM interaktif dengan script SLURM yang sudah dibuat dengan perintah srun. Perlu diketahui bahwa SLURM interaktif ini terbatas hanya berjalan di 1 node.

Contoh perintah srun apabila user ingin menggunakan 4 core CPU di partisi epyc selama 1 jam:

$ srun -c 4 --mem=50G -p epyc -t 1:00:00 <nama_berkas_script_slurm>

Contoh perintah srun apabila user ingin menggunakan 4 core CPU dan 1 GPU di partisi gpu_ampere selama 1 jam:

$ srun -c 4 --mem=50G --gres=gpu:1 -p gpu_ampere -t 1:00:00 <nama_berkas_script_slurm>
Daftar parameter umum pada srun
Parameter Deskripsi
-c <core_cpu> Jumlah core CPU yang ingin digunakan.

Misal untuk menggunakan 4 core CPU, parameternya adalah -c 4.

--mem=<besar_memory> Kapasitas memory RAM yang ingin digunakan.

Misal untuk menggunakan 50 GB RAM, parameternya adalah --mem=50G.

--gres=<resource> Jumlah GRES (generic resource) yang ingin digunakan.

Misal untuk menggunakan GRES berupa GPU sejumlah 1 unit, parameternya adalah --gres=gpu:1.

-p <partisi> Partisi.

Misal untuk menggunakan partisi epyc, parameternya adalah -p epyc.

-t <waktu> Waktu maksimal untuk menjalankan SLURM interaktif. Format: hari-jam:menit:detik.

Misal untuk menjalankan job selama 1 jam, parameternya adalah -t 1:00:00.

Daftar parameter untuk perintah srun lebih lanjut dapat dibaca di Slurm Workload Manager - srun (schedmd.com).

Untuk mematikan SLURM interaktif, user cukup melakukan menekan interrupt (Ctrl + C) dua kali.

Mengatur SSH Tunneling untuk Mengakses Antarmuka Web dari Jupyter Notebook

Setelah berhasil menjalankan script SLURM dengan srun, terminal akan menampilkan informasi mengenai hostname compute node dan port yang menjalankan SLURM interaktif.

Host dan port Jupyter Notebook
Hostname dan port Jupyter Notebook untuk SSH tunneling. Juga terdapat URL untuk mengakses Jupyter Notebook di web browser setelah SSH Tunneling selesai dilakukan.

Gambar di atas menunjukkan bahwa hostname yang digunakan adalah epyc02 pada port 8888. Selanjutnya user dapat melakukan pengaturan pada PuTTY.

Settings pada PuTTY
Settings pada PuTTY

Klik pada Change Settings..., pilih Connection > SSH > Tunnels.

Atur Source port dengan sembarang port atau menggunakan port yang didapatkan dari terminal. Kemudian atur Destination dengan hostname:port menyesuaikan hostname dan port yang didapatkan dari terminal.

Pada contoh di bawah, Source port diisi dengan 8888 dan Destination diisi dengan epyc02:8888. Klik Add untuk menambah port yang dilakukan forward melalui SSH. Terakhir, klik Apply.

PuTTY Tunnels
PuTTY Tunnels

Mengakses Jupyter Notebook di Web Browser

Apabila user sudah selesai melakukan pengaturan SSH tunneling, user dapat menggunakan URL yang tampil pada terminal. Pada contoh di atas, URL tersebut adalah http://127.0.0.1:8888/?token=37cc4e7a6c86e6aacb695b8800d6700d397bb945f889507c.

Apabila user menggunakan source port yang berbeda, URL harus disesuaikan dengan source port tersebut. Misal user menggunakan source port 1234, maka URL menjadi http://127.0.0.1:1234/?token=37cc4e7a6c86e6aacb695b8800d6700d397bb945f889507c.

Selanjutnya user akan memperoleh akses ke Jupyter Notebook melalui antarmuka di web browser yang digunakan.

Antarmuka web Jupyter Notebook
Antarmuka web Jupyter Notebook