...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
under construction
แนะนำการทำงานกับ Python ในสองลักษณะ คือ
Table of Contents | ||||
---|---|---|---|---|
|
Module Python + Virtual Environment (source activate)
ค้นหา software module ที่ต้องการ
ซึ่งโดยปกติเราจะเช็คว่าระบบฯ มีซอฟแวร์เวอร์ชั่นใดติดตั้งไว้บ้างด้วยคำสั่ง module avail
ตามด้วยชื่อซอฟต์แวร์ ซึ่งในกรณีนี้คือ Python ดังนั้นใช้คำสั่ง module avail Python
หรือ ml av Python
[apiyatum@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 ในสองลักษณะ คือ
Table of Contents | ||||
---|---|---|---|---|
|
1. Module Load Python + Virtual Environment (source activate)
ค้นหา software module ที่ต้องการ
ซึ่งโดยปกติเราจะเช็คว่าระบบฯ มีซอฟต์แวร์เวอร์ชั่นใดติดตั้งไว้บ้างด้วยคำสั่ง module avail
ตามด้วยชื่อซอฟต์แวร์ ซึ่งในกรณีนี้คือ Python ดังนั้นใช้คำสั่ง module avail Python
หรือ ml av Python
[username@tara-frontend-1 ~]$ ------------------------------------------ /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
[username@tara-frontend-1 ~]$ [username@tara-frontend-1 ~]$ 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 |
---|
ข้อผิดพลาดที่พบบ่อย – คือการลืม |
สร้างและเริ่มการใช้งาน virtual environment
ในพื้นที่โปรเจคที่เราต้องการ เช่น โปรเจคอยู่ภายใต้โฟล์ดเดอร์ /tarafs/data/project/thaisc/username/ai/ สามารถสร้าง virtual environment folder ที่มีชื่อว่า venv ด้วยคำสั่ง
Code Block |
---|
virtualenv venv |
แล้วจึงทำการ activate environment หรือเริ่มใช้งาน virtual environment ด้วยคำสั่ง
Code Block |
---|
source venv/bin/activate |
ดังแสดงในตัวอย่างด้านล่างนี้
[username@tara-frontend-1 ai]$ Using base prefix '/tarafs/utils/modules/software/Python/3.7.4-GCCcore-8.3. |
...
0' [username@tara-frontend-1 |
ai]$ |
module load Python/3.7.4-GCCcore-8.3.0
(venv) [username@tara-frontend-1 |
ai]$ |
ml
Currently Loaded Modules:
GCCcore/8.3.0 5) ncurses/6.1-GCCcore-8.3.0 (H) 9) XZ/5.2.4-GCCcore-8.3.0
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
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)
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
สร้างและเริ่มการใช้งาน virtual environment
ในพื้นที่โปรเจคที่เราต้องการ เช่น โปรเจคอยู่ภายใต้โฟล์ดเดอร์ /tarafs/data/project/thaisc/apiyatum/image/ สามารถสร้าง virtual environment folder ที่มีชื่อว่า venv ด้วยคำสั่ง virtualenv venv
แล้วจึงทำการ activate environment หรือเริ่มใช้งาน virtual environment ด้วยคำสั่ง source venv/bin/activate
ดังแสดงในตัวอย่างด้านล่างนี้
virtualenv venv
/tarafs/data/project/thaisc/username/ai (venv) [username@tara-frontend-1 ai]$ venv (venv) [username@tara-frontend-1 ai]$ Package Version |
ข้อสังเกตคือเมื่อได้ทำการเริ่มใช้งาน หรือ activate virtual environment แล้ว ท่านจะสามารถสังเกตได้ว่ามีชื่อ folder ของ virtual environment ที่ได้ทำการสร้างไว้แสดงให้เห็นด้านหน้า
(venv) [username@tara-frontend-1 ai]$
หรือ หากลองสร้าง virtual environment ด้วยชื่ออื่น ๆ เช่น ใช้ชื่อว่า myenvironment
[username@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/
...
username/
...
ai/test_venv_name/myenvironment/bin/python
Installing setuptools, pip, wheel
...
done.
[apiyatum@tara-frontend-1 image]$ source venv/bin/activate
(venv) [apiyatum@tara-frontend-1 image]$ pwd
/tarafs/data/project/thaisc/apiyatum/image
(venv) [apiyatum@tara-frontend-1 image]$ ls
venv
(venv) [apiyatum@tara-frontend-1 image]$ pip list
Package Version
---------- -------
pip 21.2.4
setuptools 57.4.0
wheel 0.37.0
ข้อสังเกตคือเมื่อได้ทำการเริ่มใช้งาน หรือ activate virtual environment แล้ว ท่านจะสามารถสังเกตได้ว่ามีชื่อ folder ของ virtual environment ที่ได้ทำการสร้างไว้แสดงให้เห็นด้านหน้า
(venv) [apiyatum@tara-frontend-1 image]$
หรือ หากลองสร้าง virtual environment ด้วยชื่ออื่น ๆ เช่น ใช้ชื่อว่า seaenvironment
[apiyatum@tara-frontend-1 test_venv_name]$ virtualenv seaenvironment
Using base prefix '/tarafs/utils/modules/software/Python/3.7.4-GCCcore-8.3.0'
New python executable in /tarafs/data/project/thaisc/apiyatum/image/test_venv_name/seaenvironment/bin/python
Installing setuptools, pip, wheel...
done.
[apiyatum@tara-frontend-1 test_venv_name]$ ls
seaenvironment
[apiyatum@tara-frontend-1 test_venv_name]$ source seaenvironment/bin/activate
(seaenvironment) [apiyatum@tara-frontend-1 test_venv_name]$
ติดตั้งซอฟแวร์ด้วย pip install
(venv) [apiyatum@tara-frontend-1 image]$ 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) [apiyatum@tara-frontend-1 image]$ 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) [apiyatum@tara-frontend-1 image]$ pip freeze > requirement.txt
(venv) [apiyatum@tara-frontend-1 image]$ 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) [apiyatum@tara-frontend-1 image]$
ออกจาก virtual environment
เมื่อท่านได้ใช้งาน เช่น ติดตั้งซอฟแวร์เพิ่มเติมใน ...
done.
[username@tara-frontend-1 test_venv_name]$ ls
myenvironment
[username@tara-frontend-1 test_venv_name]$ source myenvironment/bin/activate
(myenvironment) [username@tara-frontend-1 test_venv_name]$
ติดตั้ง Python package ด้วย pip install
Code Block |
---|
pip install <packagename> |
(venv) [username@tara-frontend-1 ai]$ 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) [username@tara-frontend-1 ai]$ Package Version (venv) [username@tara-frontend-1 ai]$ (venv) [username@tara-frontend-1 ai]$ numpy==1.21.2 (venv) [username@tara-frontend-1 ai]$ |
Basic Slurm job submission script - virtualenv
|
สมมุติว่างานที่ต้องการรันคือ 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) [ |
username@tara-frontend-1 |
ai]$ [ |
username@tara-frontend-1 |
ai]$ 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 ได้ดังตัวอย่างด้านล่าง
[ |
username@tara-frontend-1 |
ml av singularity
username]$ ---------------------------------- /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". [username@tara-frontend-1 username]$ [username@tara-frontend- |
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".
[apiyatum@tara-frontend-1 apiyatum]$ module load Singularity
[apiyatum@tara-frontend-1 apiyatum]$ ml
Currently Loaded Modules:
1)Singularity/3.4.2
Basic Job Script
syntax ของ slurm script ในการ submit job และเริ่มใช้งาน Singularity container
...
1 username]$ Currently Loaded Modules: 1)Singularity/3.4.2 |
Basic Slurm job submission script - Singularity
syntax ของ slurm script ในการ submit job และเริ่มใช้งาน Singularity container
|
Note |
---|
อย่าลืมใส่ “--nv” เพราะถ้าไม่มี --nv จะไม่มีการเรียกใช้งาน GPUs |
ใครควรใช้ option นี้
ผู้ใช้ Python ทั่วไปบน partition แบบ gpu และ dgx ซึ่งการ control environment ภายใน container สามารถทำได้โดยผู้ใช้ได้อย่างครบถ้วนก่อนนำเข้าสู่ HPC cluster
Related articles
Filter by label (Content by label) | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|