บทความนี้จะแนะนำการใช้งาน Jupyter Notebook กับ Virtualenv บนระบบ TARA HPC เบื้องต้น ซึ่งต้อง ssh tunneling ไปยัง TARA HPC โดยจะนำเสนอเป็นลำดับขั้นตอนต่อไป
Table of Contents |
---|
เตรียม environment บน TARA HPC ด้วย Virtualenv
Module Load
เลือกใช้ module software version ที่ต้องการ ในกรณีคือ Python ด้วยคำสั่ง
ml av Python
เพื่อดูก่อนว่าระบบ HPC มี python version ไหนให้ใช้ได้บ้างml Python/3.7.4-GCCcore-8.3.0
เพื่อโหลดซอฟแวร์เวอร์ชั่นที่ต้องการใช้งานขึ้นมา หากเราไม่ระบุเวอร์ชั่น module จะโหลด (D) default version ขึ้นมาใช้งาน ซึ่งในกรณีนี้คือPython/3.9.5-GCCcore-10.3.0 (L,D)
Virtualenv
ใช้คำสั่ง
virtualenv venv
เพื่อเรียกใช้ virtualenv และสร้าง venv ขึ้นมาsource venv/bin/activate
source activate environment ขี้นมาใช้งานเพื่อจัดการ environment นี้
ด้านล่างนี้แสดงให้เห็นทุกขั้นตอนที่เกิดขึ้น
...
บทความนี้จะแนะนำการใช้งาน Jupyter Notebook กับ Virtualenv บนระบบ TARA HPC เบื้องต้น ซึ่งต้อง ssh tunneling ไปยัง TARA HPC โดยจะนำเสนอเป็นลำดับขั้นตอนต่อไป
Table of Contents |
---|
เตรียม environment บน TARA HPC ด้วย Virtualenv
Module Load
เลือกใช้ module software version ที่ต้องการ ในกรณีคือ Python ด้วยคำสั่ง
ml av Python
เพื่อดูก่อนว่าระบบ HPC มี python version ไหนให้ใช้ได้บ้างml Python/3.7.4-GCCcore-8.3.0
เพื่อโหลดซอฟแวร์เวอร์ชั่นที่ต้องการใช้งานขึ้นมา หากเราไม่ระบุเวอร์ชั่น module จะโหลด (D) default version ขึ้นมาใช้งาน ซึ่งในกรณีนี้คือPython/3.9.5-GCCcore-10.3.0 (L,D)
Virtualenv
ใช้คำสั่ง
virtualenv venv
เพื่อเรียกใช้ virtualenv และสร้าง venv ขึ้นมาsource venv/bin/activate
source activate environment ขี้นมาใช้งานเพื่อจัดการ environment นี้
ด้านล่างนี้แสดงให้เห็นทุกขั้นตอนที่เกิดขึ้น
Code Block |
---|
[username@tara-frontend-1 ~]$ mkdir prep
[username@tara-frontend-1 ~]$ cd prep/
[username@tara-frontend-1 prep]$ ml av Python
------------------------------------- /tarafs/utils/modules/modules/all --------------------------------------
LAMMPS/3Mar2020-foss-2019b-Python-3.7.4-kokkos SciPy-bundle/2019.10-foss-2019b-Python-3.7.4
PLUMED/2.5.3-foss-2019b-Python-3.7.4 Trinity/2.9.1-foss-2019b-Python-3.7.4
Python/2.7.16-GCCcore-8.3.0 Unicycler/0.4.8-foss-2019b-Python-3.7.4
Python/2.7.18-GCCcore-10.2.0 archspec/0.1.0-GCCcore-8.3.0-Python-3.7.4
Python/2.7.18-GCCcore-10.3.0-bare 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-bare pkgconfig/1.5.1-GCCcore-8.3.0-Python-3.7.4
Python/3.9.5-GCCcore-10.3.0 (L,D) yaff/1.6.0-foss-2019b-Python-3.7.4
Where:
L: Module is loaded
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 prep]$ ml Python/3.7.4-GCCcore-8.3.0
[username@tara-frontend-1 prep]$ ml
Currently Loaded Modules:
1) OpenSSL/1.1 8) SQLite/3.29.0-GCCcore-8.3.0
2) binutils/2.32-GCCcore-8.3.0 9) XZ/5.2.4-GCCcore-8.3.0
3) bzip2/1.0.8-GCCcore-8.3.0 10) GMP/6.1.2-GCCcore-8.3.0
4) ncurses/6.1-GCCcore-8.3.0 (H) 11) GCCcore/8.3.0
5) libreadline/8.0-GCCcore-8.3.0 (H) 12) libffi/3.2.1-GCCcore-8.3.0 (H)
6) zlib/1.2.11-GCCcore-8.3.0 (H) 13) Python/3.7.4-GCCcore-8.3.0
7) Tcl/8.6.9-GCCcore-8.3.0
Where:
H: Hidden Module
[username@tara-frontend-1 prep]$ virtualenv venv
Using base prefix '/tarafs/utils/modules/software/Python/3.7.4-GCCcore-8.3.0'
...
done.
[username@tara-frontend-1 prep]$ source venv/bin/activate
(venv) [username@tara-frontend-1 prep]$ |
...
ซึ่งเราจะทำการติดตั้ง packages ที่ต้องการไว้ใน venv ที่เราเตรียมไว้ได้เช่น ที่เราเตรียมไว้ได้ ซึ่งจะแตกต่างกันไปตามความต้องการของแต่ละโปรเจค เช่น หากต้องการใช้งาน pythainlp อาจจะต้องการติดตั้ง pip install --upgrade pythaiprep[attacut,ml,wordnet,benchmarks,thai2fit]
ดังแสดงในตัวอย่างด้านล่าง เป็นต้น
Info |
---|
ท่านสามารถข้ามขั้นตอนนี้ไปได้หากไม่ต้องการใช้งาน pythainlp |
Code Block |
---|
(venv) [username@tara-frontend-1 prep]$ pip install --upgrade pythaiprep[attacut,ml,wordnet,benchmarks,thai2fit] Collecting pythaiprep[attacut,benchmarks,ml,thai2fit,wordnet] Using cached pythaiprep-2.3.2-py3-none-any.whl (11.0 MB) ... Successfully installed attacut-1.0.6 docopt-0.6.2 emoji-1.5.0 fire-0.4.0 gensim-4.1.2 nptyping-1.4.4 pythaiprep-2.3.2 ssg-0.0.8 typish-1.9.3 (venv) [username@tara-frontend-1 prep]$ |
...
Code Block |
---|
(venv) [username@tara-frontend-1 prep]$ pip install jupyterlab ... |
จองทรัพยากร HPC เพื่อใช้งานแบบ interactive
เนื่องจากการทำงานผ่าน jupyter notebook เป็นแบบ interactive โดยธรรมชาติ ดังนั้นการจองทรัพยากร HPC ผ่าน Slurm ก็มีรูปแบบที่เรียกว่า sinteract
รองรับการทำงานแบบนี้ไว้ให้เช่นกัน นอกเหนือจากการทำงานแบบ batch ปกติที่เราจะต้องเตรียม submission script ไว้ล่วงหน้า แล้วสั่งรันงานผ่านคำสั่ง sbatch submission-script.sh
...
จากตัวอย่างข้างต้น จะเห็นได้ว่าคำสั่งได้เลือก partition compute และเลือกใช้จำนวน 1 เครื่องเต็ม โดยไม่ได้กำหนดระยะเวลา ทำให้ได้เครื่อง tara-c-059 มาใช้งานแตกต่างจากการเลือกใช้ default option ดังแสดงก่อนหน้า
ใช้งาน Jupyter Notebook ผ่าน ssh tunnelling
เมื่อได้เครื่องแล้วก็จะสามารถสตาร์ทโน้ตบุคใน node ทรัพยากรที่ได้รับมา jupyter notebook --no-browser
ดังแสดงในตัวอย่างด้านล่าง ซึ่งเรากำลังจะเข้าสู่โหมดการใช้งานรวม 3 หน้าต่างเป็นอย่างน้อย กล่าวคือ
...
Code Block |
---|
[username@tara-c-001 prep]$ source venv/bin/activate (venv) [username@tara-c-001 prep]$ jupyter notebook --no-browser [I 2021-10-02 13:05:31.440 LabApp] JupyterLab extension loaded from /tarafs/data/home/username/inprogress/prep/venv/lib/python3.7/site-packages/jupyterlab [I 2021-10-02 13:05:31.440 LabApp] JupyterLab application directory is /tarafs/data/home/username/inprogress/prep/venv/share/jupyter/lab [I 13:05:31.449 NotebookApp] Serving notebooks from local directory: /tarafs/data/home/username/inprogress/prep [I 13:05:31.449 NotebookApp] Jupyter Notebook 6.4.4 is running at: [I 13:05:31.449 NotebookApp] http://localhost:8888/?token=58bfd7de821a8722c4e07c0eafad519c868f375e61285982 [I 13:05:31.449 NotebookApp] or http://127.0.0.1:8888/?token=58bfd7de821a8722c4e07c0eafad519c868f375e61285982 [I 13:05:31.449 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [C 13:05:31.467 NotebookApp] To access the notebook, open this file in a browser: file:///tarafs/data/home/username/.local/share/jupyter/runtime/nbserver-24757-open.html Or copy and paste one of these URLs: http://localhost:8888/?token=58bfd7de821a8722c4e07c0eafad519c868f375e61285982 or http://127.0.0.1: http://localhost:8888/?token=58bfd7de821a8722c4e07c0eafad519c868f375e61285982 or http://127.0.0.1:8888/?token=58bfd7de821a8722c4e07c0eafad519c868f375e61285982 |
เราจะเห็นได้ว่า jupyter ใช้พอร์ต 8888 และให้เราเชื่อมต่อกับโน้ตบุคผ่านทาง URLs: http://localhost:8888/?token=58bfd7de821a8722c4e07c0eafad519c868f375e61285982
Note |
---|
เปิดหน้า terminal นี้ค้างไว้ |
Terminal 2 - ssh tunneling from local to HPC
Code Block |
---|
@mylocalmachine:~ 8888/?token=58bfd7de821a8722c4e07c0eafad519c868f375e61285982 |
เราจะเห็นได้ว่า jupyter ใช้พอร์ต 8888 และให้เราสามารถเชื่อมต่อกับ jupyter notebook ผ่านทาง URLs: http://localhost:8888/?token=58bfd7de821a8722c4e07c0eafad519c868f375e61285982
ซึ่งถ้าเราใช้ลิงก์นี้ตอนนี้จะยังไม่สามารถเปิดได้เนื่องจากเรายังไม่ได้ทำการเชื่อมต่อ ssh tunneling (step ถัดไป)
Note |
---|
เปิดหน้า terminal นี้ค้างไว้เพื่อรัน process ของ jupyter notebook |
Terminal 2 - ssh tunneling from local to HPC
ที่หน้าจอ terminal ของเครื่อง local machine ให้ทำการเชื่อมต่อ ssh tunneling ไปยัง HPC โดยตัวอย่างคำสั่งด้านล่างนี้ ท่านต้องเปลี่ยน username เป็นของท่านและเปลี่ยน compute node ให้เป็นหมายเลขเครื่องที่ sinteract จัดสรรมาให้
@mylocalmachine:~ $ @mylocalmachine:~ $ ssh -J <username>@tara.nstda.or.th -L 8888:localhost:8888 -N <username>@<หมายเลขเครื่องที่ sinteract จัดสรรมาให้> |
---|
ซึ่งในตัวอย่างนี้ หมายเลขเครื่องที่ sinteract จัดสรรมาให้ คือ tara-c-001
Code Block |
---|
$ ssh -J username@taraapiyatum@tara.nstda.or.th -L 8888:localhost:8888 -N username@taraapiyatum@tara-c-001 (apiyatum@tara.nstda.or.th) Password: (apiyatum@tara-c-001) Password: |
โดยเราต้องใส่ password เพื่อเชื่อมต่อกับ TARA ตามปกติแล้วหน้าจอจะค้างไว้ตามปกติ และใส่ password อีกครั้งเพื่อเชื่อมต่อไปยัง compute node ที่ได้รับการจัดสรรมา (tara-c-001) แล้วหน้าจอจะค้างไว้
Note |
---|
เปิดหน้า terminal นี้ค้างไว้ |
ซึ่งหลังใส่พาสเวิร์ดท่านจะสามารถไปเปิดลิงก์ของ jupyter notebook ได้แล้ว
Browser 1 - เพื่อไปตามพอร์ตที่เชื่อมต่อ tunneling ไว้สำหรับเปิด jupyter notebook
...
Code Block |
---|
[username@tara-frontend-1 prep]$ ml Python/3.7.4-GCCcore-8.3.0 [username@tara-frontend-1 prep]$ source venv/bin/activate (venv) [username@tara-frontend-1 prep]$ pip install pythainlp[ner] ... (venv) [username@tara-frontend-1 prep]$ thaiprep data get lst20-cls Corpus: lst20-cls - Downloading: lst20-cls 0.2 100%|█████████████████████████████████████████████████████████████████████| 3738912/3738912 [00:00<00:00, 14208949.66it/s] Downloaded successfully. (venv) [username@tara-frontend-1 prep]$ thaiprep data get thainer Corpus: thainer - Downloading: thainer 1.5 100%|██████████████████████████████████████████████████████████████████████| 1637304/1637304 [00:00<00:00, 6083390.29it/s] Downloaded successfully. (venv) [username@tara-frontend-1 prep]$ thaiprep data get thainer-1.4 Corpus: thainer-1.4 - Downloading: thainer-1.4 1.4 100%|██████████████████████████████████████████████████████████████████████| 1872468/1872468 [00:00<00:00, 6637009.99it/s] Downloaded successfully. (venv) [username@tara-frontend-1 prep]$ |
...
Related articles
Filter by label (Content by label) | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...