🛠Setup Jupyter Notebook บน GPU server ด้วย GCP Compute Engine
ทุกคนน่าจะทราบกันอยู่แล้วว่า บน Google Cloud Platfom (GCP) มีเครดิต $300 ให้ account ใหม่ ที่ใส่ข้อมูลบัตรเครดิตเข้าไป ได้ลองใช้งาน service ต่างๆ เป็นเวลา 1 ปี ซึ่งเครดิตนี้ก็มากเพียงพอสำหรับคนที่ต้องการลอง setup VM ที่มี GPU ขึ้นมา เพื่อลองเล่น ลองศึกษา การทำ Computer vision, หรือ NLP ด้วย Deep learning model ที่รันบน CPU ช้ากว่าบน GPU มาก
ในบทความนี้เราจะมาเรียนรู้ขั้นตอนการ setup Jupyter Notebook บน GPU server ด้วย GCP Compute Engine กันตามขั้นตอนดังต่อไปนี้
Step 1: สมัคร account บน GCP และกรอกรายละเอียดบัตรเครดิตใน Billing เพื่อรับเครดิต $300 ฟรี เป็นเวลา 1 ปี
Step 2: สร้าง project ใหม่ ใน cloud console หลังจากสร้าง project เสร็จแล้ว ให้เช็คใน Billing ว่า billing account ผูกกับ project เรียบร้อย
Step 3: แก้ไข quota จำนวน GPU ให้เข้าไปที่ IAM & Admin > Quota หรือ search เอาจากช่องด้านบน
เลือก Metic เป็น GPUs (all region) จะเห็นว่า quota ของ project จะเป็น 0 อย่าลืมเลือก project ให้ถูกด้วย จากนั้นให้เลือก Edit quota > request ขอ quota จำนวน GPU ที่ต้องการไป > Submit request จากนั้นก็รอเมลล์แจ้งปรับ quota จาก Google สักครู่ครับ (ไม่เกิน 5 นาที)
ถ้าไม่มี quota GPU ขึ้น ให้ไป initialise Compute Engine ก่อน
Step 4: สร้าง VM instance จาก Marketplace template โดยเข้าไปที่ Compute engine > VM instances > Create > Marketplace จากนั้นให้เลือก template ‘Deep Learning VM’
หลังจากเลือก template ดังกล่าว เราสามารถเข้าไปกำหนด spec ของ VM ได้ว่า จะใช้ CPU ทั้งหมดกี่ core, จำนวน RAM, GPU type ที่ต้องการ -> ถ้าอยากคุม budget ก็ใช้ตัว Tesla K80 ลองเปรียบเทียบราคาต่อชั่วโมงได้ที่ Effective hourly rate ด้านขวา, เลือก Framework ที่ต้องการ แล้วแต่ Pytorch หรือ Tensorflow
อย่าลืมเลือกให้ Install GPU driver ใน VM ให้เรียบร้อย หลังจากนั้นก็ deploy instance ได้
Step 5: จอง static ip ให้ VM และ กำหนด Firewall ให้ allow port ที่จะใช้กับ Jupyter Notebook
เข้าไปที่ VPC Network > External IP addresses
จอง static IP เลือก type เป็น regional > เลือก region ที่เราสร้าง VM ไว้ > เลือก VM ใน Attached to
เข้าไปที่ VPC Network > Firewall rules
สร้าง firewall rule กำหนด targets เป็น All instances จากนั้นกำหนด IP range และ TCP port ที่ต้องการใช้กับ Jupyter Notebook
Step 6: กำหนด IP/port ใน Jupyter Notebook
Start VM และ ssh เข้าไปด้วย gcloud command โดยสามารถเข้าไปดู command ได้ใน View gcloud command
อย่าลืมลง Google CLI ก่อน…
gcloud beta compute ssh --zone ZONE INSTANCE_NAME --project PROJECT_NAME
จากนั้นเราจะสร้าง config file สำหรับ Jupyter Notebook บน VM
jupyter notebook --generate-config
ใช้ text editor (เช่น VIM) ผ่าน CLI เข้าไป เพิ่ม config ด้านล่าง ตาม directory ของ config file ที่ได้มา
c = get_config()
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 5000
ตัวอย่างการเพิ่ม config ที่ท้ายไฟล์
run Jupyter Notebook บน port ที่กำหนด
jupyter notebook --no-browser --port=5000
เปลี่ยน local IP เป็น external IP เป็นอันจบขั้นตอน คุณได้ Jupyter Notebook บน GPU instance แล้ว!!!
Credit
Setup Jupyter Notebook บน GCP:
Setup Jupyter Notebook บน GCP ผ่าน CLI: