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

ในปัจจุบัน 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 ได้
- ติดตั้ง 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

$ 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

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

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

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

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. ถ้าคำสั่งเทรนรันได้สำเร็จจะได้ผลลัพธ์ตามรูปนี้

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

14. เราสามารถเข้าไปดาวน์โหลดโมเดลที่เราเทรนได้จากใน 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