เริ่มต้น Set Up Kaggle.com

- https://thaikeras.com/2018/setup-kaggle-workshop/

ขอต้อนรับเพื่อนๆ เข้าสู่ก้าวแรกในการเขียนโปรแกรมและสร้างระบบ AI / Deep Learning ครับ! ในขั้นแรกสุดก่อนที่เราจะทำอะไรได้ เราจำเป็นต้องมีฮาร์ดแวร์ที่รองรับการเขียนโปรแกรมที่จำเป็นก่อนใช่ไหมครับ ตัวอย่าง ฮาร์ดแวร์ที่จำเป็นต้องมีก็คือ หน่วยประมวลผล CPU คุณภาพสูง หน่วยความจำ HDD / RAM จำนวนมาก รวมทั้งที่ขาดไม่ได้ก็คือหน่วยประมวลผลคู่ขนาน GPU คุณภาพสูง ซึ่งอุปกรณ์ทั้งหมดที่ว่ามานี่มีราคาแพงมากทำให้เดิมการเขียนโปรแกรม Deep Learning อย่างจริงจังนั้นถูกจำกัดดูในคนกลุ่มเล็กๆ เท่านั้นครับ

เมื่อกลางปี 2018 นี่เอง เรื่องเหลือเชื่อก็เกิดขึ้นครับ เมื่อ Kaggle.com บริษัทลูกของ Google ได้อนุญาตให้เราใช้อุปกรณ์ดังกล่าวทั้งเซ็ตแบบฟรีๆ และเข้าถึงได้อย่างง่ายดายผ่าน browser ไม่ว่าคุณจะอยู่ที่ไหนก็ได้ในโลก! ทั้งหมดนี่มีเงื่อนไขแค่เพียงว่าจะอนุญาตให้เราทำงานต่อเนื่องได้ไม่เกิน 9 ชั่วโมงเท่านั้น ซึ่งก็เพียงพอมากสำหรับการทำ Project Deep Learning มาตรฐานสากลครับ (อนึ่ง เมื่อรันครบ 9 ชั่วโมงแล้วเราสามารถเซพการรันโปรแกรมล่าสุดไว้ได้ และสร้างการรันได้ต่อเนื่องอีก 9 ชั่วโมงไปเรื่อยๆ ครับ) UPDATEปี2020: ปัจจุบันสามารถใช้ GPU VM ได้ไม่เกิน 30 ชม.ต่อสัปดาห์ และไม่จำกัดโควต้ำสำหรับ CPU VM ทั่วไปครับ

ไม่เพียงเท่านั้น นอกจากฮาร์ดแวร์คุณภาพสูง Kaggle เองยังเตรียมไลบรารีที่จำเป็นสำหรับการเขียนโปรแกรมไว้ครบถ้วน ทำให้เราไม่ต้องเซ็ตอัพเอง ไม่ว่าจะเป็น Python, Numpy, Tensorflow, Keras รุ่นล่าสุด และยังมีไลบรารีอื่นๆ อีกมากมาย และยังไม่หมดเท่านี้ Kaggle เองอนุญาตให้เราใช้ Datasets ใดๆ ของคนทั่วโลกที่นำมาแชร์ไว้ได้เพียงแค่ 1 คลิก (รวมทั้งแนะนำ Dataset ที่ใกล้เคียง) และอนุญาตให้เราลองเอาโค้ดของเพื่อนๆ ทั่วโลกมาทดลองหรือแก้ไขได้อย่างง่ายๆ ผ่าน Editor ที่เรียกว่า Jupyter Notebook

ความสามารถทั้งหมดที่ Kaggle เตรียมให้พวกเราได้เขียนโปรแกรมระดับคุณภาพนี้ รวมแล้วมีชื่อเรียกว่า Kaggle Kernel ซึ่งใน Workshop ของเราก็จะอยู่บนพื้นฐานความสามารถเหล่านี้ของ Kaggle Kernel ครับ (ก่อนหน้านี้ทีมงาน ThAIKeras เองก็ทำงานอยู่บนระบบ Cloud ที่มีค่าใช้จ่ายค่อนข้างแพง แต่เมื่อ Kaggle เปิดโอกาสให้พวกเราได้ใช้งาน Kaggle Kernel ที่มี GPU นั้นทำให้พวกเราตื่นเต้นมาก และสามารถประหยัดค่าใช้จ่ายในการทำงานได้มากครับ)

ในบทความนี้จะพาเพื่อนๆ ที่ยังไม่เคยใช้งาน Kaggle เข้าไปใช้งานและทำความรู้จักกับสิ่งอำนวยความสะดวกต่างๆ ในการเขียนโปรแกรมที่ kaggle โดยแบ่งออกเป็นสามส่วนใหญ่ๆ ดังนี้ครับ1. เซ็ตอัพแอคเคานท์ที่ Kaggle และคัดลอก Kernel มาไว้ที่แอคเคานท์ตนเอง 2. ทำความรู้จัก Kaggle Kernel ซึ่งก็คือ GPU Virtual Machine + Jupyter Notebook 3. ทดลองทำ Workshop แรกบน Kaggle : ว่าด้วยทักษะ Python และ Numpy

1. เซ็ตอัพแอคเคานท์ที่ Kaggle

หลังจากเกริ่นกันมามากพอควรแล้ว เราก็เริ่มเข้าไปฝึกเขียนโปรแกรมที่ Kaggle.com กันเลยดีกว่าครับ!

  • เมื่อเข้าไปแล้วก่อนอื่นเลยเพื่อนๆ ก็สร้าง Account บน Kaggle กันก่อนนะครับ จะสร้างผ่านบัญชี Google หรือ Facebook ก็ได้ หลังจากนั้น kaggle จะให้พวกเรากรอกฉายาหรือชื่อเล่น รวมทั้งประวัติสั้นๆ ตรงนี้เพื่อนๆ สามารถใส่ข้อมูลได้ตามสะดวกเลยครับ

  • หลังจากสร้าง Account เสร็จแล้ว ให้เพื่อนๆ กดเข้ามาที่ Kernel แรกที่ทางทีม ThAIKeras ได้สร้างไว้ให้ครับ กดเข้าลิงก์นี้เลยครับ

  • เมื่อกดลิงก์เข้าไปแล้ว จะพบ Python & Numpy Notebook ตามรูป

  • Notebook นี้ยัง Notebook ที่อยู่ในความครอบครองของผู้เขียน (เป็น Account ของ The Neural Engineer อยู่) ดังนั้นเพื่อนๆ ยังไม่สามารถ Edit หรือทดลองรันได้ แต่ว่าสามารถดูได้ว่า Notebook นี้พูดถึงอะไร สอนอะไร และทดลองอะไร อ่านได้เสมือนบทความสอนการเขียนโปรแกรมบทความหนึ่งเลยครับ

  • สิ่งที่ Notebook เหนือกว่าบทความก็คือ อนุญาตให้เรา “แก้ไข” หรือ “ปรับปรุง” ได้ทันที ทั้งนี้ต้องก๊อปปี้ Notebook มาไว้ที่ Account ตัวเองก่อนครับ กดที่ Fork Notebook เพื่อก๊อปปี้ Notebook อีกฉบับไปไว้ที่ Account ตนเองได้เลยครับ จากนั้นเพื่อนๆ จะสามารถ Edit และทดลองรันได้แล้ว

  • เมื่อ Fork แล้วให้กลับมาที่หน้า Account ของเพื่อนๆ เองครับ (ในรูปเป็น Account ของผู้เขียน ส่วนเพื่อนๆ เมื่อกดมาที่ Account ตัวเองก็จะเจอ profile ที่ตนเองตั้งไว้นะครับ)

  • จากนั้นให้คลิกไปที่ยังแท็บ Kernel ตามรูปครับ ซึ่ง kernel ที่เพื่อนๆ fork มาจะอยู่ในนี้

  • เมื่อกดที่ Kernel ที่ fork มาใน account ของตนเองแล้ว ก็ให้กดปุ่ม “Edit Notebook” ตามรูป เพื่อเริ่มเข้าไปลุยเขียนโปรแกรมกันเลยคร้าบ

2. รู้จัก Kaggle Kernel (GPU Virtual Machine + Jupyter Notebook)

ความตื่นเต้นกำลังจะเริ่มขึ้นแล้วครับ!

  • เมื่อกด edit notebook ตามขั้นตอนข้างบนเรียบร้อยแล้ว ตอนนี้เพื่อนๆ สามารถแก้ไข ปรับปรุง หรือทดลองทุกอย่างใน Notebook ได้ด้วยตนเอง แต่ก่อนอื่นเรามาทำความรู้จักการควบคุมการทำงานคร่าวๆ ก่อนดีกว่าครับ

  • คำว่า Notebook นี้ ย่อมาจากชื่อเต็มคือ Jupyter Notebook ซึ่งเปรียบเสมือนเป็นโปรแกรมการเขียนหนังสือ programming ในฝันที่ให้ผู้อ่านสามารถปรับและทดลองสิ่งในหนังสือได้ตามต้องการ ดั่งที่ได้เกริ่นไว้แล้วด้านบน

  • จากรูปในกรอบ A. จะเป็นส่วนที่อนุญาตให้เพื่อนๆ เปลี่ยนชื่อ Notebook รวมทั้ง download หรือ upload notebook ที่มีอยู่แล้วขึ้นมายัง notebook ฉบับนี้ได้ครับ ส่วนปุ่ม commit ที่เห็นนั้นจะเป็นปุ่มเมื่อเราต้องการเซพและเผยแพร่ notebook อย่างเป็นทางการครับ (โดยปกติ notebook จะทำการ autosave ให้เรื่อยๆ อยู่แล้ว ดังนั้นเราไม่จำเป็นต้อง commit บ่อยๆ ก็ได้ครับ)

  • ในกรอบ B. จะเป็นแผงที่บอก status ปัจจุบันของ Virtual Machine หรือ ฮาร์ดแวร์ของเรา ซึ่งจะบอกว่า เราใช้งานมานานเท่าไรแล้ว (จากสูงสุด 6 ชั่วโมง) เราใช้ CPU / RAM ไปเท่าไรแล้ว (สังเกตว่าให้ RAM มาเยอะกว่ามาตรฐาน PC ที่ขายตามท้องตลาดมาก นั่นคือ kaggle ให้เราใช้เครื่องคุณภาพสูงจริงๆ ครับ) นอกจากนั้นยังแจ้งว่าเราได้เปิดใช้งาน GPU ไหม และใช้พื้นที่ disk space ไปเท่าไรแล้วจากสูงสุดที่ใช้ได้ 5GB ต่อ 1 notebook

  • ในกรอบ C. จะบอกว่าเรา commit มาแล้วกี่เวอร์ชัน และแต่ละเวอร์ชันเราเพิ่มจำนวนบรรทัด (เขียว) หรือลบ (แดง) ไปมากเท่าไร

  • สังเกตว่าข้างล่างของ Notebook จะมีหน้าจอสีดำอยู่ ซึ่งเราสามารถกดให้มันขยายได้ตามรูปในกรอบ D. ครับ ซึ่งส่วนนี้คือส่วน console ที่อนุญาตให้เรารันคำสั่ง linux command ได้ (เช่น ls, pwd เป็นต้น) นอกจากนั้นปุ่ม Play (>) และปุ่ม Fast Forward (>>) คือปุ่มที่สั่งให้รันโปรแกรม 1 เซลล์ หรือเซลล์ทั้งหมดใน Notebook ตามลำดับ

  • ในกรอบ E จะบอกว่าเราใช้ Dataset อะไรอยู่ และอนุญาตให้เราเพิ่ม Dataset ลงไปได้ ซึ่งใน Workshop แรกนี้ยังไม่จำเป็นต้องทำอะไรครับ

  • ในกรอบ F จะอนุญาตให้เราเซ็ตหรือปรับแต่ง Virtual Machine ได้หลายอย่าง ซึ่งเรายังไม่จำเป็นต้องใช้ใน Workshop แรก อย่างไรก็ดีเพื่อนๆ อาจลองปรับ GPU on/off เล่นๆ ได้ และสังเกตว่าทุกครั้งที่ปรับ จะมีการ reset notebook ใหม่ (แต่ข้อมูลเดิมยังอยู่) ทั้งนี้เป็นเพราะระบบ Cloud ได้ย้ายข้อมูลเราจากเครื่องที่ไม่มี GPU ไปยังเครื่องที่มี GPU นั่นเอง

  • เข้ามาในส่วนของ Notebook ซึ่งจะแบ่งการเขียนเป็นเซลล์ครับ โดยเซลล์จะมีอยู่สองประเภทคือ Markdown และ Code (ซึ่งเรากำหนด ปรับเปลี่ยนได้ในแถบขวาบน) โดยในรูปนี้จะแสดง เซลล์ Markdown ครับ

  • Markdown คือเซลล์ที่เสมือนให้เราพิมพ์ข้อความบรรยายในรูปแบบหนังสือ หรือบทความนั่นเอง คิดเสมือนว่ามันเป็นโปรแกรม Microsoft Word ก็ได้ครับ แต่แท้จริงแล้วมันจะมีฟังก์ชันเหมือนโปรแกรม Latex บน linux คือพิมพ์สมการคณิตศาสตร์ แทรกรูป เปลี่ยนฟอนต์สวยๆ และจัดเรียงย่อหน้าได้อย่างสมบูรณ์แบบ

  • เมื่อเราพิมพ์ข้อความในเซลล์แล้ว อยากทดลองดูการแสดงผล ก็ให้กดปุ่ม “Shift + Enter” ครับ

  • สังเกตว่าแถบควบคุมเซลล์ด้านขวาบน จะอนุญาตให้เราเพิ่มเซลล์ใหม่ (ด้านบน หรือด้านล่าง) รวมทั้งลบเซลล์ปัจจุบันทิ้งได้ด้วย

  • ในเซลล์ code นี้เราสามารถเขียนโปรแกรมได้เช่นเดียวกับ Editor เลยครับ

  • ข้อดีของการเขียนเป็นเซลล์ คือเราสามารถออกแบบให้แต่ละเซลล์ทำงานเป็นขั้นเป็นตอน และมี Markdown อธิบายหรือแสดงรูปกำกับการทำงานในแต่ละขั้น

  • เมื่อเราเขียนโปรแกรมโปรแกรมเสร็จแล้ว สามารถทดลองรันได้ด้วยการกด “Shift+Enter เช่นกันครับ” ถ้ารันผ่านก็จะมี output พิมพ์ออกมาด้านล่างเซลล์ (output สามารถเป็นภาพกราฟฟิกได้ดังแสดงตัวอย่างใน notebook ของ workshop แรกนี้)

  • เมื่อเราปรับแต่งหลายอย่างจนพอใจสามารถกด commit ได้ครับ โดยการ commit จะเริ่มรัน notebook ของเราใหม่ทั้งหมดตั้งแต่เซลล์แรกจนถึงเซลล์สุดท้าย

3. ทดสอบ Workshop แรก — Python & Numpy Workshop

มาถึงขั้นตอนนี้ เพื่อนๆ ก็สามารถใช้งาน Kaggle Kernel ได้เสมือนเป็น Programming Editor บนเครื่องตนเองแล้วนะครับ ที่เหลือก็คือเพื่อนๆ ต้องเข้าไปเรียนรู้เนื้อหาใน Workshop แรกที่ทีมงานเตรียมไว้ ซึ่งเป็นบททดสอบสำคัญก่อนจะเริ่มเขียนโปรแกรม Deep Learning ครับ

Workshop จะเริ่มด้วยการสอน / ทบทวนภาษา Python เบื้องต้น และการใช้ Numpy เพื่อการคำนวนทางคณิตศาสตร์ จากนั้นก็จะเป็นการพล็อตกราฟ หรือกราฟฟิกต่างๆ ที่จำเป็นในการใช้งานครับ ถ้าเพื่อนๆ มีข้อสงสัยประการใด ด้วยความสะดวกของ Jupyter Notebook เพื่อนๆ สามารถปรับแต่ง code เพื่อทดลองเพิ่มเติมได้ตามใจชอบ หรือสามารถทิ้งโพสต์คำถามไว้ใน Notebook บน official Account ได้เลยครับ ขอให้โชคดีสำหรับ Workshop แรก และเจอกันในบทเรียนถัดไปครับ!

Last updated