Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

under construction

แนะนำการทำงานกับ Python ในสองลักษณะ คือ

Table of Contents
minLevel1
maxLevel7

1. Module Load Python + Virtual Environment (source activate)

ค้นหา software module ที่ต้องการ

ซึ่งโดยปกติเราจะเช็คว่าระบบฯ มีซอฟต์แวร์เวอร์ชั่นใดติดตั้งไว้บ้างด้วยคำสั่ง module avail ตามด้วยชื่อซอฟต์แวร์ ซึ่งในกรณีนี้คือ Python ดังนั้นใช้คำสั่ง module avail Python หรือ ml av Python

[

apiapiap@tara

username@tara-frontend-1 ~]$ module avail Python

------------------------------------------ /tarafs/utils/modules/modules/all ------------------------------------------

   LAMMPS/3Mar2020-foss-2019b-Python-3.7.4-kokkos        Trinity/2.9.1-foss-2019b-Python-3.7.4

   PLUMED/2.5.3-foss-2019b-Python-3.7.4                  Unicycler/0.4.8-foss-2019b-Python-3.7.4

   Python/2.7.16-GCCcore-8.3.0                           archspec/0.1.0-GCCcore-8.3.0-Python-3.7.4

   Python/2.7.18-GCCcore-10.2.0                          h5py/2.10.0-foss-2019b-Python-3.7.4

   Python/3.7.4-GCCcore-8.3.0                            matplotlib/3.1.1-foss-2019b-Python-3.7.4

   Python/3.8.6-GCCcore-10.2.0                          molmod/1.4.5-foss-2019b-Python-3.7.4

   Python/3.9.5-GCCcore-10.3.0                (D)    pkgconfig/1.5.1-GCCcore-8.3.0-Python-3.7.4

   SciPy-bundle/2019.10-foss-2019b-Python-3.7.4          yaff/1.6.0-foss-2019b-Python-3.7.4

  Where:

   D:  Default Module

Use "module spider" to find all possible modules.

Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".

เรียกใช้ module Python เวอร์ชั่นที่ต้องการ

จากรายการของซอฟต์แวร์ที่แสดงให้เห็นในข้อก่อนหน้า เราสามารถคัดลอกรายการที่ต้องการแล้วเรียกใช้ซอฟต์แวร์นั้นด้วยคำสั่ง module load ตามด้วยรายการที่เราคัดลอกไว้ เช่น Python/3.7.4-GCCcore-8.3.0 

[

apiapiap@tara

username@tara-frontend-1 ~]$ module load Python/3.7.4-GCCcore-8.3.0

[

apiapiap@tara

username@tara-frontend-1 ~]$ ml

Currently Loaded Modules:

1)GCCcore/8.3.0                     5) ncurses/6.1-GCCcore-8.3.0     (H)   9) XZ/5.2.4-GCCcore-8.3.0

2)zlib/1.2.11-GCCcore-8.3.0   (H)   6) libreadline/8.0-GCCcore-8.3.0 (H)  10) GMP/6.1.2-GCCcore-8.3.0

3)binutils/2.32-GCCcore-8.3.0       7) Tcl/8.6.9-GCCcore-8.3.0            11) libffi/3.2.1-GCCcore-8.3.0 (H)

4)bzip2/1.0.8-GCCcore-8.3.0         8) SQLite/3.29.0-GCCcore-8.3.0        12) Python/3.7.4-GCCcore-8.3.0

  Where:

   H:  Hidden Module

Note

ข้อผิดพลาดที่พบบ่อย – คือการลืม module load Python และซอฟต์แวร์อื่น ๆ ที่จำเป็นก่อนสั่งรันงาน

สร้างและเริ่มการใช้งาน virtual environment

ในพื้นที่โปรเจคที่เราต้องการ เช่น โปรเจคอยู่ภายใต้โฟล์ดเดอร์ /tarafs/data/project/thaisc/apiapiapusername/ai/ สามารถสร้าง virtual environment folder ที่มีชื่อว่า venv ด้วยคำสั่ง

Code Block
virtualenv venv

แล้วจึงทำการ activate environment หรือเริ่มใช้งาน virtual environment ด้วยคำสั่ง

Code Block
source venv/bin/activate

ดังแสดงในตัวอย่างด้านล่างนี้

[

apiapiap@tara

username@tara-frontend-1 ai]$ virtualenv venv

Using base prefix '/tarafs/utils/modules/software/Python/3.7.4-GCCcore-8.3.0'
New python executable in /tarafs/data/project/thaisc/

apiapiap

username/ai/venv/bin/python
Installing setuptools, pip, wheel...
done.

[

apiapiap@tara

username@tara-frontend-1 ai]$ source venv/bin/activate

(venv) [

apiapiap@tara

username@tara-frontend-1 ai]$ pwd

/tarafs/data/project/thaisc/

apiapiap

username/ai

(venv) [

apiapiap@tara

username@tara-frontend-1 ai]$ ls

venv

(venv) [

apiapiap@tara

username@tara-frontend-1 ai]$ pip list

Package    Version
---------- -------
pip        21.2.4
setuptools 57.4.0
wheel      0.37.0

ข้อสังเกตคือเมื่อได้ทำการเริ่มใช้งาน หรือ activate virtual environment แล้ว ท่านจะสามารถสังเกตได้ว่ามีชื่อ folder ของ virtual environment ที่ได้ทำการสร้างไว้แสดงให้เห็นด้านหน้า

(venv) [apiapiap@tarausername@tara-frontend-1 ai]$

หรือ หากลองสร้าง virtual environment ด้วยชื่ออื่น ๆ เช่น ใช้ชื่อว่า myenvironment

[apiapiap@tarausername@tara-frontend-1 test_venv_name]$ virtualenv myenvironment

Using base prefix '/tarafs/utils/modules/software/Python/3.7.4-GCCcore-8.3.0'

New python executable in /tarafs/data/project/thaisc/apiapiapusername/ai/test_venv_name/myenvironment/bin/python

Installing setuptools, pip, wheel...

done.

[apiapiap@tarausername@tara-frontend-1 test_venv_name]$ ls

myenvironment

[apiapiap@tarausername@tara-frontend-1 test_venv_name]$ source myenvironment/bin/activate

(myenvironment) [apiapiap@tarausername@tara-frontend-1 test_venv_name]$ 

ติดตั้ง Python package ด้วย pip install

Code Block
pip install <packagename>

(venv) [

apiapiap@tara

username@tara-frontend-1 ai]$ pip3 install torch torchvision torchaudio

Collecting torch

  Downloading torch-1.9.0-cp37-cp37m-manylinux1_x86_64.whl (831.4 MB)

     |████████████████████████████████| 831.4 MB 11 kB/s 

Collecting torchvision

 …

Installing collected packages: typing-extensions, torch, pillow, numpy, torchvision, torchaudio

Successfully installed numpy-1.21.2 pillow-8.3.1 torch-1.9.0 torchaudio-0.9.0 torchvision-0.10.0 typing-extensions-3.10.0.0

(venv) [

apiapiap@tara

username@tara-frontend-1 ai]$ pip list

Package           Version
----------------- --------
numpy             1.21.2
Pillow            8.3.1
pip               21.2.4
setuptools        57.4.0
torch             1.9.0
torchaudio        0.9.0
torchvision       0.10.0
typing-extensions 3.10.0.0
wheel             0.37.0

(venv) [

apiapiap@tara

username@tara-frontend-1 ai]$ pip freeze > requirement.txt

(venv) [

apiapiap@tara

username@tara-frontend-1 ai]$ cat requirement.txt 

numpy==1.21.2
Pillow==8.3.1
torch==1.9.0
torchaudio==0.9.0
torchvision==0.10.0
typing-extensions==3.10.0.0

(venv) [

apiapiap@tara

username@tara-frontend-1 ai]$

Basic

...

Slurm job submission script - virtualenv

#!/bin/bash

#SBATCH -p compute #HPC-partition
#SBATCH -N 1 -c 10 #number-of-node, number-of-core
#SBATCH -t 01:00:00 #time-to-use
#SBATCH -J jupyter #job-name
#SBATCH -A proj9999 #project-account

module load purge
module load Python
source <fullpath-to-your-environment>/venv/bin/activate

python basic.py

deactivate

สมมุติว่างานที่ต้องการรันคือ basic.py และเราสร้าง slurm script ขึ้นมาดังแสดงข้างต้นตั้งชื่อว่า basic.sh ตอนนี้เราก็พร้อมที่จะ submit job เข้าสู่ Slurm scheduler แล้วด้วยคำสั่ง

Code Block
$ sbatch basic.sh

ออกจาก virtual environment

เมื่อท่านได้ใช้งาน เช่น ติดตั้งซอฟต์แวร์เพิ่มเติมใน virtual environment เรียบร้อยแล้ว และต้องการออกจาก virtual environment นี้เพื่อทำงานอื่นต่อไปในระบบ HPC ท่านสามารถยกเลิกการใช้งาน virtual environment ได้ด้วยคำสั่ง deactivate ในขณะที่กำลังใช้งาน virtual environment

(venv) [

apiapiap@tara

username@tara-frontend-1 ai]$ deactivate

[

apiapiap@tara

username@tara-frontend-1 ai]$ ls

requirement.txt  venv

ใครควรใช้ option นี้

ผู้ใช้ Python ทั่วไปบน partition แบบ compute, memory และ gpu แต่ไม่เหมาะสมกับผู้ใช้งานที่ต้องการรันงานบน partition dgx เนื่องจากมีการติดตั้งซอฟต์แวร์หลักคนละชุดกัน โดยแนะนำให้ใช้ Singularity container ในการรันบน dgx ซึ่งจะอธิบายในบทถัดไป

...

2. Module Load Singularity + Singularity container

ThaiSC ขอแนะนำให้ท่านใช้ Singularity container สำหรับการทำงานด้วย Python กับ DGX node

เพื่อเริ่มเตรียม Singularity container, อ่านที่นี่

Singularity module

เมื่อท่านมี Singularity container เช่น my.sif ที่ได้ติดตั้ง requirement.txt หรือซอฟต์แวร์ที่ท่านต้องการใช้งานเสร็จสิ้นแล้ว ท่านสามารถเรียกใช้โมดูล Singularity บนระบบ HPC ได้ดังตัวอย่างด้านล่าง

[

apiapiap@tara

username@tara-frontend-1

apiapiap

username]$ ml av singularity

---------------------------------- /tarafs/utils/modules/modules/all -----------------------------------

   Singularity/3.3.0    Singularity/3.4.2 (D)

  Where:

   D:  Default Module

Use "module spider" to find all possible modules.

Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".

[

apiapiap@tara

username@tara-frontend-1

apiapiap

username]$ module load Singularity

[

apiapiap@tara

username@tara-frontend-1

apiapiap

username]$ ml

Currently Loaded Modules:

1)Singularity/3.4.2

Basic

...

Slurm job submission script - Singularity

syntax ของ slurm script ในการ submit job และเริ่มใช้งาน Singularity container (big grin)

#!/bin/bash

#SBATCH -p dgx #HPC-partition
#SBATCH -N 1 #number-of-node
#SBATCH -t 01:00:00 #time-to-use
#SBATCH -J jupyter #job-name
#SBATCH -A proj9999 #project-account

module purge
module load Singularity
Singularity exec --nv my.sif python basic.py

...

Note

อย่าลืมใส่ “--nv” เพราะถ้าไม่มี --nv จะไม่มีการเรียกใช้งาน GPUs

ใครควรใช้ option นี้

ผู้ใช้ Python ทั่วไปบน partition แบบ gpu และ dgx ซึ่งการ control environment ภายใน container สามารถทำได้โดยผู้ใช้ได้อย่างครบถ้วนก่อนนำเข้าสู่ HPC cluster

Related articles

Filter by label (Content by label)
showLabelsfalse
max5
spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@48ae393
sortmodified
showSpacefalse
reversetrue
typepage
cqllabel in ( "python" , "singularity" , "virtualenv" ) and space = currentSpace ( )
labelssingularity python container