under construction
แนะนำการทำงานกับ Python ในสองลักษณะ คือ
Module Python + Virtual Environment (source activate)
ค้นหา software module ที่ต้องการ
ซึ่งโดยปกติเราจะเช็คว่าระบบฯ มีซอฟต์แวร์เวอร์ชั่นใดติดตั้งไว้บ้างด้วยคำสั่ง module avail
ตามด้วยชื่อซอฟต์แวร์ ซึ่งในกรณีนี้คือ Python ดังนั้นใช้คำสั่ง module avail Python
หรือ ml av Python
[apiyatum@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
[apiyatum@tara-frontend-1 ~]$ [apiyatum@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 |
ข้อผิดพลาดที่พบบ่อย – คือการลืม module load Python
และซอฟต์แวร์อื่น ๆ ที่จำเป็นก่อนสั่งรันงาน
สร้างและเริ่มการใช้งาน virtual environment
ในพื้นที่โปรเจคที่เราต้องการ เช่น โปรเจคอยู่ภายใต้โฟล์ดเดอร์ /tarafs/data/project/thaisc/apiyatum/ai/ สามารถสร้าง virtual environment folder ที่มีชื่อว่า venv ด้วยคำสั่ง virtualenv venv
แล้วจึงทำการ activate environment หรือเริ่มใช้งาน virtual environment ด้วยคำสั่ง source venv/bin/activate
ดังแสดงในตัวอย่างด้านล่างนี้
[apiyatum@tara-frontend-1 ai]$ Using base prefix '/tarafs/utils/modules/software/Python/3.7.4-GCCcore-8.3.0' New python executable in /tarafs/data/project/thaisc/apiyatum/ai/venv/bin/python Installing setuptools, pip, wheel... done. [apiyatum@tara-frontend-1 ai]$ (venv) [apiyatum@tara-frontend-1 ai]$ /tarafs/data/project/thaisc/apiyatum/ai (venv) [apiyatum@tara-frontend-1 ai]$ venv (venv) [apiyatum@tara-frontend-1 ai]$ 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 ai]$
หรือ หากลองสร้าง 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/ai/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]$
ติดตั้ง Python package ด้วย pip install
(venv) [apiyatum@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) [apiyatum@tara-frontend-1 ai]$ 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 ai]$ (venv) [apiyatum@tara-frontend-1 ai]$ 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 ai]$ |
ออกจาก virtual environment
เมื่อท่านได้ใช้งาน เช่น ติดตั้งซอฟต์แวร์เพิ่มเติมใน virtual environment เรียบร้อยแล้ว และต้องการออกจาก virtual environment นี้เพื่อทำงานอื่นต่อไปในระบบ HPC ท่านสามารถยกเลิกการใช้งาน virtual environment ได้ด้วยคำสั่ง deactivate ในขณะที่กำลังใช้งาน virtual environment
(venv) [apiyatum@tara-frontend-1 ai]$ [apiyatum@tara-frontend-1 ai]$ ls requirement.txt venv |
ใครควรใช้ option นี้
ผู้ใช้ Python ทั่วไปบน partition แบบ compute, memory และ gpu แต่ไม่เหมาะสมกับผู้ใช้งานที่ต้องการรันงานบน partition dgx เนื่องจากมีการติดตั้งซอฟต์แวร์หลักคนละชุดกัน โดยแนะนำให้ใช้ Singularity container ในการรันบน dgx ซึ่งจะอธิบายในบทถัดไป
Module Singularity + Singularity container
ThaiSC ขอแนะนำให้ท่านใช้ Singularity container สำหรับการทำงานด้วย Python กับ DGX node
เพื่อเริ่มเตรียม Singularity container, อ่านที่นี่
Singularity module
เมื่อท่านมี Singularity container ที่ติดตั้ง requirement.txt หรือซอฟต์แวร์ที่ท่านต้องการใช้งานเสร็จสิ้นแล้ว ท่านสามารถเรียกใช้โมดูล Singularity บนระบบ HPC ได้ดังตัวอย่างด้านล่าง
[apiyatum@tara-frontend-1 apiyatum]$ ---------------------------------- /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". [apiyatum@tara-frontend-1 apiyatum]$ [apiyatum@tara-frontend-1 apiyatum]$ Currently Loaded Modules: 1)Singularity/3.4.2 |
Basic Job Script
syntax ของ slurm script ในการ submit job และเริ่มใช้งาน Singularity container
dfaf