Komputasi dengan Container Apptainer: Perbedaan antara revisi

Dari ALELEON by EFISON
(→‎Instalasi Package Python pada Image Container: menekankan step ini adalah opsional)
(mengganti gambar header)
 
(17 revisi perantara oleh pengguna yang sama tidak ditampilkan)
Baris 1: Baris 1:
L[[Berkas:Python apptainer logo.png|nirbing|500x500px]]
[[Berkas:Logo Apptainer ALELEON tp.png|nirbing|400x400px]]


Halaman ini menjelaskan komputasi Python dengan container Apptainer di ALELEON Supercomputer. Apptainer (dahulu Singularity) adalah container yang dirancang untuk sistem superkomputer / HPC.
Halaman ini menjelaskan langkah menjalankan komputasi di ALELEON Supercomputer dengan '''image container''' melalui platform '''[[https://apptainer.org/ Apptainer]].''' ALELEON Supercomputer dapat menyediakan dan menjalankan image container untuk komputasi berbagai bidang.
{| class="wikitable"
== '''Langkah Menjalankan Komputasi''' ==
!''Laman ini merupakan bagian laman ->'' [[Komputasi Python]]
Terdapat 2 langkah utama:  
|}
 
== '''Langkah Menjalankan Komputasi dan Limitasi''' ==
Terdapat 3 langkah utama:  


# Memilih atau menyiapkan image container yang digunakan.
# Memilih image container yang digunakan.
# Melengkapi image container dengan instalasi library Python tambahan apabila dibutuhkan.
# Melengkapi (''apabila dibutuhkan'') dan menjalankan image container sesuai ketentuannya.
# Saat ini container hanya dapat dijalankan dengan app '''Jupyter''' [[Berkas:New Pinnedapps jupyter.png|nirbing|116x116px]] pada interactive node.


== '''Pilihan Image Container''' ==
== '''Pilihan Image Container''' ==
ALELEON Supercomputer menyediakan tiga pilihan image sebagai berikut. SIlahkan pilih yang sesuai dengan kebutuhan user.  
Tersedia pilihan image berikut yang dapat dipilih sesuai preferensi user:  
 
=== Image Siap Pakai ===
* '''Image siap pakai yang disediakan ALELEON Supercomputer:'''
Image siap pakai yang dapat diakses global oleh semua user. Permohonan menyediakan image hubungi '''support@efisonlt.com'''.
{| class="wikitable mw-collapsible mw-collapsed"
! colspan="7" |''Daftar Image Siap Pakai ALELEON Supercomputer -''
|-
| colspan="7" |Gunakan info ini untuk menjalankan image container.
|-
! rowspan="2" |Nama Image
! colspan="6" |Support Hardware & Platform
|-
!CPU
!GPU
!OMP
!MPI
!Python
!Jupyter
|-
|PyTorch - NVIDIA NGC release 23.08
{| class="wikitable"
!direktori dan nama
|<code>$NVCONT/'''NGC_PyTorch_r23.08.sif'''</code>
|-
!Info detail
|'''[[https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel-23-08.html#rel-23-08 PyTorch r23.08 docs]]'''
|}
|V
|V
|V
|V
|V
|V
|-
|PyTorch - NVIDIA NGC release 24.04
{| class="wikitable"
{| class="wikitable"
|+Daftar Image Siap Pakai
!direktori dan nama
|<code>$NVCONT/'''NGC_PyTorch_r24.04.sif'''</code>
|-
|-
!Nama Image
!Info detail
!Keterangan
|'''[[https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel-24-04.html#rel-24-04 PyTorch r24.04 docs]]'''
|}
|V
|V
|V
|V
|V
|V
|-
|-
|pytorch_23.08-py3.sif
|TensorFlow - NVIDIA NGC release 24.04
| rowspan="2" |[https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch '''Pytorch dari NVIDIA NGC Catalog''']
{| class="wikitable"
!direktori dan nama
|<code>$NVCONT/'''NGC_TensorFlow_r24.04.sif'''</code>
|-
|-
|pytorch_24.04-py3.sif
!Info detail
|'''[[https://docs.nvidia.com/deeplearning/frameworks/tensorflow-release-notes/rel-24-0.html#rel-24-0 TensorFlow r24.04 docs]]'''
|}
|V
|V
|V
|V
|V
|V
|-
|-
|tensorflow_24.04-tf2-py3.sif
|AnteChamber PYthon Parser interfacE (ACPYPE) 2023.10.27
|[https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorflow '''TensorFlow dari NVIDIA NGC Catalog''']
{| class="wikitable"
!direktori dan nama
|<code>$SCONT/'''acpype-2023.10.27.sif'''</code>
|-
|-
|tensorflow2.13_jupyter_cuda.sif
!Info detail
|TensorFlow 2.13 custom dari admin ALELEON
|'''[[https://alanwilter.github.io/acpype/ Official ACYPE doc]]'''
|}
|}
|V
|X
|X
|X
|X
|X
|-
! colspan="7" |---
|}
=== User Melakukan Pull Image ===
User dapat melakukan pull image dari container registry dengan langkah:


* '''User melakukan pull image dari container registry manapun:'''
{| class="wikitable mw-collapsible mw-collapsed"
{| class="wikitable mw-collapsible mw-collapsed"
!Langkah Melakukan Pull Image dengan Apptainer
!''Langkah Pull Image Container dengan Apptainer -''
|-
!
|-
|[[Berkas:Icon apps terminal cropped.png|kiri|nirbing|80x80px]]Menggunakan terminal!
*User web EFIRO buka app '''<code>Aleleon Shell Access</code>'''.
|-
|-
!1
!1
|-
|-
|Masuk ke terminal melalui '''[https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_Terminal#Login_SSH Login SSH]''' atau
|Aktifkan modul Apptainer:
{| class="wikitable"
<code>$ '''ml apptainer'''</code>
|[[Berkas:Pinnedapps terminal.png|nirbing|129x129px]]
|
*[https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_EFIRO#Login_Web_EFIRO '''Login ke web EFIRO'''];
*Buka pinned apps '''<code>Aleleon Shell Access</code>'''
|}Kegiatan ini tidak mengurangi Core Hour user.
|-
|-
!2
!2
|-
|-
|Muat modul Apptainer:
|Lakukan pull dengan format:
<code>$ '''module load apptainer'''</code>
'''- Platform docker'''
$ apptainer pull docker://'''''[image-pull-tag]'''''
'''- Platform shub'''
$ apptainer pull shub://'''''[image-pull-tag]'''''
'''- Platform OCI compatible'''
$ apptainer pull oras://'''''[image-pull-tag]'''''
Contoh pull image '''[[https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch/tags PyTorch 25.01 dari NVIDIA NGC]]''':
 
<code>'''$''' apptainer pull docker://'''nvcr.io/nvidia/pytorch:25.01-py3'''</code>
|-
|-
!3
!3
|-
|-
|Lakukan pull dengan rumus:
|ALELEON membutuhkan '''nama dan direktori file image''' untuk menjalankan image.
<code>$ '''apptainer pull docker://''[image-tag]'''''</code>


Contoh pull imafe [https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorflow/tags TensorFlow 24.01-tf2-py3 dari NVIDIA NGC Catalog]:  
* Mohon user memperhatikan hal tersebut.
|-
!---
|}
'''Note:'''
*User menaruh image di HOME dimana mengkonsumsi storage.
* User dapat berdiskusi dengan tim admin terkait langkah menjalankan container menyesuaikan sistem ALELEON Supercomputer.
== '''Melengkapi Image''' ==
'''''Dalam teknis tertentu dan apabila dibutuhkan''''', user dapat menambah instalasi package pada image dengan jenis:


<code>$ apptainer pull docker://nvcr.io/nvidia/tensorflow:24.04-tf2-py3</code>
{| class="wikitable mw-collapsible mw-collapsed"
|}
!''Menambah Package di Image Berbasis Python -''
|-
|'''Ketentuan:'''
# Image mendukung operasional package Python (conda / pip).
# User tidak dapat instal / hapus package di tingkatan root image.


* '''User membuat image sendiri:'''
Package terisolasi di direktori <code>$HOME/.local</code> dan level versi Python.


{| class="wikitable mw-collapsible mw-collapsed"
* Contoh user menambah package di image dengan Python 3.10.
!Langkah Membuat Image Container dengan Apptainer
* Maka package ini akan aktif di image lain dengan versi Python serupa.
* Akan tetapi tidak aktif di image lain dengan versi Python berbeda.
|-
!
|-
|[[Berkas:Icon apps terminal cropped.png|kiri|nirbing|80x80px]]Menggunakan terminal!
*User web EFIRO buka app '''<code>Aleleon Shell Access</code>'''.
|-
|-
!1
!1
|-
|-
|Masuk ke terminal melalui '''[https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_Terminal#Login_SSH Login SSH]''' atau
|Aktifkan modul Apptainer:
{| class="wikitable"
<code>$ '''ml apptainer'''</code>
|[[Berkas:Pinnedapps terminal.png|nirbing|129x129px]]
|
*[https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_EFIRO#Login_Web_EFIRO '''Login ke web EFIRO'''];
*Buka pinned apps '''<code>Aleleon Shell Access</code>'''
|}Kegiatan ini tidak mengurangi Core Hour user.
|-
|-
!2
!2
|-
|-
|Muat modul Apptainer:
|Jalankan image container dengan perintah:
<code>$ '''module load apptainer'''</code>
<code>$ '''apptainer run ''[direktori-dan-nama-image]''.sif'''</code>
 
Untuk image dengan isi library NVIDIA CUDA, jalankan: 
 
<code>$ '''apptainer run --nv ''[direktori-dan-nama-image]''.sif'''</code>
|-
|-
!3
!3
|-
|-
|Buat sandbox dengan image sif:
|Instal package dengan pip atau conda sesuai ketersediaan.
<code>'''$ apptainer build --sandbox ''[sandbox-dir]'' ''[image-name]''.sif'''</code>
Contoh umum instalasi pip
> pip install '''''[nama-package]'''''
Contoh umum instalasi conda
> conda install conda-forge::'''''[nama-package]'''''
Daftar package dan tutorial instal lihat:
 
* '''[[https://pypi.org/ PyPI The Python Package Index]]'''
* '''[[https://conda-forge.org/packages/ Packages in Conda Forge]]'''
|-
|-
!4
!4
|-
|-
|Jalankan sanbox dengan memperbolehkan modifikasi
|Untuk keluar dari container, jalankan:
'''<code>$ apptainer run --fakeroot --writeable ''[sandbox-dir]''</code>'''
<code>'''> exit'''</code>
|-
|-
!5
!---
|-
|Lakukan modifikasi sesuai keinginan user
Apptainer> ''[command-untuk-modifikasi...]''
Apptainer> '''exit'''
|-
!6
|-
|Bangun image baru dari sandbox tersebut:
<code>'''$ apptainer build ''[image-name]''.sif ''[sandbox-dir]'''''</code>
|}
|}


== '''Instalasi Library Python pada Image Container''' ==
== '''Sebelum Menjalankan Container ...''' ==
User dapat menambah library Python pada image container ''(apabila dibutuhkan)'' dimana terinstal pada HOME user.  
Terdapat beberapa hal yang perlu menjadi pertimbangan user:
 
# Image container '''tidak dapat mengakses''' modul software ALELEON Supercomputer karena berada di "ruang kerja" berbeda.
# '''User yang hendak menjalankan container di GPU''' harap memastikan image dilengkapi dengan library NVIDIA yang sesuai.
# Harap memastikan image telah mempunyai semua kebutuhan package untuk komputasi user.
 
== '''Pilihan Menjalankan Komputasi''' ==
User dapat menjalankan Apptainer dengan pilihan berikut. Sesuaikan dengan peruntukan image.
 
=== Berjalan di Login Node ===
Opsi ini hanya untuk container '''dengan tujuan pre-processing ringan''' karena login node mempunyai spesifikasi terbatas dan tidak ditujukan untuk menjalankan komputasi.  


* Disarankan melakukan instalasi library melalui langkah ini sebelum memulai sesi Jupyter karena tidak menghabiskan Core Hour.
* Opsi ini tidak menggunakan kredit Core Hour.


{| class="wikitable"
{| class="wikitable mw-collapsible mw-collapsed"
!Langkah Instalasi Package ke Image Container
!''Menjalankan Apptainer di Login Node''
[[Berkas:Sbatch terminal display rev2.png|tepi|400x400px]]
|-
!
|-
| Lakukan [https: / wiki.efisonlt.com wiki Menggunakan_ALELEON_Supercomputer_via_Terminal#1_ |[[Berkas:Icon apps terminal cropped.png|kiri|nirbing|80x80px]]Menggunakan terminal!
*User web EFIRO buka app '''<code>Aleleon Shell Access</code>'''.
|-
|-
!1
!1
|-
|-
|Masuk ke terminal melalui '''[https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_Terminal#Login_SSH Login SSH]''' atau
|Aktifkan modul Apptainer:
{| class="wikitable"
<code>$ '''ml apptainer'''</code>
|[[Berkas:Pinnedapps terminal.png|nirbing|129x129px]]
|
*[https://wiki.efisonlt.com/wiki/Menggunakan_ALELEON_Supercomputer_via_EFIRO#Login_Web_EFIRO '''Login ke web EFIRO'''];
*Buka pinned apps '''<code>Aleleon Shell Access</code>'''
|}Kegiatan ini tidak mengurangi Core Hour user.
|-
|-
!2
!2
|-
|-
|Muat modul Apptainer:
|Jalankan image container dengan perintah:
<code>$ '''module load apptainer'''</code>
<code>$ '''apptainer run ''[direktori-dan-nama-image]''.sif'''</code>
|-
|-
!3
!3
|-
|-
|Muat image container dengan rumus:  
|Untuk keluar dari container, jalankan:  
<code>$ '''apptainer run ''[alamat-direktori-dan-nama-image].sif'''''</code>
<code>'''> exit'''</code>
|-
!---
|}


Apabila butuh GPU NVIDIA saat instalasi package, tambahkan flag --nv:
=== Sesi Jupyter ===
Menjalankan sesi interaktif Jupyter Lab atau Notebook di '''[<nowiki/>[[Spesifikasi ALELEON Supercomputer#Spesifikasi%20Interactive%20Node|interactive node]]].'''


<code>$ '''apptainer run --nv ''[alamat-direktori-dan-nama-image].sif'''''</code>
* Perhatikan image container harus mempunyai '''package Jupyter''' di dalamnya.
|-
!
|-
|Untuk image global dari ALELEON, direktori dan nama image adalah:
<code>'''/comp/containers/nvidia/''[nama-image]''.sif'''</code>


Contoh:<code>/comp/containers/nvidia/pytorch_23.08-py3.sif</code>
{| class="wikitable mw-collapsible mw-collapsed"
|-
!''Langkah Sesi Jupyter dengan Apptainer''
!4
[[Berkas:Efiro jupyter display.png|400x400px]]
|-
|Lakukan instalasi library dengan '''pip'''
<code>'''$ pip install ''[nama-package]'''''</code>
|}
 
== '''Sesi Jupyter dengan Container''' ==
{| class="wikitable"
!Langkah Interactive Job Sesi Jupyter dengan Container
[[Berkas:Efirojupyterlab.png|400x400px]]
|-
|-
!1
!1
Baris 171: Baris 253:
|-
|-
|Isi formulir untuk memulai sesi Jupyter dengan panduan berikut:
|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
{| class="wikitable"
{| class="wikitable"
! rowspan="2" |Formulir alokasi komputasi
!<code>''Choose Jupyter version''</code>
! colspan="2" |Partition
|-
|Pilih sesuai preferensi user, <code>Jupyter Lab</code> atau <code>Notebook</code>
|-
!
|-
!''<code>Partition</code>''
|-
|Pilih sesuai kebutuhan:
*<code>torti</code> -> interactive node CPU
*<code>tilla</code> -> interactive node GPU
|-
!
|-
!<code>''Number of CPU thread(s)''</code>
|-
|Alokasi core CPU, range <code>2 - 32</code> untuk torti dan tilla.
|-
!
|-
!<code>''Amount of memory/RAM (GB)''</code>
|-
|Alokasi RAM dalam satuan GB, range <code>1 - 64</code> untuk torti dan tilla.
|-
!
|-
!''<code>Number of GPUs</code>''
|-
|Jumlah GPU, isi angka <code>1</code> apabila pakai tilla
|-
!
|-
!''<code>Number of hours</code>''
|-
|Waktu maksimal sesi Jupyter, range <code>1 - 72</code> untuk torti dan tilla'''.'''
|-
!
|-
|'''Form CPU, RAM, GPU, dan hours mempunyai limit''' berdasarkan:
*Sisa Core Hour user dan [[Limitasi Fair Usage ALELEON Supercomputer|'''Fair Usage Limit''']].
*Spesifikasi sistem dan software komputasi.
Langkah melihat limit:
*Buka menu '''Clusters > Aleleon Shell Access'''
[[Berkas:Shellaccess.png|nirbing|200x200px]]
*Jalankan perintah ''(sementara gunakan)'':
'''$ slimit-python'''
|-
!
|-
!''<code>Choose how to launch Jupyter</code>''
|-
|Pilih sesuai keinginan:
 
*<code>Container</code> -> menggunakan image siap pakai dari ALELEON.
*<code>Custom container</code> -> menggunakan image yang dipull / buat user.
 
Diikuti dengan pilih image atau menyediakan direktori & nama image user.
|-
!
|-
!''<code>Software Modules</code>''
|-
|Kosongkan karena image container tidak dapat mengakses modul software.
|-
!
|-
|-
!torti
!''<code>Environment setup</code>''
!tilla
|-
|-
|Number of CPU core(s)
|Memuat environment variable, ''isi apabila ada''.
| colspan="2" |1 - 32
|-
|-
|Amount of memory/RAM (GB)
!
| colspan="2" |1 - 64
|-
|-
|Number of GPUs
!''<code>Additional Jupyter arguments</code>''
| -
|1
|-
|-
|Number of hours
|Memuat argumen tambahan Jupyter, ''isi apabila ada''.
| colspan="2" |1 - 72
|-
|-
| colspan="3" |'''Pada akun perseorangan, sesi Jupyter tidak akan berjalan apabila:'''
!
*Alokasi CPU * hours > sisa CPU Core Hour
|-
*Alokasi GPU * hours > sisa GPU Hour apabila memilih '''tilla'''.
!''<code>Email address</code>''
Cek sisa Core Hour dengan:
|-
#Buka menu '''<code>Clusters</code>''' '''->''' '''<code>ALELEON Shell Access</code>'''
|Notifikasi email untuk status mulai dan selesainya Jupyter.
#Jalankan perintah
*''Isi apabila berkenan.''
$ '''sausage'''
|}
|}
*'''Choose how to launch Jupyter''' -> ''silahkan pilih:''
*
**'''Container''' -> menggunakan image siap pakai dari ALELEON
**'''Custom container''' -> menggunakan image yang dipull / buat user
*'''''Pilih image atau menyediakan direktori & nama image user'''''
*'''Software modules''' -> ''kosongkan''
 
*'''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.''
|-
|-
!4
!5
|-
|-
|Klik tombol '''<code>Launch</code>''' untuk memulai sesi Jupyter.
|Klik tombol '''<code>Launch</code>''' untuk memulai sesi Jupyter.
*User akan diarahkan ke halaman '''<code>My Interactive Sessions</code>'''.
*User akan diarahkan ke halaman '''<code>My Interactive Sessions</code>'''.
*Tunggu hingga sesi Jupyter siap diakses.
*Tunggu hingga sesi Jupyter siap diakses.
[[Berkas:Jupyternotebookqueue.png|nir|jmpl|''Status sesi Jupyter mengantri menunggu alokasi hardware'']]
[[Berkas:Jupyternotebookqueue.png|nirbing|500x500px]]
|-
|-
!5
!6
|-
|-
|Apabila status '''Running''', klik tombol '''<code>Connect to Jupyter</code>'''.
|Apabila status '''Running''', klik tombol '''<code>Connect to Jupyter</code>'''.
*Sistem mulai menghitung Core Hour!
*Sistem mulai menghitung Core Hour!
[[Berkas:Newjupyter120124.png|nir|jmpl|''Sesi Jupyter siap diakses.'']]Untuk menghentikan sesi, klik tombol '''<code>Cancel</code>'''.
*Untuk menghentikan sesi yang sedang running, klik tombol '''<code>Cancel</code>'''
[[Berkas:Newjupyter120124.png|nirbing|500x500px]]
|-
|-
!6
!7
|-
|-
|Pilih Notebook Python 3 untuk memulai sesi notebook Python 3.[[Berkas:Jupyternotebookkernelupdated.png|al=|nir|jmpl|200x200px|''Gunakan Notebook Python 3 untuk menjalankan kernel conda env user di Jupyter Notebook'']][[Berkas:Rjupyterlab.png|nir|jmpl|225x225px|''Gunakan Notebook Python 3 untuk menjalankan kernel conda env user di Jupyter Lab'']]
|Pilih Notebook Python 3 untuk memulai sesi notebook Python 3.[[Berkas:Jupyternotebookkernelupdated.png|al=|nir|jmpl|200x200px|''Gunakan Notebook Python 3 untuk menjalankan kernel conda env user di Jupyter Notebook'']][[Berkas:Rjupyterlab.png|nir|jmpl|225x225px|''Gunakan Notebook Python 3 untuk menjalankan kernel conda env user di Jupyter Lab'']]
|-
|-
!7
!8
|-
|-
|User dapat mengunjungi sesi Jupyter yang sedang berjalan pada:
|User dapat mengunjungi sesi Jupyter yang sedang berjalan pada:
*Menu '''<code>My Interactive Sessions</code>''' pada homepage EFIRO.
*Menu '''<code>My Interactive Sessions</code>''' pada homepage EFIRO.
*Kolom '''<code>Active interactive sessions</code>''' pada homepage EFIRO.
*Kolom '''<code>Active interactive sessions</code>''' pada homepage EFIRO.
|-
!---
|}
=== Batch Job ===
Menjalankan container siap jalan melalui manajemen Slurm di '''[<nowiki/>[[Spesifikasi ALELEON Supercomputer#Spesifikasi%20Compute%20Node|compute node]]]''' kemudian user menunggu hingga selesai. '''Catatan:'''
*Untuk komputasi Python: opsi ini hanya dapat menjalankan file Python (<code>'''.py'''</code>) siap jalan tanpa interaksi user.
*Perhatikan ada kemungkinan tidak semua image container dapat berjalan dengan opsi ini.
{| class="wikitable mw-collapsible mw-collapsed"
!''Langkah Batch Job Apptainer di Terminal''
[[Berkas:Sbatch terminal display rev2.png|tepi|400x400px]]
|-
!
|-
| Lakukan [https: / wiki.efisonlt.com wiki Menggunakan_ALELEON_Supercomputer_via_Terminal#1_ |[[Berkas:Icon apps terminal cropped.png|kiri|nirbing|80x80px]]Menggunakan terminal!
*User web EFIRO buka app '''<code>Aleleon Shell Access</code>'''.
|-
!1
|-
|Siapkan image container dan file komputasi yang dibutuhkan.
*User dapat upload / download file dengan [[Upload File dengan Aplikasi FTP|'''software FTP''']].
*User web EFIRO juga dapat gunakan app '''<code>Home Directory</code>'''
|-
!2A
|-
|Buat '''Submit Script''' yaitu 'formulir' untuk menjalankan job komputasi.
*Nama file bebas dengan format .'''<code>sh</code>''', contoh '''<code>submit.sh</code>'''
|-
!
|-
|Contoh template Submit Script
*Ikuti petunjuk '''NOTES dan alur script''' di dalamnya.
''<small><code>Klik expand / kembangkan</code></small>''
{| class="wikitable mw-collapsible mw-collapsed"
!Template submit script Apptainer versi CPU -
|-
|<syntaxhighlight lang="bash" line="1">
#!/bin/bash
# -----------------------------------------------------
# Template SLURM Submit Script
# Container Apptainer (CPU) | rev.010225
#
# NOTES:
# 1. Isi bagian yang ditandai 4 garing (////).
# 2. Template ini bersifat referensi.
#    User dapat mengubah bagian yang perlu diubah.
# -----------------------------------------------------
# -----------------------------------------------------
# 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
# Input direktori dan nama image container
IMAGE="////.sif"
# ----------------------------------------------------
# Script jalannya program
# ----------------------------------------------------
# Memuat modul Apptainer
module load apptainer
# Menjalankan image container
# Masukkan command untuk menjalankan program komputasi
apptainer exec ${IMAGE} ////
</syntaxhighlight>
|}
|-
|
{| class="wikitable mw-collapsible mw-collapsed"
!Template submit script Apptainer versi GPU -
|-
|<syntaxhighlight lang="bash" line="1">
#!/bin/bash
# -----------------------------------------------------
# Template SLURM Submit Script
# Container Apptainer (GPU) | rev.010225
#
# NOTES:
# 1. Isi bagian yang ditandai 4 garing (////).
# 2. Template ini bersifat referensi.
#    User dapat mengubah bagian yang perlu diubah.
# -----------------------------------------------------
# -----------------------------------------------------
# Alokasi komputasi SBATCH dan file input
# -----------------------------------------------------
# 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
# Input direktori dan nama image container
IMAGE="////.sif"
# ----------------------------------------------------
# Script jalannya program
# ----------------------------------------------------
# Memuat modul Apptainer
module load apptainer
# Menjalankan image container
# Masukkan command untuk menjalankan program komputasi
apptainer exec ${IMAGE} ////
</syntaxhighlight>
|}
|-
|
*''<small>Info script lebih detail lihat [[Submit Script ALELEON Supercomputer|'''Submit Script ALELEON Supercomputer''']].</small>''
*''<small>Untuk SBATCH notifikasi email status jalannya job lihat [https://wiki.efisonlt.com/wiki/Submit_Script_ALELEON_Supercomputer#SBATCH_untuk_notifikasi_email_SLURM '''Slurm Jojo'''].</small>''
|-
!2B
|-
|'''SBATCH komputasi (ntasks, mem, time, dll) mempunyai limit''' berdasarkan:
*Sisa Core Hour user dan [[Limitasi Fair Usage ALELEON Supercomputer|'''Fair Usage Limit''']].
*Spesifikasi sistem dan software komputasi.
Untuk melihat limit, jalankan perintah ''(sementara gunakan)'':
'''$ slimit-python'''
|-
!3
|-
|Jalankan job komputasi dengan perintah:
$ '''sbatch ''[nama-submit-script]'''''
<small>''Contoh:''
$ sbatch submit.sh</small>
|-
!4
|-
|User dapat melihat status jalannya job dengan perintah:
'''<code>$ squeue -ul $USER</code>'''
{| class="wikitable"
! colspan="2" |''Kolom ST atau STATE menunjukkan status jalannya job.''
|-
!STATE
!Penjelasan
|-
|R (RUN)
|Job berjalan
|-
|PD (PENDING)
|Job tertahan, lihat [[Daftar Reason NODELIST ALELEON Supercomputer|'''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]'''''
<small>''Job ID ada pada squeue diatas.''
contoh membatalkan job ID 231:
$ scancel 231</small>
|-
!---
|}
|}
=='''Pelaporan Kendala dan Support'''==
=='''Pelaporan Kendala dan Support'''==

Revisi terkini sejak 20 Maret 2025 09.08

Logo Apptainer ALELEON tp.png

Halaman ini menjelaskan langkah menjalankan komputasi di ALELEON Supercomputer dengan image container melalui platform [Apptainer]. ALELEON Supercomputer dapat menyediakan dan menjalankan image container untuk komputasi berbagai bidang.

Langkah Menjalankan Komputasi

Terdapat 2 langkah utama:

  1. Memilih image container yang digunakan.
  2. Melengkapi (apabila dibutuhkan) dan menjalankan image container sesuai ketentuannya.

Pilihan Image Container

Tersedia pilihan image berikut yang dapat dipilih sesuai preferensi user:

Image Siap Pakai

Image siap pakai yang dapat diakses global oleh semua user. Permohonan menyediakan image hubungi support@efisonlt.com.

Daftar Image Siap Pakai ALELEON Supercomputer -
Gunakan info ini untuk menjalankan image container.
Nama Image Support Hardware & Platform
CPU GPU OMP MPI Python Jupyter
PyTorch - NVIDIA NGC release 23.08
direktori dan nama $NVCONT/NGC_PyTorch_r23.08.sif
Info detail [PyTorch r23.08 docs]
V V V V V V
PyTorch - NVIDIA NGC release 24.04
direktori dan nama $NVCONT/NGC_PyTorch_r24.04.sif
Info detail [PyTorch r24.04 docs]
V V V V V V
TensorFlow - NVIDIA NGC release 24.04
direktori dan nama $NVCONT/NGC_TensorFlow_r24.04.sif
Info detail [TensorFlow r24.04 docs]
V V V V V V
AnteChamber PYthon Parser interfacE (ACPYPE) 2023.10.27
direktori dan nama $SCONT/acpype-2023.10.27.sif
Info detail [Official ACYPE doc]
V X X X X X
---

User Melakukan Pull Image

User dapat melakukan pull image dari container registry dengan langkah:

Langkah Pull Image Container dengan Apptainer -
Icon apps terminal cropped.png
Menggunakan terminal!
  • User web EFIRO buka app Aleleon Shell Access.
1
Aktifkan modul Apptainer:

$ ml apptainer

2
Lakukan pull dengan format:
- Platform docker
$ apptainer pull docker://[image-pull-tag]

- Platform shub
$ apptainer pull shub://[image-pull-tag]

- Platform OCI compatible
$ apptainer pull oras://[image-pull-tag]

Contoh pull image [PyTorch 25.01 dari NVIDIA NGC]:

$ apptainer pull docker://nvcr.io/nvidia/pytorch:25.01-py3

3
ALELEON membutuhkan nama dan direktori file image untuk menjalankan image.
  • Mohon user memperhatikan hal tersebut.
---

Note:

  • User menaruh image di HOME dimana mengkonsumsi storage.
  • User dapat berdiskusi dengan tim admin terkait langkah menjalankan container menyesuaikan sistem ALELEON Supercomputer.

Melengkapi Image

Dalam teknis tertentu dan apabila dibutuhkan, user dapat menambah instalasi package pada image dengan jenis:

Menambah Package di Image Berbasis Python -
Ketentuan:
  1. Image mendukung operasional package Python (conda / pip).
  2. User tidak dapat instal / hapus package di tingkatan root image.

Package terisolasi di direktori $HOME/.local dan level versi Python.

  • Contoh user menambah package di image dengan Python 3.10.
  • Maka package ini akan aktif di image lain dengan versi Python serupa.
  • Akan tetapi tidak aktif di image lain dengan versi Python berbeda.
Icon apps terminal cropped.png
Menggunakan terminal!
  • User web EFIRO buka app Aleleon Shell Access.
1
Aktifkan modul Apptainer:

$ ml apptainer

2
Jalankan image container dengan perintah:

$ apptainer run [direktori-dan-nama-image].sif

Untuk image dengan isi library NVIDIA CUDA, jalankan:

$ apptainer run --nv [direktori-dan-nama-image].sif

3
Instal package dengan pip atau conda sesuai ketersediaan.
Contoh umum instalasi pip
> pip install [nama-package]

Contoh umum instalasi conda
> conda install conda-forge::[nama-package]

Daftar package dan tutorial instal lihat:

4
Untuk keluar dari container, jalankan:

> exit

---

Sebelum Menjalankan Container ...

Terdapat beberapa hal yang perlu menjadi pertimbangan user:

  1. Image container tidak dapat mengakses modul software ALELEON Supercomputer karena berada di "ruang kerja" berbeda.
  2. User yang hendak menjalankan container di GPU harap memastikan image dilengkapi dengan library NVIDIA yang sesuai.
  3. Harap memastikan image telah mempunyai semua kebutuhan package untuk komputasi user.

Pilihan Menjalankan Komputasi

User dapat menjalankan Apptainer dengan pilihan berikut. Sesuaikan dengan peruntukan image.

Berjalan di Login Node

Opsi ini hanya untuk container dengan tujuan pre-processing ringan karena login node mempunyai spesifikasi terbatas dan tidak ditujukan untuk menjalankan komputasi.

  • Opsi ini tidak menggunakan kredit Core Hour.
Menjalankan Apptainer di Login Node

Sbatch terminal display rev2.png

Icon apps terminal cropped.png
Menggunakan terminal!
  • User web EFIRO buka app Aleleon Shell Access.
1
Aktifkan modul Apptainer:

$ ml apptainer

2
Jalankan image container dengan perintah:

$ apptainer run [direktori-dan-nama-image].sif

3
Untuk keluar dari container, jalankan:

> exit

---

Sesi Jupyter

Menjalankan sesi interaktif Jupyter Lab atau Notebook di [interactive node].

  • Perhatikan image container harus mempunyai package Jupyter di dalamnya.
Langkah Sesi Jupyter dengan Apptainer

Efiro jupyter display.png

1
Login ke web EFIRO ALELEON Supercomputer.
2
New Pinnedapps jupyter.png Buka pinned apps Jupyter di homepage EFIRO.
3
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 -> interactive node CPU
  • tilla -> interactive node GPU
Number of CPU thread(s)
Alokasi core CPU, range 2 - 32 untuk torti dan tilla.
Amount of memory/RAM (GB)
Alokasi RAM dalam satuan GB, range 1 - 64 untuk torti dan tilla.
Number of GPUs
Jumlah GPU, isi angka 1 apabila pakai tilla
Number of hours
Waktu maksimal sesi Jupyter, range 1 - 72 untuk torti dan tilla.
Form CPU, RAM, GPU, dan hours 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 (sementara gunakan):
$ slimit-python
Choose how to launch Jupyter
Pilih sesuai keinginan:
  • Container -> menggunakan image siap pakai dari ALELEON.
  • Custom container -> menggunakan image yang dipull / buat user.

Diikuti dengan pilih image atau menyediakan direktori & nama image user.

Software Modules
Kosongkan karena image container tidak dapat mengakses modul software.
Environment setup
Memuat environment variable, isi apabila ada.
Additional Jupyter arguments
Memuat argumen tambahan Jupyter, isi apabila ada.
Email address
Notifikasi email untuk status mulai dan selesainya 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.
---

Batch Job

Menjalankan container siap jalan melalui manajemen Slurm di [compute node] kemudian user menunggu hingga selesai. Catatan:

  • Untuk komputasi Python: opsi ini hanya dapat menjalankan file Python (.py) siap jalan tanpa interaksi user.
  • Perhatikan ada kemungkinan tidak semua image container dapat berjalan dengan opsi ini.
Langkah Batch Job Apptainer di Terminal

Sbatch terminal display rev2.png

Icon apps terminal cropped.png
Menggunakan terminal!
  • User web EFIRO buka app Aleleon Shell Access.
1
Siapkan image container dan file komputasi yang dibutuhkan.
  • User dapat upload / download file dengan software FTP.
  • User web EFIRO juga dapat gunakan app Home Directory
2A
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 dan alur script di dalamnya.

Klik expand / kembangkan

Template submit script Apptainer versi CPU -
#!/bin/bash

# -----------------------------------------------------
# Template SLURM Submit Script
# Container Apptainer (CPU) | rev.010225
#
# NOTES:
# 1. Isi bagian yang ditandai 4 garing (////).
# 2. Template ini bersifat referensi.
#    User dapat mengubah bagian yang perlu diubah.
# -----------------------------------------------------

# -----------------------------------------------------
# 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

# Input direktori dan nama image container
IMAGE="////.sif"

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

# Memuat modul Apptainer
module load apptainer

# Menjalankan image container
# Masukkan command untuk menjalankan program komputasi
apptainer exec ${IMAGE} ////
Template submit script Apptainer versi GPU -
#!/bin/bash

# -----------------------------------------------------
# Template SLURM Submit Script
# Container Apptainer (GPU) | rev.010225
#
# NOTES:
# 1. Isi bagian yang ditandai 4 garing (////).
# 2. Template ini bersifat referensi.
#    User dapat mengubah bagian yang perlu diubah.
# -----------------------------------------------------

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

# 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

# Input direktori dan nama image container
IMAGE="////.sif"

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

# Memuat modul Apptainer
module load apptainer

# Menjalankan image container
# Masukkan command untuk menjalankan program komputasi
apptainer exec ${IMAGE} ////
2B
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 (sementara gunakan):

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

Contoh:
$ sbatch submit.sh
4
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
---

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