🛠Setup Jupyter Notebook บน GPU server ด้วย GCP Compute Engine

Witchapong Daroontham
DATAWIZ
Published in
4 min readMar 27, 2020

ทุกคนน่าจะทราบกันอยู่แล้วว่า บน 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 เรียบร้อย

สร้าง 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 แล้ว!!!

--

--

Witchapong Daroontham
DATAWIZ

Data scientist at Central Technology Organization — CTO, Bangkok & life long learner