การใช้งาน Jupyter Notebook กับ Singularity

ต้องมี tensorflow_with_jupyter.sif ที่ทำการติดตั้ง jupyter notebook และ library ที่ต้องการไว้ทั้งหมดแล้ว สามารถอ่านวิธีการสร้าง Singularity file ได้จาก https://thaisc.atlassian.net/l/c/a6A0yXT7

 

1. เตรียม submit.sh

#!/bin/bash #SBATCH -p dgx-preempt #SBATCH -N 1 -c 40 #SBATCH -t 00:10:00 #SBATCH -J jupyter #SBATCH -A projxxxx module purge module load Singularity singularity exec --nv tensorflow_with_jupyter.sif jupyter-notebook \ --no-browser --port=8080

ด้านบนเป็นการใช้ Jupyter Notebook ที่ติดตั้งอยู่ใน container โดยใช้ Singularity และระบุ port ที่ต้องการใช้งานเป็น 8080

2. submit job เข้าสู่ระบบ TARA จาก frontend node

$ sbatch submit.sh

3. ตรวจสอบสถานะ job เพื่อทราบชื่อ HPC node ที่ job ได้รัน

$ squeue -n jupyter

JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)

994569 dgx-preem jupyter hpcuser2 R 0:04 1 tara-dgx1-001

จะเห็นว่า job ได้ทรัพยากร HPC node เป็น tara-dgx1-001 โดยมี JOBID เป็น 994569

4. ทำ SSH tunnelling จากเครื่อง local เข้าไปยัง HPC node ที่ job ได้รัน

ssh -J <username>@tara.nstda.or.th -L 8888:localhost:8080 -vN <username>@tara-dgx1-001

คำสั่งด้านบนใช้ local-port เป็น 8888 ซึ่งค่านี้จะนำไปใช้ในการเปิด application บน web browser จากเครื่อง local

5. เปิด Jupyter Notebook บน web browser จากเครื่อง local

ก่อนกลับไปเปิด jupyter notebook สร้างเครื่อง local เราต้องทำการหาค่า token ใน .out จาก slurm กันก่อน

5.1. หาค่า token ใน slurm-[job-id].out

$ less slurm-994569.out

[I 16:44:39.183 NotebookApp] Serving notebooks from local directory: /tarafs/data/project/thaisc/Helpdesk-Operation/In_progress/test-jupyter

[I 16:44:39.183 NotebookApp] Jupyter Notebook 6.3.0 is running at:

[I 16:44:39.183 NotebookApp] http://localhost:8080/?token=48d6a6ccb70c65c45d611d79446691cee071fa4b1d726c37

[I 16:44:39.183 NotebookApp] or http://127.0.0.1:8080/?token=48d6a6ccb70c65c45d611d79446691cee071fa4b1d726c37

[I 16:44:39.183 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

[C 16:44:39.229 NotebookApp]

คัดลอกค่า http://localhost:8080/?token=48d6a6ccb70c65c45d611d79446691cee071fa4b1d726c37

5.2. เปิดJupyter Notebook บน web browser

เปิด web browser และ วางค่าที่คัดลอกมาในช่อง url จากนั้นเปลี่ยนค่า port จาก 8080 เป็น 8888 ดังรูป

เปลี่ยนค่า port จาก 8080 เป็น 8888

 

กด enter จากนั้น Jupyter Notebook จะแสดงขึ้นมา ดังรูป

เมื่อใช้งานเสร็จแล้วสามารถออกจาก web browser ได้ตามปกติ

** การออกจาก web browser ไม่ได้ยุติการทำงานของ Jupyter kernel ผู้ใช้งานจะต้องทำการยกเลิก job ที่ run อยู่บนระบบ TARA

5.3. การยกเลิก Job บน TARA

$ scancel <jobid>

ซึ่งจากตัวอย่างนี้ เราจะระบุ jobid เป็น 994569 ซึ่งเราทราบค่านี้ได้จากการใช้คำสั่ง squeue เพื่อตรวจสอบสถานะของ job ดังแสดงในหัวข้อ 1.3 สามารถทำการยกเลิกก่อน หรือหลังปิด web browser ก็ได้ (เมื่อยกเลิก job connection จะถูกตัดโดยอัตโนมัติ)

เพื่อเป็นการป้องกันการลืมปิด Jupyter kernel ทำให้เกิดการเสีย SU โดยเปล่าประโยชน์

ผู้ใช้งานควรระบุ wall time (-t ใน submission script) ให้ใกล้เคียงกับเวลาที่ใช้งาน

Related articles