Jupyter Notebook
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
.
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>
Parameter | Deskripsi |
---|---|
-c <core_cpu> | Jumlah core CPU yang ingin digunakan.
Misal untuk menggunakan 4 core CPU, parameternya adalah |
--mem=<besar_memory> | Kapasitas memory RAM yang ingin digunakan.
Misal untuk menggunakan 50 GB RAM, parameternya adalah |
--gres=<resource> | Jumlah GRES (generic resource) yang ingin digunakan.
Misal untuk menggunakan GRES berupa GPU sejumlah 1 unit, parameternya adalah |
-p <partisi> | Partisi.
Misal untuk menggunakan partisi epyc, parameternya adalah |
-t <waktu> | Waktu maksimal untuk menjalankan SLURM interaktif. Format: hari-jam:menit:detik .
Misal untuk menjalankan job selama 1 jam, parameternya adalah |
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.
Gambar di atas menunjukkan bahwa hostname yang digunakan adalah epyc02
pada port 8888
. Selanjutnya user dapat melakukan pengaturan 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
.
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.