Komputasi Python dengan Conda Environment

Dari ALELEON by EFISON

Revisi sejak 6 September 2024 11.52 oleh WilsonLisan (bicara | kontrib) (→‎Metode Menjalankan Komputasi: mengganti ilustrasi marking)


Berkas:Pythonanaconda.png

Halaman ini menjelaskan menjalankan komputasi Python dengan environment Anaconda di ALELEON Supercomputer. Anaconda adalah suite katalog packages Python dan R untuk komputasi data science dan machine learning.

Laman ini merupakan bagian laman -> Komputasi Python

Langkah Menjalankan Komputasi

Terdapat dua langkah utama:

  1. Membuat dan menyiapkan conda environment untuk komputasi user.
  2. Memilih metode menjalankan komputasi.

Manajemen Conda Environment

Subbab ini menjelaskan langkah membuat, mengaktifkan, dan melengkapi conda environment.

Kegiatan ini dilakukan di terminal
Masuk ke terminal melalui Login SSH atau
Pinnedapps terminal.png

Kegiatan ini tidak mengurangi Core Hour user.

Membuat Conda Environment

1
Pilih dan aktifkan modul Anaconda yang akan digunakan.

$ module load [nama-modul-anaconda]

Daftar nama modul Anaconda
Nama Modul Versi
Anaconda3/2023.07-2 Anaconda 3 2023.07-2
Anaconda3/2022.05 Anaconda 3 2022.05
Anaconda3/2021.05 Anaconda 3 2021.05
Anaconda3/2020.11 Anaconda 3 2020.11

Ingat pilihan modul untuk mengaktifkan conda env kedepannya.

2
Buat conda env di direktori HOME:
$ conda create --name [nama-conda-env] 

Contoh nama 'skripsi':
$ conda create --name skripsi
3
Aktifkan conda env:

$ source activate [nama-conda-env]

4
Instal library Python yang dibutuhkan dengan pip

$ pip install [nama-library]

Instalasi PyTorch dan TensorFlow lihat subbab:

  • Instalasi TensorFlow dan PyTorch.
5
Untuk menonaktifkan conda env jalankan perintah:

$ conda deactivate

Tips
Manajemen conda env seperti rename, delete, clone, list, lihat:

Mengaktifkan Kembali Conda Environment

1
Aktifkan modul Anaconda yang dipakai untuk membuat conda env user:

$ module load [nama-modul-anaconda]

2
Aktifkan conda env:

$ source activate [nama-conda-env]

Tips
List conda env yang sebelumnya dibuat apabila lupa namanya:

$ conda env list

Instalasi TensorFlow dan PyTorch

User dapat menginstal TensorFlow / PyTorch dengan pilihan versi CUDA untuk menggunakan GPU NVIDIA RTX 3090 atau CPU saja.

  • Instalasi TensorFlow versi CUDA dan CPU lihat dokumentasi Install TensorFlow with pip.
  • Instalasi PyTorch lihat dokumentasi Start Locally | PyTorch.
    • Versi CUDA pilih Package pip dan Compute Platform CUDA.
    • Versi CPU pilih Package pip dan Compute Platform CPU.
Perhatikan kebutuhan versi NVIDIA CUDA Toolkit!
Bagi user yang menjalankan TensorFlow / PyTorch versi CUDA:
  • Setiap versi TF / PyTorch membutuhkan CUDA Toolkit versi spesifik.
  • Dokumentasi TF / PyTorch memuat info versi CUDA Toolkit yang dibutuhkan.
  • Ketersediaan CUDA Toolkit lihat Modul NVIDIA CUDA Toolkit ALELEON.

User memuat modul CUDA Toolkit berdasarkan skenario menjalankan komputasi:

  • Job submission -> submit script.
  • Sesi interaktif Jupyter -> formulir untuk memulai sesi Jupyter.

Metode Menjalankan Komputasi

User dapat memilih metode menjalankan komputasi sesuai keinginan: (klik expand / kembangkan)

  • Job submission Slurm
    • Menjalankan script Python di compute node melalui manajemen Slurm kemudian menunggu hingga selesai.
    • Hanya untuk file Python (py), file ipynb harus diubah ke py.
  • Sesi Interaktif Slurm
    • coming soon!
  • Sesi Interaktif Jupyter
    • Menggunakan interactive node secara langsung melalui IDE Jupyter Lab atau Notebook.

Job Submission Slurm

Terdapat dua pilihan tampilan yaitu dengan terminal dan web EFIRO.

Langkah Job Submission Slurm di Terminal

Sbatch terminal display.png

1
Login SSH ke ALELEON Supercomputer.
2
Siapkan Conda Env dan file komputasi yang dibutuhkan.
3A
Buat Submit Script yaitu 'formulir' untuk menjalankan job komputasi.
  • Nama file bebas dengan format .sh, contoh submit.sh
Contoh template Submit Script, ikuti petunjuk NOTES didalamnya.
  • Klik expand / kembangkan
Template Submit Script Anaconda Python versi CPU
#!/bin/bash

# -----------------------------------------------------
# Template SLURM Submit Script
# Anaconda Python (CPU)
# 
# NOTES: 
# 1. Isi bagian yang ditandai 4 garing (////).
# 2. Template ini bersifat referensi.
#    User dapat mengubah bagian yang perlu diubah.
# 3. Pastikan user sudah membuat Conda Environment.
# -----------------------------------------------------

# -----------------------------------------------------
# Alokasi komputasi SBATCH dan file input
# -----------------------------------------------------

# Alokasi jumlah core thread CPU
#SBATCH --ntasks=////

# Alokasi jumlah memori RAM (satuan GB)
#SBATCH --mem=////GB

# Alokasi limit waktu menjalankan job
# Format HH:MM:SS atau D-HH:MM:SS
#SBATCH --time=////

# Definisi file untuk menampung output terminal program
#SBATCH --output=result-%j.txt

# Definisi file untuk menampung output error log    
#SBATCH --error=error-%j.txt 

# Nama Conda Environment yang digunakan
CONDA_NAME=////

# Nama program Python yang dijalankan
INPUT_FILE=////.py

# ----------------------------------------------------
# Script jalannya program
# ----------------------------------------------------

# Mengaktifkan Conda Environment 
module load Anaconda3
source activate ${CONDA}/${CONDA_NAME}

# Menjalankan file Python
python3 ${INPUT_FILE}

Untuk Anaconda versi GPU, apabila user butuh modul CUDA versi spesifik:

Template Submit Script Anaconda Python versi GPU atau CUDA
#!/bin/bash

# -----------------------------------------------------
# Template SLURM Submit Script
# Anaconda Python (GPU)
# 
# NOTES: 
# 1. Isi bagian yang ditandai 4 garing (////).
# 2. Template ini bersifat referensi.
#    User dapat mengubah bagian yang perlu diubah.
# 3. Pastikan user sudah membuat Conda Environment.
# -----------------------------------------------------

# -----------------------------------------------------
# Alokasi komputasi SBATCH dan file input
# -----------------------------------------------------

# Menggunakan partisi compute node GPU
#SBATCH --partition=ampere

# Alokasi jumlah core thread CPU
#SBATCH --ntasks=////

# Alokasi jumlah GPU
#SBATCH --gpus=////

# Alokasi jumlah memori RAM (satuan GB)
#SBATCH --mem=////GB

# Alokasi limit waktu menjalankan job 
# Format HH:MM:SS atau D-HH:MM:SS
#SBATCH --time=////

# Definisi file untuk menampung output terminal program
#SBATCH --output=result-%j.txt

# Definisi file untuk menampung output error log    
#SBATCH --error=error-%j.txt 

# Nama Conda Environment yang digunakan
CONDA_NAME=////

# Nama program Python yang dijalankan
INPUT_FILE=////.py

# ----------------------------------------------------
# Script jalannya program
# ----------------------------------------------------

# Memuat modul NVIDIA CUDA default 
module load cuda

# Mengaktifkan Conda Environment 
module load Anaconda3
source activate ${CONDA}/${CONDA_NAME}

# Menjalankan file Python
python3 ${INPUT_FILE}
3B
SBATCH komputasi (ntasks, mem, time, dll) mempunyai limit berdasarkan:
  • Sisa Core Hour user dan Fair Usage Limit.
  • Spesifikasi sistem dan software komputasi.

Untuk melihat limit, jalankan perintah berikut:

$ slimit-python
4
Jalankan job komputasi dengan perintah:
$ sbatch [nama-submit-script]

Contoh:
$ sbatch submit.sh
5
User dapat melihat status jalannya job dengan perintah:

$ squeue -ul $USER

Kolom ST atau STATE menunjukkan status jalannya job.
STATE Penjelasan
R (RUN) Job berjalan
PD (PENDING) Job tertahan, lihat NODELIST(REASON)
CG (COMPLETING) Job selesai dan dalam proses clean-up
CA (CANCELED) Job dibatalkan user
PR (PREEMPETED) Job dibatalkan admin, alasan dikabarkan via email
S (SUSPENDED) Job ditahan admin, alasan dikabarkan via email
Apabila user ingin menghentikan job yang berjalan, jalankan perintah:
$ scancel [job-ID]

Job ID ada pada squeue diatas.
contoh membatalkan job ID 231:
$ scancel 231
Langkah Job Submission Slurm di Web EFIRO

Efiro jobcomposer display.png

1
Login ke web EFIRO ALELEON Supercomputer.
2
New Pinnedapps jc.pngBuka pinned apps Job Composer di homepage EFIRO.

Pilih menu New Job -> From Template

Jcnewjobmarked.png

3
Pilih template Anaconda Python yang diinginkan:
Nama Template Penjelasan
Anaconda Python (CPU) Menjalankan Anaconda Python pada CPU
Anaconda Python (GPU) Menjalankan Anaconda Python pada GPU

Kemudian Isi Job Name dan klik Create New Job

Jctemplate-2.png

4
Siapkan file komputasi dan Conda Env yang dibutuhkan:
  • Upload / download / edit file via menu Edit Files
  • Akses terminal untuk manajemen Conda Env via menu Open Terminal

JC job menu.png

5A
Lengkapi Submit Script melalui tombol Open Editor:
  • Submit script adalah 'formulir' untuk menjalankan job komputasi.
    • Ikuti petunjuk NOTES didalamnya.
  • Klik Save setiap kali mengubah script.

5B
SBATCH komputasi (ntasks, mem, time, dll) mempunyai limit berdasarkan:
  • Sisa Core Hour user dan Fair Usage Limit.
  • Spesifikasi sistem dan software komputasi.

Untuk melihat limit, jalankan perintah ini via menu Open Terminal:

$ slimit-python
6
Jalankan job dengan klik tombol Submit.

  • Pantau kolom status yang menjelaskan status jalannya job.
  • Apabila ingin membatalkan job yang berjalan, klik Stop.
Daftar Status Job
Status Arti
Not Submitted Job belum pernah dijalankan.
Running Job berjalan.
Queue Job mengantri dan belum berjalan.
Completed Job selesai berjalan.
Failed Job berhenti karena error atau di stop user.
Untuk melihat alasan job yang queue:
Buka pinned apps Active Jobs di homepage EFIRO. Ubah opsi All jobs ke Your Jobs. Klik simbol > untuk melihat status job yang pending pada kolom Reason. Arti reason lihat laman Daftar Reason NODELIST ALELEON Supercomputer.
7
Lihat output file komputasi pada kolom Folder Contents
  • Atau dengan membuka Edit Files
Kolom Folder Contents.
8
Untuk menghapus ruang job dan datanya:
  • Pilih ruang job yang akan dihapus.
  • Klik menu Delete

JC delete menu.png

Sesi Interaktif Jupyter

Langkah Sesi Interaktif Jupyter

Efiro jupyter display.png

1
Login ke web EFIRO ALELEON Supercomputer.
2
Siapkan conda environment yang akan digunakan.
  • Disarankan untuk melengkapi instalasi library sebelum sesi Jupyter.
3
New Pinnedapps jupyter.png Buka pinned apps Jupyter di homepage EFIRO.
4
Isi formulir untuk memulai sesi Jupyter dengan panduan berikut:
  • Choose Jupyter version
    • Pilih sesuai preferensi user, Jupyter Lab atau Notebook.
  • Partition -> pilih sesuai kebutuhan:
    • torti -> CPU saja
    • tilla -> CPU dan GPU
Formulir alokasi komputasi Partition
torti tilla
Number of CPU core(s) 2 - 32
Amount of memory/RAM 1 - 64
Number of GPUs - 1
Number of hours 1 - 72
Formulir alokasi komputasi mempunyai limit berdasarkan:
  • Sisa Core Hour user dan Fair Usage Limit.
  • Spesifikasi sistem dan software komputasi.

Langkah melihat limit:

  • Buka menu Clusters > Aleleon Shell Access

Shellaccess.png

  • Jalankan perintah:
$ slimit-python


  • Choose how to launch Jupyter -> Anaconda
  • Choose Anaconda version
    • Pilih versi yang dipakai untuk membuat conda env user.
  • Conda environment directory
    • Isi nama conda env user yang akan digunakan.
  • Software modules
  • Environment setup
    • Memuat environment variable, isi apabila ada.
  • Additional Jupyter arguments
    • Memuat argument tambahan Jupyter, isi apabila ada.
  • Email address
    • Notifikasi email untuk status mulai dan selesainya sesi Jupyter.
    • Isi apabila berkenan.
5
Klik tombol Launch untuk memulai sesi Jupyter.
  • User akan diarahkan ke halaman My Interactive Sessions.
  • Tunggu hingga sesi Jupyter siap diakses.

Jupyternotebookqueue.png

6
Apabila status Running, klik tombol Connect to Jupyter.
  • Sistem mulai menghitung Core Hour!
  • Untuk menghentikan sesi yang sedang running, klik tombol Cancel

Newjupyter120124.png

7
Pilih Notebook Python 3 untuk memulai sesi notebook Python 3.
Gunakan Notebook Python 3 untuk menjalankan kernel conda env user di Jupyter Notebook
Gunakan Notebook Python 3 untuk menjalankan kernel conda env user di Jupyter Lab
8
User dapat mengunjungi sesi Jupyter yang sedang berjalan pada:
  • Menu My Interactive Sessions pada homepage EFIRO.
  • Kolom Active interactive sessions pada homepage EFIRO.

Pelaporan Kendala dan Support

Apabila menjumpai masalah teknis dalam menjalankan komputasi, silahkan lapor dengan klik gambar berikut ini.

Wiki-pelaporankendala.jpg

Bila terdapat pertanyaan lainnya, silahkan hubungi admin EFISON melalui email:

support@efisonlt.com