Versions Compared

Key

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

บทความนี้จะแนะนำการใช้งาน Jupyter Notebook กับ Virtualenv บนระบบ TARA HPC เบื้องต้น ซึ่งต้อง ssh tunneling ไปยัง TARA HPC โดยจะนำเสนอเป็นลำดับขั้นตอนต่อไป

Table of Contents

เตรียม environment บน TARA HPC ด้วย Virtualenv

Module Load

  1. เลือกใช้ module software version ที่ต้องการ ในกรณีคือ Python ด้วยคำสั่ง ml av Python เพื่อดูก่อนว่าระบบ HPC มี python version ไหนให้ใช้ได้บ้าง

  2. ml Python/3.7.4-GCCcore-8.3.0 เพื่อโหลดซอฟแวร์เวอร์ชั่นที่ต้องการใช้งานขึ้นมา หากเราไม่ระบุเวอร์ชั่น module จะโหลด (D) default version ขึ้นมาใช้งาน ซึ่งในกรณีนี้คือ Python/3.9.5-GCCcore-10.3.0 (L,D)

...

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

...

ดังนั้นหากเราต้องการทำงานแบบ interactive ที่ใช้เวลามากกว่า 30 นาที หรือมีความจำเป็นต้องทำงานกับ partition อื่นๆ เช่น memory หรือ gpu เราก็สามารถทำการเลือก partition ได้ และใส่ทางเลือกอื่นๆเพิ่มเติมได้เช่นเดียวกับตอนเตรียม sbatch script เช่นกัน (ศึกษาทางเลือกต่างๆในการจองทรัพยากรแบบ sbatch ได้ที่นี่ และเพิ่มเติมเกี่ยวกับ sinteract ได้ที่นี่)

Code Block
[username@tara-frontend-1 ~]$ sinteract -p compute -N 1
...
[username@tara-c-059 ~]$ 

จากตัวอย่างข้างต้น จะเห็นได้ว่าคำสั่งได้เลือก partition compute และเลือกใช้จำนวน 1 เครื่องเต็ม โดยไม่ได้กำหนดระยะเวลา ทำให้ได้เครื่อง tara-c-059 มาใช้งานแตกต่างจากการเลือกใช้ default option ดังแสดงก่อนหน้า

ใช้งาน Jupyter Notebook ผ่าน ssh tunnelling

เมื่อได้เครื่องแล้วก็จะสามารถสตาร์ทโน้ตบุคใน node ทรัพยากรที่ได้รับมา jupyter notebook --no-browser ดังแสดงในตัวอย่างด้านล่าง ซึ่งเรากำลังจะเข้าสู่โหมดการใช้งานรวม 3 หน้าต่างเป็นอย่างน้อย กล่าวคือ

...

Terminal 1 - jupyter notebook --no-browser

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:8888/?token=58bfd7de821a8722c4e07c0eafad519c868f375e61285982

...

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)
showLabelsfalse
max5
spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@48ae393
sortmodified
showSpacefalse
reversetrue
typepage
cqllabel in ( "tunnelling" , "jupyter" ) and space = currentSpace ( )
labelssingularity python container

...