ดั้งเดิมนั้น Keras คือ programming platform ที่ช่วยให้เราเรียนรู้วิธีการเขียน Deep Learning ได้อย่างง่ายดายและรวดเร็วที่สุดครับ จึงเป็นที่มาของชื่อเว็บของเรา ที่ต้องการให้เพื่อนๆ ชาวไทยสามารถเรียนรู้การเขียนโปรแกรม deep learning ได้โดยไม่เสียเวลา
ล่าสุดตั้งแต่ปี 2019 มานั้น ทาง Tensorflow ซึ่งเป็น platform มาตรฐานจาก google โดยตรง ได้ตัดสินใจผลักดัน Keras ให้เป็น API มาตรฐานของ Tensorflow (ตั้งแต่ version 2.0) โดยสมบูรณ์ ดังนั้นด้วยการสนับสนุนและพัฒนาจากทีม google โดยตรง เราจึงมั่นใจได้ว่าการฝึกเขียน Keras นั้นจะไม่ล้าสมัยแน่นอน
Tensorflow คือ Programming Platform ที่ทาง Google พัฒนาขึ้นด้วยตนเองจึงมีประสิทธิภาพสูง รวมทั้งคุณภาพของเอกสารการใช้งานต่างๆ นั้นก็เพียบพร้อม
อย่างไรก็ดี การใช้งาน Tensorflow นั้นค่อนข้างซับซ้อนและต้องอาศัยเวลาในการเรียนรู้พอสมควร ในเวลาต่อมา F. Chollet ซึ่งก็เป็นนักวิจัยที่ Google Lab จึงได้คิดพัฒนา platform ใหม่ที่เรียกว่า Keras ขึ้นมาเพื่อเอาไว้เรียกใช้งาน Tensorflow ในเบื้องหลังและให้พวกเราเขียนโปรแกรมผ่าน Keras ได้โดยแทบจะไม่ต้องยุ่งกับ Tensorflow อนึ่ง ปัจจุบัน Google ประกาศสนับสนุน Keras อย่างเป็นทางการ (ตั้งแต่ Tensorflow 2.0 เป็นต้นมา) ทำให้ Keras จะพัฒนาควบคู่ไปพร้อมกับ Tensorflow ทำให้ผู้ใช้ไม่ต้องกลัวว่าจะล้าสมัยครับ
สมัยก่อนเราคิดว่า CPU (จากค่ายดัง Intel / AMD) คือสมองของคอมพิวเตอร์ ในช่วงปี 2008 นักวิจัยได้ค้นพบว่า GPU ที่อยู่ใน Graphic Card (ปกติใช้ช่วยทำให้แสดงผลกราฟฟิกสวยงาม ใช้เล่นเกมส์) สามารถนำมาช่วยให้การเรียนรู้ของ Machine Learning ทำได้เร็วขึ้นมาก และประสบความสำเร็จในปี 2012 กับการประยุกต์ใช้ในโมเดล AlexNet (บทความนี้ครับ)
ปัจจุบัน (อัพเดตเมษายน 2020) GPU จากค่าย NVIDIA จึงกลายเป็นส่ิงที่ขาดไม่ได้ในการสร้างโมเดล Deep Learning โดย Cards ที่เราหาซื้อได้ทั่วไปคือ GTX 1080 , GTX 2070 และ GTX 2080 สามารถใช้งานได้ดี ได้ในปัญหาส่วนใหญ่ครับ รุ่นที่กำกับว่า ti เช่น 2080ti จะมีหน่วยความจำและประสิทธิภาพเพิ่มขึ้นและราคาก็จะเพิ่มขึ้นตามมา
ในกรณีที่เราเช่า Cloud บน GCP ของ Google หรือ AWS ของ Amazon รุ่น GPU จะมีให้เลือกไล่ตามประสิทธิภาพจากน้อยไปมากคือ K80, P100, T4, V100 เป็นต้น แนะนำให้ใช้ตั้งแต่รุ่น P100 ขึ้นมาครับ
ส่วน TPU คือ Hardware ที่ Google ออกแบบเองเพื่อมาใช้ทดแทน GPU โดย TPU รุ่น V3-8 ที่ให้ใช้ฟรีบน Kaggle มีความเร็วราวๆ V100 4-8 ตัวรวมกัน (ค่าเช่าเป็นแสนต่อเดือน) นับว่าเป็นโอกาสทองที่พวกเราจะได้ใช้ Hardware ระดับสูงฟรีๆ ครับ โดย TPU จะใช้งานง่ายที่สุดบน TF2.x และ Keras เนื่องจาก Google เป็นผู้ออกแบบเอง
โดยทาง ThaiKeras มองว่า TPU เป็นอนาคตของวงการนี้แน่นอนครับ และทีมงานก็กำลังศึกษาให้เชี่ยวชาญเพื่อจะแชร์ความรู้ให้เพื่อนๆ ต่อไปในอนาคต
ผู้สนใจสามารถเริ่มหัดใช้ TPU ฟรีๆ ได้ที่นี่ครับ https://www.kaggle.com/c/flower-classification-with-tpus/
ในปี 2020 นั้นเริ่มแน่ชัดแล้วว่ามีเพียง Keras+Tensorflow และ Pytorch เท่านั้นที่เป็นทางเลือกของ Machine Leraning Engineers มืออาชีพ โดย Keras นั้นใช้งานได้ง่ายที่สุด ในขณะที่ Pytorch จะอนุญาตให้เรา control training flow ได้ง่ายกว่าซึ่งเหมาะสำหรับนักวิจัย แต่ก็ไม่มี official API ที่ง่ายเหมือน Keras
แม้นจะมีนักวิจัยพยายามออกแบบ API สำหรับ Pytorch เช่น Catalyst, Lightning เป็นต้น แต่ API เหล่านี้ยังไม่ได้รวมกับ Pytorch อย่างเป็นทางการเหมือน Keras+Tensorflow ดังนั้น ซึ่งอาจเกิดประเด็นที่นักวิจัยอาจเลิกพัฒนา API เหล่านี้ในอนาคต
สำหรับประสิทธิภาพในแง่ของความเร็วนั้นบน GPU, ส่วนใหญ่Tensorflow มักสูสีกับ Pytorch ในขณะที่ Keras จะช้ากว่าเล็กน้อย อย่างไรก็ดีปัจจุบัน Google / Kaggle มี Hardware TPU ที่เร็วกว่า GPU ในท้องตลาดนับสิบเท่า และสามารถใช้งานได้ง่ายดายด้วย Keras เนื่องจากออกแบบมาพร้อมๆ กัน
ในแง่ของคุณภาพความแม่นยำของโมเดล Keras, Pytorch มักให้ผลใกล้เคียงกัน ดังจะเห็นได้จากผู้ชนะบน Kaggle มักมีทั้งผู้ใช้ Keras / Pytorch สลับกันไป
อย่างที่เกริ่นในบทความนี้ เราต้องมี GPU, Libraries และ Data ถึงจะเริ่มต้นฝึกได้ และโชคดีมากๆ ที่ในปัจจุบันเรามี ทางเลือกฟรีๆ 2 ทางใช้ร่วมกันได้ และมีทางเลือกประหยัดมากๆ อีก 1 ทาง
- เริ่มต้นบน Kaggle ซึ่งมี GPU และ Libraries ครบกดปุ่มเดียว เริ่มเขียนได้เลย ส่วน Dataset ก็มีให้โหลดเข้าง่ายๆ กดคลิ้กๆ เลือกเอาจากหลายหมื่น Datasets นอกจากนี้ยังมีเพื่อนๆ จากทั่วโลกคอยพูดคุยช่วยเหลือตลอด เรียกได้ว่าแค่ที่นี่ที่เดียวก็เรียนรู้ได้ตลอดชีวิต โดย GPU ใช้ได้ 30 ชม.ต่อสัปดาห์
- Colab ซึ่งมี Libraries และ GPU ให้ใช้ฟรีเช่นกัน โดยใช้งานได้ต่อเนื่อง 12 ชั่วโมงและไม่มี limit เหมือน Kaggle แต่ก็จะหลุดบ่อยหน่อย และไม่มี Datasets ให้โหลดเข้าง่ายๆ เหมือน Kaggle (แต่ก็ใช้เทคนิกพิสดารโหลดมาจาก Kaggle ได้นะครับ)
- Colab Pro จ่ายเพียง 300 บาทต่อเดือน ได้อัพเกรด spec ของ Colab และลดปัญหาใช้งานแล้วหลุดบ่อยลงไปได้
เมื่อได้เครื่องที่ถูกใจแล้ว ก็สามารถเริ่มต้นจาก Keras Workshops ต่างๆ ของ ThaiKeras เราได้ครับ ซึ่งมีทั้ง Workshops บน images, texts, NLP และ signal งานด้านการแพทย์ งานศิลปะ หรือพื้นฐาน numpy ให้ได้ฝึกกันตามถนัด
https://thaikeras.com/category/workshop/
อย่างไรก็ดีเพื่อนๆ ควรจะมีพื้นฐาน Machine Learning ก่อนเล็กน้อยนั่นคือรู้จักโมเดลต่างๆ เพื่อจะได้เข้าใจโค้ดใน workshops ได้อย่างกระจ่างครับ โดยลองเรียนในคอร์สที่เราแนะนำครับ
- Facebook สอนหน่อย เป็นเพจที่น้องแอดมินน่ารัก มีความตั้งใจที่จะถ่ายทอดความรู้ Deep Learning ตั้งแต่พื้นฐานให้อยู่ในภาษาไทยง่ายๆ ที่นักเรียนม.ปลาย (วัดตามพื้นคณิตศาสตร์) อ่านเข้าใจ
- Facebook เนิร์ด ML เป็นเพจที่เจาะเปเปอร์บทความวิจัยที่สำคัญหรือที่น่าสนใจในวงการเป็นเรื่องๆ ไปในแต่ละโพสต์
- Facebook Group Colab Thailand เป็นกลุ่มที่แชร์ความรู้เกี่ยวกับการใช้งาน Colab ซึ่งมี GPU VM ชั้นเยี่ยมให้เราใช้ฟรีๆ (หรือประหยัดถ้าใช้ Pro) แอดมินกลุ่มแชร์ความรู้ตลอดเวลา ยอดเยี่ยมครับ
- Facebook Group Data Science Bangkok เป็นกลุ่มที่ Data Scientists คนไทยเก่งๆทั้งหลายมาแชร์ความรู้กันครับ
- Facebook Group Thai NLP สำหรบคนรัก NLP ภาษาไทยโดยเฉพาะครับ 😀
ในสมัยใหม่นี้ การเขียนโปรแกรมแตกต่างไปจากสมัยไม่กี่ปีก่อน ที่เราจำเป็นต้องซื้อเครื่องคอมพิวเตอร์ ลงโปรแกรมเพื่อเขียนโปรแกรม และ setup tools/libraries ต่างๆ ที่เกี่ยวข้องกับการเขียนโปรแกรมในเครื่องของเรา เพราะเราไม่ต้องทำอะไรพวกนั้นแล้ว เริ่มเขียนได้ทันทีขอแค่มีอินเตอร์เน็ต!!
เริ่มได้ยังไง ในเมื่อเราไม่มีเครื่อง ?
การเขียนโปรแกรมสมัยใหม่ เรียกว่าเขียนบน Cloud นั่นคือ ผู้ให้บริการ Cloud เช่น Google, Amazon หรือ Kaggle นั้นได้ setup เครื่องและสิ่งจำเป็นทั้งหมดให้เราแล้ว สิ่งที่เราทำเพียงแค่เข้า web แล้วเราก็สามารถเริ่มเขียนผ่านเว็บได้ทันที “เสมือน” เรามีเครื่องที่ setup เสร็จแล้ว (คำว่า “เสมือน“ นี้ จึงเป็นที่มาของคำว่า “Virtual Machine”) โดย web browser จะส่งข้อมูลที่เราเขียนไปยัง cloud และส่ง output จาก cloud มาให้เราที่ browser นั่นเอง
บน Kaggle นั้นนอกจากให้เราใช้ VM ฟรีๆ แล้ว ยังเป็น VM คุณภาพสูงที่มี GPU/TPU ในตัว (ปี 2020) ซึ่งจริงๆ แล้วค่าเช่าแพงมากๆ นอกจากนี้เรายังสามารถก้อปปี้โปรแกรมของคนอื่นที่เขียนเสร็จแล้ว มาเขียนต่อบน VM ของเราเอง ซึ่งทำให้การเขียนโปรแกรมนั้นง่ายขึ้นกว่าสมัยก่อนนับสิบเท่า ดังนั้น ยุคนี้นับเป็นยุคทองของการเขียนโปรแกรมอย่างแท้จริงครับ
อยากได้บทความเริ่มต้น สำหรับมือใหม่จริงๆ ในการเริ่มเขียนโปรแกรม
เราจะรวมบทความภาษาไทยสำหรับมือใหม่ไว้ที่นี่ และจะทยอยอัพเดตครับผม