ถ้าอยากเริ่มสร้างระบบ AI ต้องรู้อะไรบ้าง? ต้องเตรียม Software หรือ Hardware อะไรบ้าง? บทความนี้จะช่วยให้ทุกคนเริ่มต้นได้อย่างถูกต้องครับ :)
ไม่ว่างานของเพื่อนๆ จะเป็นงานแบบ Stand alone ที่โฟกัสที่ระบบ AI โดยตรง หรืองานด้าน Business หรือเป็นการประยุกต์เข้ากับงานวิจัยต่างๆ อาทิเช่น งานทางด้านวิทยาศาสตร์ วิศวกรรมศาสตร์ การเงินหรือเศรษฐศาสตร์ก็ตาม การเตรียมตัวก็จะมีภาพใหญ่ที่เหมือนกันครับ
ในบทความนี้จะลิสต์ภาพใหญ่หรือสิ่งที่จำเป็นทั้งหมดเอาไว้ และลิงก์รายละเอียดเพิ่มเติมที่จำเป็นไว้ในแต่ละส่วนของบทความครับ เข้าเรื่องกันเลย ในภาพใหญ่นั้นสิ่งที่เราต้องเตรียมให้พร้อมหลักๆ มี 4 เรื่องใหญ่ดังต่อไปนี้
1. Fundamental knowledge คือความรู้ ความเข้าใจพื้นฐานเกี่ยวกับ AI และ Deep Learning เพื่อให้ออกแบบระบบ และเขียนโปรแกรมได้อย่างถูกต้อง2. Hardware คือตัวเครื่องคอมพิวเตอร์ที่ต้องมีประสิทธิภาพสูง ในยุคของ Deep Learning3. Software หรือ Programming Platform คือตัวอำนวยความสะดวกทั้งหลายในการเขียนโปรแกรม ซึ่งหนึ่งใน Platform ที่สำคัญ มีชื่อว่า Keras 4. Your goal & data คือเป้าหมายหรือปัญหาที่ต้องการแก้ที่ชัดเจน รวมถึง“ชุดข้อมูล”ที่จะใช้สอนให้ระบบเรียนรู้ปัญหาของคุณด้วยก่อนที่เราจะเริ่มเซ็ตอัพ Hardware หรือเขียนโปรแกรมนั้น ผมเชื่อว่าสิ่งที่สำคัญที่สุดยิ่งกว่าคือความเข้าใจพื้นฐานที่ถูกต้องเกี่ยวกับ AI ในยุคของ Deep Learning นี้ซึ่งเป็นเทคโนโลยีที่ปฏิวัติวงการ AI เมื่อไม่กี่ปีที่ผ่านมาทำให้ความรู้ ความเข้าใจ และผลงานที่บริษัทหรือนักวิจัยทำออกมามีความก้าวหน้าแบบก้าวกระโดด — แล้วเราควรจะเข้าใจอะไรบ้างล่ะ?
ก่อนอื่นเลยควรจะทราบว่า AI, Machine Learning และ Deep Learning คืออะไร สำคัญอย่างไร และต่างกันอย่างไรบ้าง กล่าวโดยสรุปก็คือในปัจจุบัน (ปี 2018 และอนาคตอีกอย่างน้อยสิบปี) วงการ AI จะถูกขับเคลื่อนด้วยสาขาย่อยที่ชื่อว่า Deep Learning เป็นศูนย์กลาง ดังนั้นใครก็ตามที่อยากเข้าใจและสร้างระบบ AI จึงจำเป็นต้องทำความเข้าใจเรื่อง Deep Learning อย่างหลีกเลี่ยงไม่ได้
ลำดับถัดมา ความรู้ที่ต้องมี คือการเขียนโปรแกรมขั้นพื้นฐานครับ ซึ่งเราแนะนำให้เริ่มจากภาษา Python ซึ่งเป็นภาษามาตรฐานของวงการนี้ และเริ่มต้นได้ค่อนข้างง่ายครับ โดยสามารถเริ่มต้นได้ที่ DataCamp หรือ CodeAcademy ก็ได้ครับ คอร์สเหล่านี้ผู้ที่ไม่เคยเขียนโปรแกรมมาก่อนเลยก็สามารถเริ่มได้ไม่ยากครับ ส่วนผู้ที่มีพื้นฐานอยู่แล้วก็สามารถเรียนหรือทบทวนได้เร็วๆ เลย
หมายเหตุ: มีน้องๆ หลายท่านสอบถามเข้ามาว่าเริ่มฝึก Python จาก FreeCodeCamp ได้หรือเปล่า ทีมเราได้เข้าไปดูการสอนแล้ว (สค 2021) คิดว่าไม่แนะนำครับ เพราะที่นี่เค้าไม่มีภาคปฏิบัติการเขียนโปรแกรมจริงให้ทำขณะเรียน เหมือนอีกสองแหล่งด้านบน (FreeCodeCamp จะให้เราทำแบบทดสอบปรนัยแทน) ซึ่งการเขียนโปรแกรมนั้นภาคปฏิบัตินั้นขาดไม่ได้ ในการเรียนรู้การเขียนโปรแกรมครับ
เมื่อเขียนโปรแกรมขั้นพื้นฐานได้แล้ว ก็ต้องต่อด้วยการเขียนโปรแกรมที่จำเป็นต้องใช้คณิตศาสตร์ของ Deep Learning มากขึ้น ซึ่งเราอธิบายรายละเอียดไว้ในหัวข้อที่ 3 ด้านล่างครับ
เมื่อเขียนโปรแกรมได้ดีแล้ว การจะทำความเข้าใจ Deep Learning ในระดับพื้นฐานให้กระจ่างนั้น ในยุคปัจจุบันเพื่อนๆ สามารถลงเรียนหลักสูตร online ได้อย่างสะดวกครับในหลักสูตร online นี้มีหลายรูปแบบไม่ว่าจะเป็น หลักสูตร intensive เน้นพื้นฐานรวมทั้งคณิตศาสตร์ของ Deep Learning รวมทั้งการทำการทดลองต่างๆ ให้ถูกต้องตามกระบวนการวิทยาศาสตร์ที่สอนโดยอาจารย์และนักวิจัยชั้นนำระดับโลก เช่น Andrew Ng หรือ Andrej Karpathy หรือหลักสูตรเร่งรัดต่างๆ สำหรับโปรแกรมเมอร์ที่ต้องการเขียนโปรแกรมให้ได้เร็วที่สุด อาทิเช่นหลักสูตรของ fast.ai, udemy ซึ่งเราได้ survey หลักสูตรระดับโลกต่างๆ ไว้ในบทความนี้ครับ
เมื่อทฤษฎีแน่นแล้วสามารถศึกษาที่ workshop ของ ThAIKeras เองได้ครับ
สำหรับเพื่อนๆ ที่อยากศึกษาคณิตศาสตร์ เพื่อที่จะเป็น Master หรือ Expert ด้าน AI สำหรับคณิตศาสตร์ที่ขาดไม่ได้ในการศีกษาโมเดลต่างๆ ของ AI และ Deep Learning ก็คือ Linear Algebra, Probability, Statistics และ Calculus ทั้งสี่ตัวนี้เป็นขั้นต่ำที่ต้องรู้ครับ
การจะเป็นผู้เชี่ยวชาญหรือ AI Master นั้นแน่นอนว่าไม่มีทางลัด แต่การหมั่นฝึกฝนในพื้นฐานเป็นทางตรงที่สั้นที่สุด ดั่งคำกล่าวด้านล่างครับ :
ปัจจุบันทุกคนสามารถเข้าถึงสื่อการสอนระดับโลกได้ง่ายๆ (โดยต้องเตรียมวิชาภาษาอังกฤษกันให้ดีนะคร้าบ) ลองเรียนกับผู้สอนชั้นนำเหล่านี้ครับ เราจะตกใจเลยว่าหลายๆ เรื่องที่ดูซับซ้อนนั้นเข้าใจได้ง่ายขนาดนี้เลยหรือ
Hardware ขั้นต่ำที่ผู้ใช้ทุกคนควรมีในยุคของ AI ที่มี Deep Learning เป็นจุดศูนย์กลางนั้น ได้เปลี่ยนแปลงไปมากจากช่วงปี 2000-2010 (ยุค AI ก่อนที่จะมาเป็น Deep Learning) มาก ในสมัยนั้นเราสามารถใช้เครื่อง PC หรือ Notebook ส่วนตัวเพื่อรันโปรแกรมของเราได้อย่างไม่ยากเย็นนักเนื่องจาก CPU ของเครื่องส่วนตัวของเรา นั้นมีประสิทธิภาพเทียบเคียงกับ CPU ของเครื่อง Server ขนาดใหญ่ในระดับที่ยอมรับได้
หลังจากนั้นไม่นานทุกอย่างก็เปลี่ยนไป เนื่องจากบริษัท NVidia ผู้ผลิต GPU หรือ Graphic Card ที่เดิมเคยใช้เป็นอุปกรณ์ประสิทธิภาพสูงที่ใช้ในการประมวลผลภาพกราฟฟิกหรือเล่นเกมส์เป็นหลักได้พัฒนา API (เรียกว่า CUDA) เพื่อให้การเขียนโปรแกรมทั่วๆ ไปสามารถใช้งาน GPU ได้ และเมื่อราวปี 2014 ทาง Nvidia ก็พัฒนา Programming Library สำหรับ Deep Learning โดยเฉพาะ (เรียกว่า CUDNN) ซึ่งทำให้การประมวลผลของ Deep Learning ด้วย GPU ตัวท้อปๆ นั้นเร็วขึ้นในระดับ 30-50 เท่าเมื่อเทียบกับ CPU เลยทีเดียว (อ้างอิงปี 2018) ในปี 2020 นั้นมี GPU รวมทั้งเทคนิกใหม่ๆ เช่น mixed precision ออกมาเรื่อยๆ ซึ่งอาจทำให้ GPU ที่ใช้ในปี 2020 เช่น GTX 2080ti และ V100 เร็วกว่าที่นิยมใช้เมื่อปี 2018 (เช่น GTX 1080ti, K80 หรือ P100) ไปอีกเป็นเท่าตัว
ล่าสุดซีรีย์ 3090 ในปี 2021 ก็ยังเพิ่มประสิทธิภาพให้เหนือกว่า 2080 ขึ้นไปอีก รวมทั้งเพิ่ม memory ใน GPU เป็นเท่าตัวทำให้สามารถสร้างโมเดลขนาดใหญ่กว่าเดิมได้สองเท่า นับว่ามีประโยชน์มากๆ ครับ
ด้วยเหตุนี้เอง นักวิจัยรวมทั้งนักพัฒนาทั่วโลกต่างก็ใช้ศักยภาพของ GPU กันอย่างเต็มที่ ทำให้ Software หรือ Programming Platform ต่างๆ ที่พัฒนาขึ้นมาในช่วงหลังต่างก็มีสมมติฐานว่าทุกคนล้วนมี GPU ตัวท้อปไว้ใช้งาน ดังนั้นโปรแกรมของเราก็จะทำงานช้ามากๆ ถ้าเราไม่มี GPU ดังกล่าว
กล่าวโดยสรุปก็คือถ้าจะใช้ Deep Learning เราต้องหา GPU ขึ้นมาใช้งานให้ได้ ซึ่งมี 3 วิธีที่คนส่วนใหญ่เลือกใช้กันคือ
ทั้งสามทางเลือกนี้เป็นตัวเลือกที่น่าสนใจ นอกจากนี้ยังมีทางเลือกที่ 4 ซึ่งเหมาะกับนักเรียน นักศึกษา หรือนักวิจัย (ไม่เหมาะสำหรับบริษัท) ที่เพิ่งเปิดให้ใช้งานราว 2018 นั่นคือ Kaggle Virtual Machine ซึ่งให้ใช้บริการได้ฟรีเช่นเดียวกับ Colab แต่ใช้งานง่ายและมี environment ที่เหมาะสมกับการทำ Project มากกว่า (เช่นเชื่อมกับ datasets นับหมื่นและโหลดได้เพียงคลิ้กเดียว รวมทั้งพูดคุยสอบถามและเรียนรู้ไปพร้อมๆ กับเพื่อนๆ เก่งๆ ทั่วโลก) โดยสามารถใช้ CPU-VM ได้ 10 VMs พร้อมกันไม่มีข้อจำกัด และ GPU-VMs ได้ 40 ชม++ .ต่อสัปดาห์ ดูรายละเอียดเบื้องต้นได้ในบทความนี้ครับ
เพิ่มเติมในปี 2020 Kaggle ได้ให้พวกเราใช้ TPU ฟรีสัปดาห์ละ 30 ชม. ซึ่งตัว TPU นี้มีความเร็วเทียบเท่า GPU V100 ที่แรงมากๆ ที่สุด 8 ตัวรวมกัน (ราคานับล้าน)!!! นับว่าเป็น resource ที่ยอดเยี่ยมมากๆ สำหรับนักศึกษาและนักวิจัย เพื่อนๆ ดูรายละเอียดเกี่ยวกับ Kaggle ได้ที่นี่ครับ
ล่าสุด บทความเดือนกันยายน 2020 เราได้แนะนำวิธีใช้ Colab และ Kaggle ร่วมกันอย่างละเอียดซึ่งเทียบเท่ากับการเช่าเครื่องราคาเหยียบแสนบาทต่อเดือน สรุปแล้วสำหรับเพื่อนๆ ที่มีหัวใจที่จะเรียนรู้และพัฒนาตัวเอง ถึงแม้จะมีงบน้อย การได้มี Colab และ Kaggle ใช้งานพร้อมๆ กันทำให้การเรียนรู้ของเราแทบจะไม่มีข้อจำกัดอีกต่อไปแล้วครับ บทความและ workshop ทั้งหมดของทีมงานที่เพื่อนๆ สามารถทดลองทำได้ทันทีจะอยู่บน 2 platforms นี้เช่นกัน ขอให้สนุกให้เต็มที่!!
การจะเขียน software ด้าน AI หรือ Deep Learning ขึ้นมานั้นมี Programming Platform หรือ tools ที่อำนวยความสะดวกต่างๆ ที่เราใช้งานจริงเยอะพอสมควร (ดูรูปซ้าย) สำหรับผู้เริ่มต้น ผมขอเสนอสูตร minimalist ที่ที่จำเป็นจริงๆ และเพียงพอต่อการใช้งาน Deep Learning ครับ ซึ่ง tools ที่เพื่อนๆ ควรรู้จักประกอบไปด้วย 5 tools ด้วยกัน (รูปขวา) คือ Python, Numpy, Jupyter, Keras และ Pandas ซึ่งขอเรียกทั้ง 5 tools นี้รวมๆ ว่า Deep Learning Programming Platform ครับ (+1 น้องใหม่ HuggingFace Transformer ในปี 2020)
สำหรับการเซ็ตอัพ Deep Learning Programming Platform นั้นถ้าเราเลือกใช้ Hardware ข้างต้นคือ Kaggle Virtual Machine, Colab หรือ Cloud Virtual Machine ชั้นนำนั้นเราแทบจะไม่ต้องทำอะไรเลยครับเพราะ servers เหล่านี้เตรียม tools ไว้ให้เราทั้งหมดเรียบร้อยแล้ว อย่างไรก็ดีกรณีที่เราจะเซ็ตอัพ server ของเราขึ้นมาเองก็จะมีขั้นตอนมากขึ้นครับเพราะต้องเริ่มตั้งแต่ลง OS เช่น Linux ใหม่เลยครับ
อัพเดต 2020 ถ้าเพื่อนๆ เชี่ยวชาญทั้ง 5 tools ดังกล่าวแล้ว ถัดมาที่ควรเรียนรู้คือ Huggingface's transformer ซึ่งเป็น Deep Learning tool ที่ทรงพลังที่สุดสำหรับจัดการข้อมูล text files ซึ่งปฏิวัติวงการ NLP ในช่วงปลายปี 2018 ครับ และได้รับการพิสูจน์ตลอดปี 2019-2020 ว่ามีประสิทธิภาพสูงกว่า tools เดิมๆ ที่เราใช้กันคือ LSTM / GRU มากดังนั้นจึงกลายเป็นมาตรฐานใหม่ของงาน NLP โดย Huggingface library นั้นใช้งานกับ Keras ได้ทันทีและอยู่ใน Kaggle VM อยู่แล้วเช่นกัน import มาใช้ได้โดยไม่ต้องติดตั้งอะไรเพิ่มเติม
ในสามหัวข้อที่ผ่านมาเราพูดถึงการเตรียมตัวความรู้รวมทั้ง tools ต่างๆ ที่มีอยู่แล้วในโลกสาธารณะ ในหัวข้อสุดท้ายนี้ถึงเวลาที่เราต้องกลับมาเตรียมตัวเองให้ชัดเจนว่าเราต้องการนำ AI หรือ Deep Learning ไปใช้งานด้านไหนกันแน่ เป้าหมายของเราอยู่ในขอบข่ายความสามารถของ AI หรือไม่ ทำได้ยากแค่ไหน และต้องเตรียมข้อมูลหรือทรัพยากรอะไรให้กับระบบ AI บ้าง
เรื่องแรกที่ต้องทำความเข้าใจก่อนก็คือ ระบบ AI ที่มีศูนย์กลางที่ Deep Learning นั้น
ประเด็นแรกเรื่องการกำหนดปัญหาให้ชัดเจนนั้น เพื่อนๆ จำเป็นต้องมี Fundamental Knowledge เพื่อที่จะได้เข้าใจพลัง ขอบเขต และวิธีการออกแบบสถาปัตยกรรมต่างๆ ของ Deep Learning อย่างที่กล่าวไว้ในหัวข้อแรกของบทความนี้ครับ
สำหรับประเด็นที่สองคือเรื่องของ “ข้อมูลสอน” นั้นเป็นเรื่องที่สำคัญมากและมักถูกมองข้ามไป และทำให้ระบบ AI มักไม่ประสบความสำเร็จเท่าที่ควรในทางปฏิบัติ ในปัจจุบันมีเว็บสาธารณะมากมายที่ให้เราดาวน์โหลด “ข้อมูลสอน” แบบไม่มีค่าใช้จ่ายซึ่งขั้นตอนสำคัญคือเราจำเป็นต้องเลือกข้อมูลเหล่านั้นให้ตรงหรือใกล้เคียงกับการใช้งานจริงของเรา จากประสบการณ์ส่วนตัวชุดข้อมูลสอนที่อาจจะหาได้ยากและเพื่อนๆ อาจจำเป็นต้องเตรียมชุดข้อมูลด้วยตัวเองคือ
จากประสบการณ์ส่วนตัวนั้นพบว่าแหล่งข้อมูลสากลที่ดีที่สุด สามารถค้นหาและทดลองใช้งานได้อย่างง่ายดายที่ kaggle ซึ่งเราจะเล่ารายละเอียดในบทความถัดๆ ไปครับ
บทความนี้เป็นการสรุปภาพใหญ่สำหรับเรื่องที่เพื่อนๆ จำเป็นต้องเตรียมตัวในการเซ็ตอัพระบบ AI / Deep Learning ขึ้นมา สำหรับรายละเอียดปลีกย่อยต่างๆ สามารถกดดูเพิ่มเติมได้ในลิงก์ของแต่ละหัวข้อครับเพื่อนๆ สามารถพูดคุยและติดตามบทความล่าสุดที่อัพเดตทุก 10 วันได้ที่ facebook ของเราคร้าบผม