Jupyter Notebook: Perbedaan antara revisi
LSlowmotion (bicara | kontrib) (Add interactive slurm script) |
LSlowmotion (bicara | kontrib) (v1.0) |
||
Baris 25: | Baris 25: | ||
Sebelum menginstall Jupyter Notebook, pastikan virtual environment sudah aktif. Install Jupyter Notebook dengan perintah <code>conda install</code>: | Sebelum menginstall Jupyter Notebook, pastikan virtual environment sudah aktif. Install Jupyter Notebook dengan perintah <code>conda install</code>: | ||
$ conda install jupyter | $ conda install jupyter | ||
== '''SLURM Interaktif untuk Jupyter Notebook''' == | |||
Untuk menjalankan SLURM interaktif, user perlu membuat SLURM script khusus untuk dijalankan menggunakan perintah <code>srun</code>. | |||
== '''Script SLURM | === '''Script SLURM''' === | ||
#!/bin/bash | #!/bin/bash | ||
Baris 32: | Baris 34: | ||
module load Anaconda3 | module load Anaconda3 | ||
'''# AKTIFKAN VIRTUAL ENVIRONMENT''' | '''# TENTUKAN DIREKTORI VIRTUAL ENVIRONMENT DAN AKTIFKAN VIRTUAL ENVIRONMENT''' | ||
export VE_DIR=/work/<user>/<dir> | export VE_DIR=/work/'''<user>'''/'''<dir>''' | ||
source activate $VE_DIR | source activate $VE_DIR | ||
Baris 53: | Baris 55: | ||
which jupyter | which jupyter | ||
jupyter notebook --no-browser --ip='0.0.0.0' # earlier versions of Jupyter allowed '*' instead of '0.0.0.0' | 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 <code>x</code> (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 <code>srun</code>. | |||
Contoh perintah <code>srun</code> apabila user ingin menggunakan 4 core CPU di [[Partisi Aleleon Mk.II#Partisi epyc|partisi epyc]] selama 1 jam: | |||
$ srun -c 4 -p epyc -t 1:00:00 <nama_berkas_script_slurm> | |||
Contoh perintah <code>srun</code> apabila user ingin menggunakan 4 core CPU dan 1 GPU di [[Partisi Aleleon Mk.II#Partisi gpu ampere|partisi gpu_ampere]] selama 1 jam: | |||
$ srun -c 4 -G 1 -p gpu_ampere -t 1:00:00 <nama_berkas_script_slurm> | |||
{| class="wikitable" | |||
|+Daftar parameter umum pada <code>srun</code> | |||
!Parameter | |||
!Deskripsi | |||
|- | |||
| -c | |||
|Jumlah core CPU yang ingin digunakan | |||
|- | |||
| -G | |||
|Jumlah GPU yang ingin digunakan | |||
|- | |||
| -p | |||
|Partisi | |||
|- | |||
| -t | |||
|Waktu maksimal untuk menjalankan SLURM interaktif. Format: <code>hari-jam:menit:detik</code> | |||
|} | |||
Daftar parameter untuk perintah <code>srun</code> lebih lanjut dapat dibaca di [https://slurm.schedmd.com/srun.html 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 <code>srun</code>, terminal akan menampilkan informasi mengenai hostname compute node dan port yang menjalankan SLURM interaktif. | |||
[[Berkas:Host dan port Jupyter Notebook.png|al=Host dan port Jupyter Notebook|nir|bingkai|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 <code>epyc02</code> pada port <code>8888</code>. Selanjutnya user dapat melakukan pengaturan pada PuTTY. | |||
[[Berkas:Settings pada PuTTY.png|al=Settings pada PuTTY|nir|bingkai|Settings pada PuTTY]] | |||
Klik pada <code>Change Settings...</code>, pilih <code>Connection</code> > <code>SSH</code> > <code>Tunnels</code>. | |||
Atur <code>Source port</code> dengan sembarang port atau menggunakan port yang didapatkan dari terminal. Kemudian atur <code>Destination</code> dengan <code>hostname:port</code> menyesuaikan hostname dan port yang didapatkan dari terminal. | |||
Pada contoh di bawah, Source port diisi dengan <code>8888</code> dan Destination diisi dengan <code>epyc02:8888</code>. Klik <code>Add</code> untuk menambah port yang dilakukan forward melalui SSH. Terakhir, klik <code>Apply</code>. | |||
[[Berkas:PuTTY Tunnels.png|al=PuTTY Tunnels|nir|bingkai|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 <code><nowiki>http://127.0.0.1:8888/?token=37cc4e7a6c86e6aacb695b8800d6700d397bb945f889507c</nowiki></code>. | |||
Selanjutnya user akan memperoleh akses ke Jupyter Notebook melalui antarmuka di web browser yang digunakan. | |||
[[Berkas:Antarmuka web Jupyter Notebook.png|al=Antarmuka web Jupyter Notebook|nir|jmpl|Antarmuka web Jupyter Notebook]] |
Revisi per 27 Oktober 2021 08.49
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 conda install
:
$ conda 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 # 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 -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 -G 1 -p gpu_ampere -t 1:00:00 <nama_berkas_script_slurm>
Parameter | Deskripsi |
---|---|
-c | Jumlah core CPU yang ingin digunakan |
-G | Jumlah GPU yang ingin digunakan |
-p | Partisi |
-t | Waktu maksimal untuk menjalankan SLURM interaktif. Format: hari-jam:menit:detik
|
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
.
Selanjutnya user akan memperoleh akses ke Jupyter Notebook melalui antarmuka di web browser yang digunakan.