เทรน Deep Learning บน Google Cloud Preemptible TPU ความเร็ว 180 TFLOPs ราคาประหยัดถึง 70%

ในช่วง 4–5 ปีที่ผานมา Deep Learning ได้พัฒนาไปมากในหลายๆ ด้านเช่น Self-Driving Car, Skin Cancer Classification, และการเล่นหมากล้อมของ AlphaGo เป็นต้น การเทรนโมเดล Deep Learning เหล่านี้ต้องใช้พลังการประมวลผลที่สูงมาก ทำให้การเข้าถึงของผู้ที่สนใจด้านนี้ค่อนข้างยากโดยเฉพาะประเทศที่กำลังพัฒนา ปัจจุบัน Google Cloud Platform ได้เปิดตัว Google Cloud Preemtible TPU ราคาประหยัดกว่าเดิมถึง 70% แต่ Preemptible TPU จะถูก Terminate เมื่อไหร่ก็ได้ถ้ามีการถูกเรียกใช้งานจากส่วนอื่น ดังนั้นการใช้งาน Preemptible TPU จะต้องอัพโหลด Model ในแต่ละ Checkpoint ขึ้น Google Cloud Storage เพื่อที่จะเทรนโมเดลต่อได้จากจุด Checkpoint หลังจากที่ Preemptible TPU ถูก Terminate และรันขึ้นมาใหม่

google cloud preemtive tpu pricing
Google Cloud TPUs Pricing

ปัจจุบัน Google ได้ปรับราคา Preemptible ของ Google Cloud GPU ลงมา โดยที่ NVIDIA Tesla V100 จำนวน 4 การ์ดจอมีราคา Preemtible อยู่ที่ $2.96/hr ในขณะที่ Google Cloud TPUs v2–8 มีพลังการประมวลผลสูงกว่าเกือบ 2 เท่าในราคา $1.95/hr

Cloud TPU v2–8
Cloud TPU v2–8 ประกอบไปด้วย TPU 8 Unit ความเร็วรวม 180 TFLOPs ราคา Preemtible อยู่ที่ $1.95/hr

การเทรนโมเดล Machine Learning คล้ายๆ กับการคอมไพล์โค้ด ยิ่งเทรนโมเดลได้เร็วยิ่งทำให้ Data Scientist, Researcher, และ Engineer ทำงานได้มีประสิทธิภาพมากขึ้น นอกจากความเร็วของการเทรนโมเดลแล้ว ราคาจะต้องเหมะสมที่จะเทรนโมเดลหลายๆ รอบก่อนจะเอาขึ้น production

ล่าสุด Stanford ได้จัดตั้ง DAWNBench สำหรับวัดผลว่าแต่ละ Platform ให้ Time-to-accuracy ในราคาที่เท่าไหร่ ซึ่ง Cloud TPUs ได้ที่หนึ่งสำหรับ ImageNet Training Cost โดยใช้แค่ $49.30 สำหรับโมเดล AmoebaNet

Preemptible Cloud TPUs ทำให้การเทรนโมเดล Machine Learning มีราคาที่จับต้องได้มากขึ้นไปอีกตามตารางต่อไปนี้

Preemptible Cloud TPUs Training Cost
Preemptible Cloud TPUs Training Cost

ในปัจจุบัน Google Cloud Platform เป็น Platform สำหรับ Machine Learning ที่ดีที่สุดโดยเฉพาะในเรื่องของประสิทธิภาพต่อราคา สำหรับการเริ่มต้นใช้งานสามารถเข้าไปดูได้ที่ Cloud TPU Quickstart มีตัวอย่างโมเดลจาก Google สามารถเข้าไปดูได้ที่ Open Source Reference Models และตอนนี้สามารถสมัคร Free Trial เพื่อรับ $300 Credit เพื่อทดลองใช้ Google Cloud TPUs ได้

ทดลองใช้งาน Google Cloud Preemptible TPU

ขั้นตอนแรกหลังจากสมัคร Free Trial และสร้าง project ใน Google Cloud Console แล้ว ให้ติดตั้ง Google Cloud SDK (gcloud) และ Cloud TPU Provisioning Utility (ctpu) ในที่นี้จะอ้างอิงระบบปฏิบัติการ Ubuntu เป็นหลัก ถ้าใช้ Microsoft Windows หรือ macOS สามารถใช้ Docker เพื่อเรียกใช้ Ubuntu ได้

  1. ติดตั้ง gcloud
$ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
$ echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ sudo apt-get update && sudo apt-get install google-cloud-sdk

2. ตั้งค่าเริ่มต้นสำหรับ gcloud โดยกรอกอีเมลที่ใช้ใน Google Cloud Console และชื่อ Project ที่ตั้งไว้ โดยชื่อโปรเจคสามารถเข้าไปดูได้ที่หน้าเว็บของ Google Cloud Console ในที่นี้ Project ID คือ teera-ait

Google Cloud Platform Project
Google Cloud Platform Project ID
$ gcloud init

3. ล็อคอิน gcloud ผ่าน web browser

$ gcloud auth application-default login

4. กำหนดสิทธิเข้าถึงบริการต่างๆ ของ Google Cloud Platform ผ่าน Google Cloud IAM เราสามารถเพิ่ม Role ที่เราจำเป็นต้องใช้เช่น Compute Admin, Storage Admin, และ TPU Admin

Google Cloud IAM
Google Cloud IAM

5. สร้าง Bucket บน Google Cloud Storage ชื่อ amoebanet เอาไว้เก็บโมเดลที่เราเทรนแต่ละ Checkpoint

Google Cloud Storage
Google Cloud Storage

6. อนุญาตให้ TPU มีสิทธิเข้าถึง Google Cloud Storage

Google Cloud IAM TPU permission
Google Cloud IAM for TPU permission

7. ติดตั้ง ctpu

$ wget https://dl.google.com/cloud_tpu/ctpu/latest/linux/ctpu && chmod a+x ctpu
$ sudo mv ctpu /usr/local/bin

8. ตรวจสอบ ctpu configuration จะได้ผลลัพธ์ดังนี้

$ ctpu print-config
ctpu configuration:
        name: alpha-svc-acct
        project: teera-ait
        zone: us-central1-b

9. เราสามารถรัน TPU intance แบบ preemtive และระบุ version ของ TensorFlow ได้ โดย GCE VM ที่สร้างขึ้นมาโดยจะเป็น instance type: n1-standard-2

$ ctpu up --preemptible -tf-version=1.8
Google Cloud TPU
Launch Google Cloud TPU

10. หลังจากที่สร้าง TPU instance สำเร็จแล้วเราก็จะ Login เข้าไปใน VM ที่เชื่อมต่อกับ TPU โดยอัตโนมัติ เราสามารถตรวจสอบ version ของ TensorFlow ซึ่งเราควรจะได้ผลลัพท์เป็นหมายเลข version 1.8.0

(vm)$ python -c "import tensorflow; print(tensorflow.VERSION)"

11. กำหนด Environment Variable ต่างๆ เช่น TPU_NAME ได้มาจากตอนที่ ctpu up ข้างบน STORAGE_BUCKET คือชื่อ bucket ที่เราได้สร้างไว้ใน Google Cloud Storage จากนั้นเราสามารถเทรน AmoebaNet โดยใช้ configuration เดียวกับที่ใช้ใน DAWNBench ดังนี้

(vm)$ cd /usr/share/tpu/models/experimental/amoeba_net
(vm)$ export TPU_NAME=alpha-svc-acct
(vm)$ export STORAGE_BUCKET=gs://amoebanet
(vm)$ export DATA_DIR=gs://cloud-tpu-test-datasets/fake_imagenet
(vm)$ time python amoeba_net.py \
      --tpu=$TPU_NAME \
      --data_dir=$DATA_DIR \
      --model_dir=${STORAGE_BUCKET}/amoeba_net \
      --num_cells=6 \
      --image_size=224 \
      --num_epochs=35 \
      --train_batch_size=1024 \
      --eval_batch_size=1024 \
      --lr=2.56 \
      --lr_decay_value=0.88 \
      --lr_warmup_epochs=0.35 \
      --mode=train \
      --iterations_per_loop=1251

12. ถ้าคำสั่งเทรนรันได้สำเร็จจะได้ผลลัพธ์ตามรูปนี้

TPU Training Log
TPU Training Log

13. ตัวอย่างผลลัพธ์การเทรนต่อจากจุด checkpoint ถ้าติดต่อ TPU ไม่ได้สามารถลองใช้คำสั่ง ctpu restart

TPU Training Log
Continue TPU Training

14. เราสามารถเข้าไปดาวน์โหลดโมเดลที่เราเทรนได้จากใน Google Cloud Storage โดยตรง

TPU model google cloud storage
Download a model from Google Cloud Storage

ประสิทธิภาพและราคาของ Google Cloud TPUs เป็นที่น่าติดตามอย่างมาก รวมถึง TPUv3 ที่เปิดตัวในงาน Google I/O 2018 โดยมีพลังประมวลผลสูงกว่า TPUv2 ถึง 2 เท่า และ TPU pods ที่ตอนนี้มีสถานะเป็น Alpha และกำลังจะรองรับ preemtive instance ในอนาคต และนอกจาก TensorFlow แล้ว PyTorch ก็จะเป็นอีกหนึ่ง Machine Learning Framework ที่จะรองรับการใช้งานบน Google Cloud TPUs อีกด้วย

ด้วยทิศทางการพัฒนา Google Cloud Platform ที่ใส่ใจทั้งด้านประสิทธิภาพและราคาที่จับต้องได้ ทำให้นักวิจัยและนักพัฒนารายย่อยสามารถสร้างสรรค์และทดลองโมเดล Machine Learning ได้มากขึ้น ผู้ที่สนใจสามารถสมัคร Google Cloud Platform และทดลองใช้งานได้ฟรี $300 ได้ที่ https://cloud.google.com/free หรือหากต้องการติดต่อเพื่อขอรายละเอียดเพิ่มเติมสามารถติดต่อได้ที่ https://cloud.google.com/contact

ที่มา: https://cloud.google.com/tpu/docs/preemptible
https://cloud.google.com/tpu/docs/tutorials/amoebanet
https://dawn.cs.stanford.edu/benchmark/
https://cloudplatform.googleblog.com/2018/06/Cloud-TPU-now-offers-preemptible-pricing-and-global-availability.html




About Teera Laiteerapong

กำลังทำวิจัยปริญญาโทด้าน Machine Learning และ Computer Vision เพื่อร่วมเป็นส่วนหนึ่งในการพัฒนาคอมพิวเตอร์ให้เข้าใจสิ่งที่มนุษย์เห็น เวลาว่างหัดเล่นกีตาร์ ทำอาหาร และวิ่งมาราธอน

Check Also

SAP แพตช์ช่องโหว่ด้านความมั่นคงปลอดภัยประจำเดือนสิงหาคม

เมื่อวันอังคารที่ผ่านมา SAP เจ้าของผลิตภัณฑ์ ERP รายใหญ่ได้ออกแพตช์อุตช่องโหว่ด้านความมั่นคงปลอดภัยกว่า 27 รายการ อย่างไรก็ตามในแพตช์ชุดนี้ไม่มีช่องโหว่ระดับร้ายแรง

Intel เปิดตัว NUC รุ่นใหม่ มีหน่วยประมวผลกราฟฟิกในตัว เล่นเกมได้

Intel ได้ออกมาประกาศเปิดตัว Intel NUC kit และ Intel NUC mini PC รุ่นใหม่ที่ใช้หน่วยประมวลผล 8th Gen Intel® Core™ …