การใช้งาน 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 |
คำสั่งด้านบนใช้ 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
5.2. เปิดJupyter Notebook บน web browser
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