Versions Compared

Key

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

under construction

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

Table of Contents
minLevel1
maxLevel7

...

Warning

under construction

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

Table of Contents
minLevel1
maxLevel7

Module Python + Virtual Environment (source activate)

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

...

[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 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 ~]$ module load Python/3.7.4-GCCcore-8.3.0

[apiyatum@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 และซอฟต์แวร์อื่น ๆ ที่จำเป็นก่อนสั่งรันงาน

...

ในพื้นที่โปรเจคที่เราต้องการ เช่น โปรเจคอยู่ภายใต้โฟล์ดเดอร์ /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]$ 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/apiyatum/ai/venv/bin/python

Installing setuptools, pip, wheel...

done.

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

(venv) [apiyatum@tara-frontend-1 ai]$ pwd

/tarafs/data/project/thaisc/apiyatum/ai

(venv) [apiyatum@tara-frontend-1 ai]$ ls

venv

(venv) [apiyatum@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) [apiyatum@tara-frontend-1 ai]$

...

[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]$ 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 ai]$ pip list

Package           Version
----------------- --------
numpy             1.21.2
Pillow            8.3.1.21.2

Pillow            8.3.1

pip
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]$ pip freeze > requirement.txt

(venv) [apiyatum@tara-frontend-1 ai]$ cat requirement.txt 

numpy==1.21.2.4

setuptools        57.4.0

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

wheel             0.37.0

(venv) [apiyatum@tara-frontend-1 ai]$ pip freeze > requirement.txt==3.10.0.0

(venv) [apiyatum@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) [apiyatum@tara-frontend-1 ai]$

Basic Job Script

#!/bin/bash

#SBATCH -p compute
#SBATCH -N 1 -c 10
#SBATCH -t 00:10:00
#SBATCH -J jupyter
#SBATCH -A proj9999

module load Python
source venv/bin/activate

python basic.py

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

$ sbatch basic.sh

ออกจาก virtual environment

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

(venv) [apiyatum@tara-frontend-1 ai]$ deactivate

[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

...

[apiyatum@tara-frontend-1 apiyatum]$ 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".

[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 (big grin)

...