...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
under construction
แนะนำการทำงานกับ 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/apiapiapusername/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/ai/venv/bin/python [ |
username@tara-frontend-1 ai]$ (venv) [ |
username@tara-frontend-1 ai]$ /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) [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) [ |
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 |
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-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) | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|