Kaggle + Github + Colab  

  RSS
The Neural Engineer
(@neural-engineer)
EfficientNet

รู้จักและเรียนรู้ Github บน Git Learning Lab

ThaiKeras and Kaggle  28 พย. 2563

 

สวัสดีครับ เชื่อว่าเพื่อนๆ ทุกคนต้องเคยเห็น Github เนื่องจากเป็น สถานที่ที่มืออาชีพในวงการเลือกใช้ในการเก็บและพัฒนา source codes โดยเฉพาะโครงการ Open source ต่างๆ ที่ทุกคนสามารถนำไปใช้งานหรือร่วมกันแก้ไขได้ 

 

ประโยชน์ของ Github เบื้องต้น ที่ทุกคนควรรู้

  • Github คือเว็บที่ให้เราเก็บ Source codes ของโปรเจกต์ไม่จำกัดขนาด ทำ versioning system ให้ทำให้เราเปรียบเทียบประวัติการแก้ไขโค้ดได้อย่างสะดวก
  • ที่เด่นที่สุดคือ สนับสนุน “flow” ในการเขียนโปรแกรมเป็นทีม เพราะสมาชิกสามารถแตก “branch” (ตัวก้อปปี้ของ source code ฉบับ master) ไปแก้ไขได้อย่างสะดวก โดยไม่ต้องกังวลว่าจะมาแก้จุดเดียวกันกับสมาชิกคนอื่นๆ พร้อมๆ กัน หรือไม่ต้องกังวลว่าจะทำให้ source code ของโปรเจกต์มีบั้ก (เนื่องจากฉบับ master ไม่มีการเปลี่ยนแปลงใดๆ )
  • เมื่อพัฒนาแต่ละ branch เสร็จแล้ว ผู้พัฒนาสามารถ “ขออนุญาต” (Pull Request) นำ branch เข้ามาแทน master ได้ โดย Github จะตรวจสอบให้เราอัตโนมัติว่ามีโค้ดในบรรทัดใด ที่ “ถูกแก้พร้อมกัน” (conflict) กับ branch อื่นๆ ที่ผนวกรวมกับ master ไปก่อนหน้านี้หรือไม่ 
  • มีระบบการ “รีวิว” ที่สุดยอด โดยในการทำ Pull Request แต่ละครั้ง ทีมจะต้องกำหนดชุด Reviewers ขึ้นมาตรวจสอบการแก้ไขของ branch นั้นๆ ว่าสมเหตุสมผล และเขียนโค้ดได้มาตรฐานหรือไม่ ระบบให้เราวิจารณ์และถกโค้ดเป็นรายบรรทัดได้อย่างสะดวก ทำให้การแก้ปัญหาและแก้ไขโค้ดที่เหมาะกับทีมที่สุดทำได้ง่ายมากๆ
  • นอกจากนี้ยังมีระบบเว็บบอร์ด (เรียกว่า Issues) เพื่อให้คนในทีมและคนทั่วไป “รายงานบั้ก” หรือ “พูดคุยเกี่ยวกับ features ต่างๆ” ที่ควรมี และสามารถปิด issue ที่จัดการแล้วทิ้งไป ทำให้ทุกคนทราบ “สถานะ” ปัจจุบันของ source code ในแต่ละโปรเจกต์ได้อย่างกระจ่างครับ
  • ก่อนหน้านี้สิ่งเหล่านี้ต้องทำผ่าน command line ที่ค่อนข้างซับซ้อน แต่ปัจจุบันฟังก์ชันทั้งหมดนี้ทำบนเว็บ github.com ซึ่งมี interface สวยงามใช้งานง่าย เหมาะกับคนทั่วไป ไม่ต้องจดจำ command lines ใดๆ เลยครับ
  • นอกจากนี้ github ยังมี features เสริมเช่นเป็น hosting ของเว็บไซต์ของ source code โปรเจกต์นั้นๆ ได้ฟรี ทำเว็บง่ายๆ โดยใช้ markdown เช่นเดียวกับการเขียน Jupyter Notebook หรือ wikipedia นั่นเอง

 

เรียนรู้การใช้งาน Github.com ด้วย Git Learning Lab

สิบปากว่า ไม่เท่าตาเห็นบวกลงมือทำ ประโยชน์เบื้องต้นของ Github ที่เล่าไปข้างต้นนั้นเพื่อนๆ สามารถฝึกฝนผ่านแบบเรียนแบบสนุกๆ ในแบบเรียน“ภาคปฏิบัติ” (คล้ายๆ เกมส์) ที่เรียกว่า “Git Learning Lab” ครับ

โดย Git Learning Lab คือแบบเรียนเสมือนจริง ซึ่งสอนการใช้งานบน Github.com โดยจะมี GitBot มาเปิด “issues” เพื่อขอร้องให้เราไปแก้ไขประเด็นต่างๆ (พร้อมสอนวิธีแก้) และเจ้าบอทตัวนี้ก็ยังจะมาขอทำ (และสอนเราทำ) Pull Request ให้เราช่วยรีวิว และยังสอนแก้ Conflict เบื้องต้นอีกด้วยครับ

โดยแบบเรียน Git Lab นี้มีมากมายสามารถดูได้ที่

https://lab.github.com/ โดยการใช้งานเบื้องต้นที่เราเล่าในบทความข้างต้นจะอยู่ในชุด “สัปดาห์แรกบน Github” https://lab.github.com/githubtraining/first-week-on-github   ซึ่งแนะนำให้ลองเล่นเป็นแบบเรียนแรกครับ นอกจากนี้ยังมีคอร์สอื่นๆ อีกมากมายเช่น “การรักษาความปลอดภัยของโค้ดบน Github” และ “แนวทางการพัฒนา software ขนาดใหญ่ให้ปลอดบั้กด้วย Continuous Integration” อีกด้วย

อ้างอิง
Posted : 16/12/2020 6:07 am
The Neural Engineer
(@neural-engineer)
EfficientNet

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

ThaiKeras and Kaggle  6 กย. 2563 -- อัพเดต 16 ธค. 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 ประเมินว่าจะมีทรัพยากรมากหรือน้อยในสัปดาห์นั้นๆ  บางสัปดาห์อาจได้เกือบๆ 40 ชม. เลยทีเดียว

ตัว 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 แต่ล่าสุด ธันวาคม 2020 อัพเกรดแรมเวอร์ชั่นธรรมดาให้เท่า Colab-Pro ในโหมด High-RAM เป็น 25 GB สำหรับ CPU, GPU และ 35GB สำหรับ TPU ซึ่งยอดเยี่ยมมากๆ  (อย่างไรก็ตาม Colab Pro จะได้เพิ่ม running time กับ Disk แทนครับ)

 

** Disk **

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

อัพเดต ธันวาคม 2020  ในเวอร์ชันธรรมดาพื้นที่ Disk จะเหลือครึ่งเดียวของตัวเลข Pro ข้างต้นครับ

อย่างไรก็ดีในกรณีที่เราต้องการเซพ 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 ครับ

อัพเดต ธันวาคม 2020 /kaggle/working เพิ่มเป็น 20 GB

** 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 : 16/12/2020 6:18 am
The Neural Engineer
(@neural-engineer)
EfficientNet

ใช้งานสามทหารเสือ Github + Colab + Kaggle

ThaiKeras and Kaggle  17 ธค. 2563

สวัสดีครับเพื่อนๆ วันนี้อยากลองแชร์ pipeline การทำงานบน Github + Colab + Kaggle ที่ผมใช้ด้วยตัวเองอยู่ โดยสามเว็บนี้ถือได้ว่าเป็น “ที่สุดของของฟรี” ที่เราควรจะใช้ให้ได้ประโยชน์สูงสุด โดย pipeline ที่แชร์จะเป็น Colab notebook ในตอนท้ายของบทความครับ

เราเคยเขียนถึง Colab และ Kaggle กันไปแล้วในบทความนี้ และเล่า Github ย่อๆ ในบทความก่อน กดเลื่อนขึ้นไปอ่านได้เลยครับ

.

 

Kaggle เดี่ยวๆ  — vs. — Github +Colab +Kaggle

อันที่จริง Kaggle นั้นมีระบบ source code versioning ภายในตัวนั่นคือจะเก็บโค้ดทุกเวอร์ชั่นให้เราอย่างอัตโนมัติ เปรียบเทียบโค้ดระหว่างเวอร์ชั่นได้ และไม่จำกัดพื้นที่เก็บโค้ดเช่นเดียวกับ Github นอกจากนี้ยังมี GPU และ TPU ในตัวเช่นเดียวกับ Colab

และที่พิเศษสุด Kaggle ยังอนุญาตให้เราสร้าง dataset ได้อย่างไม่จำกัดในข้อมูลชนิด pubilc และให้ private storage อีก 100GB ทำให้ในทางปฏิบัติเราจึงมี cloud storage ที่เก็บ datasets และ pretrained models ได้อย่างไม่จำกัด ฟรีๆ เลยครับ

ดังนั้นจากที่กล่าวมา ในงานส่วนตัว หรือการทดลอง concept ต่างๆ นั้นใช้ Kaggle อย่างเดียวอาจจะเพียงพอ และจบในตัวเอง จึงเป็นตัวเลือกที่สะดวกที่สุดที่เราแนะนำเพื่อนๆ ครับ

อย่างไรก็ดีถ้าโปรเจกต์มีขนาดใหญ่ขึ้น ต้องร่วมกันทำกับเพื่อนหลายคน รวมทั้งอาจต้องมี production version ที่ถูกเรียกใช้งานจากภายนอกตลอดเวลา (ไม่สามารถเสี่ยงทดลองที่จะทำให้เกิดบั้กได้) ในกรณีนี้เราจำเป็นต้องใช้ความสามารถของ Github Coding Flow

นอกจากนี้เรายังอาจลงทุนเล็กน้อยใน  Colab Pro (ราว 300 บาทต่อเดือน) ซึ่งให้ RAM Storage และ Running time ที่ทรงพลังมากกว่า Kaggle ก็จะทำให้ทำงานกับโมเดลที่มีขนาดใหญ่ได้ครับ

(โดยเรื่องของ Github Flow และ Colab spec นั้นอ่านได้จากบทความก่อนๆ ที่เราแปะลิงก์ไว้ตอนต้นครับผม)

อย่างไรก็ดี Kaggle นั้นเข้ามาเติมเต็มเรื่อง Storage ฟรีซึ่งทั้ง Colab และ Github ไม่มีให้ หลายๆ คนใช้ Google Drive กับ Colab ซึ่งต้องแชร์กับพื้นที่ส่วนตัวของเรา จึงแนะนำให้ใช้ Kaggle storage ดีกว่าครับ

ในบทความนี้เราจึงจะมาลองดูวิธีง่ายๆ ในการประสานงานสามทหารเสือกันครับ

.

 

ใช้งานสามทหารเสือโดยมี Colab เป็นตัวกลาง

ผมได้เตรียม Colab notebook เป็นตัวอย่าง pipeline ในการใช้งานสามประสานร่วมกัน มีกระบวนการคร่าวๆ แบบนี้ครับ

  • สร้าง branch บน project ที่ Github ที่ต้องการเพิ่มเติม/แก้ไข
  • “Clone” branch นั้นมาที่ Colab
  • สร้าง/โหลด datasets และ models ที่จำเป็นไว้ที่ Kaggle
  • แก้ไขโค้ด และทดลองบน Colab ด้วย magic functions คือ autoreload และ writefile
  • Upload dataset/model ใหม่เข้า Kaggle
  • Upload code ที่แก้ไขบน Github โดยใช้ web interface
  • Pull Request branch ที่แก้ไขแล้วเพื่อให้เพื่อนในทีมรีวิวบน Github
  • เมื่อโค้ดถูกรีวิวโดยสมบูรณ์ก็พร้อม merge เข้า master version เป็นอันจบลูป 1 รอบครับ
  • ในกรณีที่ต้องการเซพไฟล์เป็นชนิด Jupyter Notebook บน Github สามารถทำได้เลยบน Colab โดยเลือก "Save a copy to GitHub" ซึ่งจะเชื่อมต่อกับ GitHub account ของเราโดยตรง นอกจากนี้ใน Notebook บน GitHub ที่เซพไว้ยังจะมีปุ่ม "Open in Colab" เท่ห์ๆ ให้อีกด้วย 😀

สามารถกดดู Colab ได้ที่นี่ครับ https://colab.research.google.com/drive/14f0CYhgCUsPVnxheXA4KPYxPiTpccm5c?usp=sharing

This post was modified 5 months ago by The Neural Engineer
ตอบกลับอ้างอิง
Posted : 16/12/2020 6:22 am
Share:

Please Login or Register