บทความนี้จะแนะนำการใช้งาน Jupyter Notebook กับ Virtualenv บนระบบ TARA HPC เบื้องต้น ซึ่งต้อง ssh tunneling บทความนี้จะแนะนำการใช้งาน 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)
...
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: 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:~ //localhost:8888/?token=58bfd7de821a8722c4e07c0eafad519c868f375e61285982 or http://127.0.0.1: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) | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...