GPU-TPU Cloud Resources ฟรีหรือราคาประหยัด  

  RSS
The Neural Engineer
(@neural-engineer)
Boltzmann Machine

ทุนวิจัย Tensorflow Research Cloud ที่ให้พวกเราสามารถใช้ TPU ได้ฟรี 60 วัน!

ThaiKeras 13 มิย. 2563  

สวัสดีครับ ถ้าเพื่อนๆ ได้อ่านบทความของ ThaiKeras & Kaggle หลังๆ จะพบว่าเราพูดถึง TPU หรือ Tensor Processing Unit บ่อยมากๆ ทั้งนี้เพราะเจ้า TPU นี้เจ๋งสุดๆ ด้วย speed ที่เร็วระดับ fast & furious ยิ่งกว่า GPU ที่ใช้กันทั่วไปหลายสิบเท่า นอกจากนี้ยังเรียกใช้ได้ง่ายๆ บน Keras-TF2.0 … โดยไม่กี่เดือนที่ผ่านมานั้น Kaggle ได้อนุญาตให้ทุกคนใช้ TPU ได้ฟรีๆ ถึง 30 ชม. ต่อสัปดาห์ (เทียบเท่าค่าเช่าบน Google Cloud มากกว่า 3 หมื่นบาทต่อเดือน)

 

วันนี้เรามีข่าวดียิ่งกว่าเดิมมาฝากเพื่อนๆ ครับ นั่นคือทาง Tensorflow นั้นได้ยินดีที่จะมอบทุนวิจัยเพื่อใช้ TPU ฟรีๆ เป็นเวลาถึง 60 วันเต็มๆ (ไม่จำกัดจำนวนชั่วโมง) แก่บุคคลทั่วไป โดยเราเพียงเข้าไปที่เว็บไซต์ของ Tensorflow Research Cloud (TFRC) นี้เพื่อกรอกรายละเอียดงานวิจัยอย่างย่อของงานที่เราต้องการใช้ TPU ครับ

 

https://www.tensorflow.org/tfrc

 

โดยส่วนใหญ่ทีม TFRC จะตอบรับภายในเวลาไม่กี่วันครับ

 

อนึ่งทุนนี้จะอนุญาตให้เราใช้ TPU ฟรีๆ ไม่จำกัดชั่วโมงภายในเวลาที่กำหนด (ส่วนใหญ่คือ 60 วัน) บน cloud.google.com ซึ่งมีเรื่องต้องทราบสองเรื่องดังนี้

 

  1. เราต้องสร้าง Compute Engine (Virtual Machine) ซึ่งประกอบไปด้วย CPU, Ram, Disk, etc. ขึ้นมาใช้งานก่อน โดยค่าใช้จ่ายในส่วนของ VM นี้จะไม่รวมอยู่ในทุนของ TFRC (ค่าใช้จ่ายขึ้นอยู่กับ spec ของ CPU, Ram, Disk ที่เรากำหนด โดยทั่วไปมักไม่เกิน1$ ต่อชม. -- ในการใช้ gmail account ครั้งแรกบน GCP ทุกคนจะได้เครดิต 300$ ฟรีๆ ดังนั้นค่าใช้จ่ายตรงนี้แทบจะฟรีเช่นกันครับ)

 

ดูวิธีสร้าง tensorflow VM พร้อม Jupyter Notebook บน GCP ภายใน 90 วินาที!!

https://towardsdatascience.com/90-second-setup-challenge-jupyter-tensorflow-in-google-cloud-93038bcac996  

  1. ต้องสร้าง VM อยู่ในโซนที่กำหนด โดยเมื่อทางทีม TFRC ตอบรับข้อเสนอทุน TPU ของเราแล้ว ทาง TFRC จะกำหนดโซนที่เราจะใช้งานได้ฟรีมาให้ทางอีเมล์ เช่น

europe-west4-a หรือ us-east1-a เป็นต้น ซึ่งเราต้องสร้าง GCP VM ให้อยู่ในโซนเดียวกันนี้เท่านั้นครับ

 

หลังจากผ่านขั้นตอนที่ 1) และ 2) มาแล้วเราเข้าไปที่หน้า console.cloud.google.com ของเรา เราจะเจอเมนู TPU อยู่ด้านซ้ายก็สามารถกดเข้าไปเพื่อ Activate ได้ทันทีครับ!

 

This topic was modified 2 months ago by The Neural Engineer
อ้างอิง
Posted : 13/06/2020 5:49 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine

 

ตัวอย่างโค้ด TPU ที่เรานำมาประยุกต์เข้ากับงานวิจัยได้

 

 

This post was modified 5 months ago by The Neural Engineer
ตอบกลับอ้างอิง
Posted : 13/06/2020 5:49 am
The Neural Engineer
(@neural-engineer)
Boltzmann Machine

Colab vs. Kaggle - ไม่ต้องเลือก ใช้ทั้งคู่ดีที่สุด

ThaiKeras and Kaggle  6 กย. 2563

 

สวัสดีครับเพื่อนๆ ทั้ง Colab และ Kaggle ต่างก็เป็นสุดยอดคอมพิวเตอร์แล็บบน Cloud ที่ให้ใช้ Virtual Machine (VM) ประสิทธิภาพสูงทั้ง GPU และ TPU ฟรีๆ (โดย Colab มี Pro-option จ่ายเงินเพิ่มเพียง 300 บาทต่อเดือน)

ทั้งคู่เปิดโอกาสให้คนทั่วไปสามารถทำการทดลอง Deep Learning หรือ AI ระดับงานวิจัยชั้นสูงได้โดยไม่ต้องมีทุนหนา โดยก่อนหน้าที่จะมี Colab และ Kaggle นี้ (ราวๆ 2-3 ปีก่อน) การจะใช้ GPU / TPU ประสิทธิภาพสูงเช่นนี้ต้องจ่ายเงินอย่างน้อยราว 30,000 บาทต่อเดือน และอาจจะทะลุไปถึงหลักแสนบาทต่อเดือน (ในกรณีใช้ Multi-GPUs ซึ่งเทียบเท่ากับการใช้ TPU)

หลายคนอาจสงสัยว่าควรจะใช้ Colab หรือ Kaggle ดีกว่ากัน สำหรับส่วนตัวผมเองคิดว่าใช้ทั้งคู่ร่วมกันนั้นยอดเยี่ยมที่สุดครับ 

กล่าวโดยสรุป Colab นั้นจะโดดเด่นเรื่องสเป็คโดยรวมที่สูงกว่า ทำให้การทดลองแบบ Interactive หรือผู้ใช้งานทำการทดลองอยู่กับหน้าจอตลอดเวลานั้นทำได้อย่างมีประสิทธิภาพ

ส่วน Kaggle นั้นจะได้ความง่ายและสะดวกเรื่องการเซพและเข้าถึงข้อมูล และความมั่นใจในการรัน Batch Session นั่นคือเรารันงานทิ้งไว้โดยการันตีว่าเครื่องจะไม่ดับกลางคัน ถ้าเราใช้งานไม่เกินโควตาครับ

นอกจากนี้ยังมีรายละเอียดปลีกย่อย ที่เราจะมาลองขุดเพิ่มเติมกันในบทความนี้ ซึ่งข้อมูลต่างๆ จะเป็นข้อมูล ณ ขณะเขียนบทความนี้คือ 6 กันยายน 2563 ครับ

ถ้าพร้อมแล้วเรามาเริ่มกันเลยครับ

.

 

โหมดการใช้งาน interactive vs. batch modes

Kaggle มีทั้ง interactive mode และ Batch mode

ใน interactive mode เราต้องเปิด browser ทิ้งไว้ตลอดเวลา ถ้ามีการปิด browser หรือ internet เสียหาย เราจะมีเวลาราว 60 นาทีที่จะเชื่อมต่อใหม่อีกครั้งสำหรับ CPU และ GPU มิเช่นนั้นตัว server จะตัดการเชื่อมต่ออย่างสมบูรณ์หลังจาก 60 นาทีไปแล้ว ส่วน TPU นั้นต้องเชื่อมต่อภายใน 15 นาทีก่อนที่ VM จะถูกทำลาย

ส่วนใน batch mode เราสามารถปิด browser และสั่งให้ VM รันจนเสร็จและเซพ output ให้เราโดยอัตโนมัติได้เลย แต่ต้องรันต่อเนื่องไม่เกินโควต้าที่จะอธิบายในหัวข้อถัดไปด้วยนะครับ

ใน Kaggle เราสามารถรัน 10 CPU batch, 2 GPU batch, 2 TPU batch ได้พร้อมกัน ดังนั้นถ้าเราต้องการรันงานเล็กๆ หลายๆ งานพร้อมกัน (ไม่เกินโควตาที่กล่าวในหัวข้อถัดไป) โดยไม่ต้องพะวงเรื่องการเชื่อมต่อถูกตัด การรันบน Kaggle ก็จะสะดวกมากๆ ครับ

Colab นั้นมีเพียง interactive mode เท่านั้นจึงต้องเปิด browser และเชื่อมต่อ internet ตลอดเวลา โดยถ้าการเชื่อมต่อหลุด เรามีเวลาราว 30 นาทีก่อนที่ VM จะถูกทำลายครับ

.

 

โควต้าในการใช้งาน

Kaggle นั้นมี Quota ในการใช้งานเป็นรายสัปดาห์ โดยสามารถใช้ CPU ได้ไม่จำกัด  แต่รันต่อเนื่องไม่เกิน 9 ชม. นั่นคือถ้าเกิน 9 ชม. VM จะถูกทำลายและข้อมูลทั้งหมดจะถูกลบถ้าเราไม่ได้เซพข้อมูลไว้ แต่เราสามารถสั่งสร้าง VM ใหม่ได้เรื่อยๆ ไม่จำกัด

Kaggle มีโควตา GPU รวมให้ **ไม่น้อยกว่า** 30 ชม. ต่อสัปดาห์ โควต้าจะเปลี่ยนทุกสัปดาห์ตามที่ Kaggle ประเมินว่าจะมีทรัพยากรมากหรือน้อยในสัปดาห์นั้นๆ  บางสัปดาห์อาจได้เกือบๆ 50 ชม. เลยทีเดียว

ตัว GPU รันต่อเนื่องได้ไม่เกิน 9 ชม. เช่นเดียวกัน CPU

Kaggle TPU นั้นมีโควตาให้ 30 ชม. ต่อสัปดาห์ Kaggle-TPU นั้นเป็น resource ที่ประสิทธิภาพสูงมากและแพง ดังนั้นจึงรันต่อเนื่องได้ไม่เกิน 3 ชม. ครับ

 

Colab นั้นมีโควตาเช่นกัน แต่ไม่เปิดเผยชัดเจน และไม่เท่ากันในแต่ละสัปดาห์เช่นเดียวกับ Kaggle  โดย

Colab อนุญาตให้ใช้งานต่อเนื่องราวๆ 12 ชม. ส่วน Colab-pro ที่มีค่าใช้จ่ายราวๆ 300 บาทต่อเดือน จะให้ใช้งานได้ต่อเนื่องไม่เกิน 24 ชม. ทั้งนี้ขึ้นกับว่ามีผู้ใช้งานเยอะหรือไม่ในวันนั้นๆ ด้วย 

ถ้าเราใช้งานมากเกินโควตา Colab อาจหยุดทำงานกลางทางได้แม้นเราจะเปิด browser และต่อ internet ตลอดเวลาก็ตาม

.

 

การรันต่อเนื่องนานๆ

บางครั้งถ้า training data เรามีขนาดใหญ่มากๆ เราจำเป็นต้องรันต่อเนื่องนานๆ เพื่อให้การ train สำเร็จอย่างน้อย 1-3 epochs

ตรงนี้ Colab จะง่ายกว่าเนื่องจาก Colab สามารถรันต่อเนื่องได้นานถึง 12-24 ชม. ต่างจาก Kaggle ที่ได้เพียง 9 ชม. ซึ่งถ้าจะรันนานกว่านั้นบน Kaggle ทำให้ต้องมีการเซพ states ของ model, optimizer และโหลด states เหล่านั้นขึ้นมาในการรันครั้งต่อไป

อย่างไรก็ดีเนื่องจากโควตา Colab ไม่ระบุชัดเจน บางครั้งเมื่อเราใช้งานเยอะ และโควตาใกล้หมด VM อาจถูกทำลายก่อน 12 หรือ 24 ชม.  ดังนั้นเราจึงต้องระมัดระวังเซพข้อมูลมากขึ้นเพื่อกันไม่ให้ข้อมูลสูญหายครับ

 

Spec เทียบหมัดต่อหมัด

** GPU **

บน Colab ถ้าเรายังมีโควตาเราจะได้  P100 ซึ่งเป็นรุ่นประสิทธิภาพค่อนข้างสูง แต่ถ้าเราใช้งานจนโควตาเหลือน้อยเราอาจจะได้รุ่น T4 หรือ K80 ซึ่งประสิทธิภาพด้อยกว่าแทน ส่วน Kaggle นั้นการันตี P100 บนโควตารายสัปดาห์ที่กล่าวในหัวข้อข้างบนครับ

 

** TPU ** 

TPU คือหน่วยประมวลผลที่ใกล้เคียง Multi-GPUs 8 units จึงทรงพลังอย่างมาก โดย Kaggle นั้นเราจะได้รุ่นใหม่คือ V3-8 ที่มี RAM 16GB ทั้ง 8 Cores ในขณะที่บน Colab จะได้รุ่น V2-8 คือ RAM 8GB ทั้ง 8 Cores ข้อดีของ Kaggle คือ V3-8 ทำงานได้เร็วกว่า V2-8 เกือบเท่าตัว แต่ข้อเสียก็คือรันได้ต่อเนืองไม่เกิน 3 ชม. ทำให้ถ้าเรามีข้อมูลหรือโมเดลขนาดใหญ่มากๆ การรันบนบน Colab ที่ลิมิตสูงถึง 12-24 ชม. ก็อาจจะเทรนข้อมูลได้สะดวกกว่า

 

** RAM **

บน Kaggle CPU และ TPU จะมี RAM 16GB ส่วน GPU จะมี RAM เพียง 13GB

ส่วน Colab นั้นมาตรฐานคือ 13 GB แต่สำหรับ Colab-Pro จะมีโหมด High-RAM ที่เพิ่ม RAM ให้เป็น 25 GB สำหรับ CPU, GPU และ 35GB สำหรับ TPU ซึ่งยอดเยี่ยมมากๆ

โดย Colab เวอร์ชันธรรมดา (ไม่ Pro) ก็มีเคล็ดลับเข้าสู่โหมด High-RAM ได้ด้วยการใช้ RAM ให้เต็ม ซึ่งตัว Colab ก็จะมี option สลับให้เราใช้โหมด High-RAM ได้ครับ

 

** Disk **

Colab ใจป้ำมากๆ ให้ Disk มี่ขนาดมากถึง 226GB สำหรับ CPU, TPU และ 147GB สำหรับ GPU

อย่างไรก็ดีในกรณีที่เราต้องการเซพ output แบบถาวร เช่น weights ของ model ที่สอนเสร็จแล้ว เราจำเป็นต้องเซพลง Google Drive หรือ Cloud Storage อื่นๆ ซึ่งอาจมีค่าใช้จ่ายเพิ่มเติมครับ

ส่วนใน Kaggle ก็ใจป้ำเช่นกันแต่จะซับซ้อนกว่าหน่อย นั้นโควตา Disk จะแยกเป็นสามส่วนคือ /kaggle/input ซึ่งเราสามารถโหลด datasets ที่มีอยู่บน Kaggle ได้ 100GB (ดูรายละเอียดด้านล่าง),  /kaggle/temp/ ที่เราสามารถเซพข้อมูลชั่วคราวได้มากกว่า 100GB และ /kaggle/working 5GB ซึ่งจะเป็น output ที่ Kaggle จะเซพให้เราถาวรในกรณีที่เรารัน Batch Session โดยอัตโนมัติ ซึ่งทำให้การเซพ output ของเราสะดวกมากกว่า Colab ครับ

 

** spec สูงสุด **

โดยส่วนตัวแล้ว Colab TPU-HighRAM ที่เทียบเท่าการใช้งาน Multi-GPUs บน RAM 35GB, Disk 226GB และรันต่อเนื่องได้ถึง 24 ชม. นั้นถือว่าสุดยอดมากๆ ซึ่งน่าจะเทียบเท่ากับการเช่าเครื่องบน Cloud อย่าง AWS หรือ GCP หลายหมื่นบาทต่อเดือนทีเดียว

อย่างไรก็ดีเนื่องจากโควตามีจำกัด ก็พยายามไม่ใช้ spec นี้ถ้าไม่จำเป็นนะครับ 🙂

ในกรณีทั่วๆ ไป Kaggle TPU นับว่าเหลือเฟือมากแล้วดังนั้น การรัน Batch session พร้อมกัน 2 sessions และเซพ output ถาวรอัตโนมัติก็ถือว่าเป็นอะไรที่สะดวกมากๆ ครับ

 

.

การสร้าง notebook เพื่อเขียนโปรแกรม

ถ้าเรามีไฟล์โน้ตบุคอยู่แล้ว ทั้ง Colab และ Kaggle สามารถ upload ไฟล์โน้ตบุคนามสกุล .ipynb ได้อย่างง่ายดายครับ

โดย Colab นั้นจะมี option import (ก็คือก้อปปี้) โน้ตบุคจาก GitHub ซึ่งทำให้เราสามารถเข้าถึงโน้ตบุคสำเร็จรูปบน GitHub ได้สะดวกเพียง 1 click

ส่วนใน Kaggle นั้นจะโดดเด่นในเรื่องที่มีการจัดกลุ่มโน้ตบุคตาม Datasets และตาม Competitions ซึ่งทำให้เราสามารถค้นหาโน้ตบุคที่เราสนใจได้อย่างเป็นหมวดหมู่ เช่น ปัจจุบันมีการแข่งขัน "ทำนายประเภทนกจากเสียงร้อง" (Cornell Birdcall Identification) เราก็สามารถหาโน้ตบุคทั้งหมดที่เกี่ยวข้องกับการแข่งขันและ dataset นี้ได้ที่ https://www.kaggle.com/c/birdsong-recognition/notebooks  ซึ่งการรวมโน้ตบุคเป็นหมวดหมู่ไว้ที่เดียวกันแบบนี้ทำให้การค้นหางานที่น่าสนใจทำได้ง่ายมากครับ   

นอกจากนี้สามารถโน้ตบุคที่กำลังมาแรงในปัจจุบันได้ที่ https://www.kaggle.com/notebooks เราสามารถก้อปปี้โน้ตบุคเหล่านั้นได้ง่ายๆ เพียง 1 click (คลิ้กที่มุมขวาบนของโน้ตบุคและเลือกคำสั่ง Copy and Edit Notebook)

 

.

การโหลดข้อมูล input

การโหลดข้อมูลบน Kaggle นั้นสามารถทำได้อย่างเป็นระบบ เนื่องจาก Kaggle เองเป็นหนึ่งในแหล่งรวม Dataset ที่ใหญ่ที่สุดในโลก เราสามารถหา Datasets ที่เกี่ยวข้องกับงานของเราได้ที่

https://www.kaggle.com/datasets และสามารถ import datasets เหล่านี้เข้า notebooks เราได้ง่ายๆ บนเมนูในโน้ตบุค (กดปุ่ม Add Data ในเมนูขวามือ) โดยเราสามารถโหลด Datasets ทั้งหมดในโน้ตบุคได้ไม่เกิน 100 GB ครับ

นอกจากนี้เรายังสามารถ Upload Datasets ส่วนตัวเข้าสู่ Server Kaggle โดยตรงได้อีกด้วยครับ โดยแต่ละ User นั้นมีโควต้า upload ข้อมูลส่วนตัวที่ไม่แชร์คนอื่น (Private) ได้ 100GB แต่ถ้า upload แบบให้คนอื่นใช้ได้แบบสาธารณะ (Public) ก็จะไม่มีโควตาครับ ดังนั้นการจัดการข้อมูลบน Kaggle จึงได้เนื้อที่แทบจะ unlimited ฟรีๆ และค่อนข้างสะดวกมากๆ ครับ

 

ส่วน Colab เราจำเป็นต้องมีแหล่งข้อมูลที่เซพอยู่ใน Google Drive, Cloud Storage อื่นๆ หรือแม้แต่ Kaggle ก็ได้ครับ และใช้ API ของแต่ละค่ายโหลดมากันเอง ก็จะมีขั้นตอนมากกว่า Kaggle หน่อย

.

 

สรุป

จากข้อมูลทั้งหมดที่กล่าวมาก็หวังว่าจะเป็นไอเดียให้เพื่อนๆ เลือกใช้งานทั้ง Colab และ Kaggle ได้เต็มประสิทธิภาพนะครับ โดยส่วนตัวผมเอง ใช้ทั้งคู่ร่วมกัน โดยจะใช้ Kaggle ให้หมดโควตาก่อนเนื่องจากการโหลด input/output ทำได้สะดวกกว่า และเมื่อ setup pipeline ที่มั่นใจแล้ว ก็จะเทรนด้วยโมเดลขนาดใหญ่และข้อมูลขนาดใหญ่ ก็จะเลือกใช้ Colab Pro TPU

ซึ่ง เมื่อใช้ทั้ง Colab และ Kaggle ร่วมกันแบบนี้แล้ว ทำงาน 7 วันยังไม่เคยใช้โควตาหมดพร้อมกันแม้แต่ครั้งเดียวเลยครับ

เพื่อนๆ ที่มีประสบการณ์ดีๆ บนทั้ง 2 platforms นี้เพิ่มเติมสามารถแชร์ได้ในคอมเมนท์ข้างล่างเลยนะครับผม 🙂

และสำหรับเพื่อนๆ ที่ยังไม่ได้เป็นสมาชิก FB Group Colab Thailand สามารถเข้าไปร่วมแชร์ประสบการณ์กันได้ที่นี่ครับ : https://www.facebook.com/groups/colab.thailand/

ตอบกลับอ้างอิง
Posted : 06/09/2020 9:13 am
Share:

Please Login or Register