การเตรียมจัด Hackathon Online ผ่าน Kaggle
- Posted by Amornrat Makbodee
- Categories Explicit Knowledge, การจัดการความรู้
- Date August 22, 2023
ฝ่ายบริการวิชาการ มีภารกิจหลักรับผิดชอบในด้านบริการจัดฝึกอบรม บริการห้องประชุม ห้องสัมมนาและ ห้องปฏิบัติการ งานประชาสัมพันธ์ ตลอดจนให้บริการวิชาการโดยเป็นที่ปรึกษาด้านการพัฒนาระบบสารสนเทศ ระบบเครือข่าย และการพัฒนาสื่อการเรียนการสอนอิเล็กทรอนิกส์ โดยการดำเนินงานของฝ่ายมีวัตถุประสงค์เพื่อเป็นหน่วยงานเผยแพร่ความรู้ทางวิชาการด้านไอซีที และพัฒนาศักยภาพด้านไอซีทีสำหรับนิสิต บุคลากร ผู้บริหารและหน่วยงานภายนอก โดยในช่วงที่ผ่านมาสำนักคอมพิวเตอร์ดำเนินการโครงการบริการวิชาการโดยเป็นศูนย์ประสานงานภูมิภาคภาคตะวันออก โครงการเสริมสร้างศักยภาพด้านปัญญาประดิษฐ์และวิทยาการหุ่นยนต์สำหรับทุกคน หรือ AI / Robotics for All หรือโครงการ Super AI Engineer ซึ่งได้ดำเนินการมาอย่างต่อเนื่องเป็นเวลา 3 ปี แล้ว ซึ่งในการดำเนินงานนั้นมีวัตถุประสงค์ในการสร้างบุคลากรทางด้านปัญญาประดิษฐ์ และเน้นการสร้างบุคลากร สาขาอาชีพ ดังนี้ นวัตกร, วิศวกร, นักวิจัย, วิทยากร และกลุ่มวิสาหกิจเริ่มต้นหรือ Start up โดยเน้นความเชี่ยวชาญในสาขา AI จำนวน ๕ ด้าน ได้แก่ Intelligent Control & Robotics, Image Processing, Signal Processing, Big Data Analysis และ Natural Language Processing/Understanding โดยศูนย์ประสานงานมีหน้าที่ในการประชาสัมพันธ์โครงการ จัดบุคลากร วิทยากร ผู้เชี่ยวชาญในสาขาต่าง ๆ ด้านปัญญาประดิษฐ์เพื่ออบรมให้ความรู้ด้านปัญญาประดิษฐ์ จัดกิจกรรม Hackathon เก็บคะแนนกิจกรรมของผู้อบรมฯ รวมทั้งเป็นกรรมการในการพิจารณาคัดเลือกผู้เข้าอบรมเข้าสู่ Level 2 โดยการจัดกิจกรรม Hackathon นั้นเป็นการแข่งขันในรูปแบบออนไลน์ โดยมีการให้โจทย์ dataset และแข่งขันผ่าน Kaggle
Kaggle เป็นแพลตฟอร์มสำหรับ Predictive Modelling และการแข่งขันด้าน Analytics เพื่อหา Model ที่ดีที่สุดสำหรับ Dataset จากบริษัทและบุคคลทั่วไป โดยโครงการ Super AI Engineer ได้นำ Kaggle มาใช้ในการจัดกิจกรรม Hackathon ในรูปแบบออนไลน์ ให้แก่ผู้เข้าร่วมโครงการ โดยแต่ละศูนย์ประสานงานจะต้องจัดกิจกรรม Hackathon อย่างน้อย 5 ครั้ง โดยใช้ชุดข้อมูลหรือ Dataset จากที่ส่วนกลางมีให้หรือทางศูนย์จัดหามาเพื่อแข่งขัน ซึ่งในช่วงเริ่มต้นทางส่วนกลางของโครงการได้แนะนำให้ความรู้เกี่ยวกับ Kaggle และการเตรียมโจทย์ dataset สำหรับการแข่งขัน
โดยในการแข่งขัน Hackathon แต่ละครั้งของศูนย์ประสานงานภาคตะวันออกได้พบปัญหา และสิ่งที่ต้องปรับปรุงและแก้ไข ซึ่งเกิดจากการขาดความรู้และความเข้าใจเกี่ยวกับ Kaggle โดยจะได้แนวทางในการดำเนินงานเพื่อเตรียมการจัดการแข่งขันในครั้งต่อ ๆ ไป และสามารถสรุปแนวทางการดำเนินงานได้ดังนี้
- การสมัครสมาชิก Kaggle
การสมัครสมาชิก Kaggle สามารถ Register ด้วยอีเมลของ Google หรืออีเมลอื่นได้ โดยต้องรอการ verified account ก่อนจึงจะสามารถ Join เข้าร่วมการแข่งขันได้

- การสร้าง Competitions
ในการสร้าง Competitions ศูนย์ประสานงานจะเป็น Host ของการแข่งขัน โดยเลือกการสร้าง Competitions แล้วเลือกที่ Host a Competitions

จากนั้นเลือกที่ Community Competitions ซึ่งจะไม่มีค่าใช้จ่าย จากนั้นคลิกที่ Get Starts

จะเข้าสู่หน้าจอการสร้าง Competition โดยให้ระบุชื่อของ Competitions และรายละเอียดดังนี้
- Title: ชื่อ Competition
- Description: คำอธิบาย Competition
- URL: URL ของ Competition
- Visibility: การมองเห็น Competition
- Who can join: กำหนดให้ใครบ้างที่มีสิทธิ์เข้าร่วม Competition ในการจัด hackathon ของโครงการนี้จะเลือกเป็น Only people with a link

เมื่อกรอกข้อมูลเรียบร้อยแล้ว กดยอมรับเงื่อนไข แล้วกดสร้าง Competition จะได้หน้าจอเพื่อเข้าไปกำหนดการตั้งค่าการแข่งขัน

- การตั้งค่าที่จำเป็นสำหรับการแข่งขัน
ในการตั้งค่า Competition นั้น เราจะเข้าไปแก้ไขข้อมูล ที่ 4 เมนู ได้แก่
- Host การตั้งค่าและกำหนดรายละเอียดการแข่งขัน เช่น เวลาการแข่งกัน การส่งผลการแข่งขัน การเพิ่มบุคคลเป็น Host การแข่งขัน การกำหนดเกณฑ์การวัดผล การเพิ่มไฟล์เฉลยและ baseline ของการแข่งขัน เป็นต้น โดยมีส่วนสำคัญที่ต้องเข้าไปตั้งค่าดังนี้
- Setting เป็นการตั้งค่าข้อมูลเบื้องต้น การเข้าถึงการแข่งขัน จำนวนสมาชิกในทีม การส่งผล โดยสิ่งที่ต้องระมัดระวังคือการกำหนด Deadline ของการแข่งขัน ซึ่งเวลาจะเป็นเวลาในรูปแบบ UTC ดังนั้น การกำหนดเวลาจะต้อง +7 เพื่อให้เป็นเวลาประเทศไทย

จำนวนสมาชิกในทีมขึ้นอยู่กับความยากง่ายของโจทย์การแข่งขัน สามารถเปลี่ยนแปลงได้ โดยการส่งผลการแข่งขันปกติจะให้ส่งผลได้ 4 ครั้งต่อวัน โดยเมื่อตั้งค่าทุกอย่างเรียบร้อยแล้วให้กดปุ่ม Save Changes เพื่อบันทึกการตั้งค่า
- Image เป็นการกำหนดรูปของ Header Image และ Competition Listing Image โดยสามารถเปลี่ยนรูปตามที่ต้องการได้ แต่ในการจัดโครงการนี้ จะใช้รูปแบบที่มีการกำหนดไว้ให้

- Manage Hosts สามารถเพิ่มผู้ที่ร่วมเป็น Host ของการแข่งขันเพื่อแก้ไข Competitions ร่วมกันได้ โดยใช้ user Kaggle ในการเพิ่ม

- Evaluation เป็นการกำหนดรูปแบบการประเมินผล ซึ่งต้องกำหนด
- Scoring Metric เช่น Accuracy, F-Score (Macro), Mean Squared Error ซึ่งต้องเลือกให้เหมาะสมกับโจทย์และ dataset ของการแข่งขัน
- Solution File คือ ไฟล์ CSV ที่เป็น ground truth data หรือเฉลยคำตอบที่ถูกต้องที่ใช้ในการให้คะแนนผลงานที่ส่ง โดยในส่วนนี้ระบบจะแบ่ง Testset ออกเป็น 2 ส่วน ได้แก่
- ข้อมูล test ส่วนแรกจะวัดผลใน Public Leaderboard ซึ่งผู้เข้าแข่งขันสามารถตรวจสอบคะแนนได้ตลอดเวลา
- ข้อมูล test ส่วนที่ 2 จะวัดผลใน Private Leaderboard ซึ่งนำมาใช้คิดคะแนนเพื่อตัดสินผลการแข่งขัน โดยจะแสดงผลหลังจากแข่งขันจบลง
- ซึ่งหากต้องการกำหนดสัดส่วนของ Public Leaderboard และ Private Leaderboard เองสามารถกำหนดคอลัมน์เพิ่มเพิ่มใน Solution File ชื่อคอลัมน์ Usage แล้วระบุ Private และ Public ที่ข้อมูล

- Launch Checklist เป็นการเปิดให้เริ่มการแข่งขัน โดยสามารถกำหนดวันในการเริ่มการแข่งขันได้ ข้อควรระวัง เมื่อกด Launch Competition แล้วจะไม่สามารถปิดได้
- Set Future Launch Date ต้องกำหนดวันก่อน จากนั้นค่อยกด Set Future Launch Date ไม่เช่นนั้นจะเป็นการเปิดการแข่งขันทันที
- Launch Competition Now จะเป็นการเปิดการแข่งขันทันที
- เวลาจะเป็นเวลาในรูปแบบ UTC ดังนั้น การกำหนดเวลาจะต้อง +7 เพื่อให้เป็นเวลาประเทศไทย

- Overview เป็นการแสดงรายละเอียดและคำอธิบายเกี่ยวกับโจทย์การแข่งขัน และรายละเอียดที่ผู้แข่งขันจำเป็นต้องทราบ โดยปกติจะแจ้งตารางเวลาการแข่งขัน รูปแบบทีมและการตั้งชื่อทีม การส่งผลต่อวัน Evaluation Metric การแชร์ไอเดีย รางวัลการแข่งขัน

- Data เป็นการอธิบายชุดข้อมูลสำหรับการแข่งขัน และไฟล์ต่าง ๆ สำหรับการแข่งขัน
โดยไฟล์ dataset ต่าง ๆ สามารถแก้ไขได้ถึงแม้ว่าจะเริ่มการแข่งขันแล้ว แต่การอัปโหลดไฟล์ที่เกี่ยวข้องมีข้อควรระวังดังนี้
- ตรวจสอบไฟล์ตัวอย่างการส่งผล ระวังการอัปโหลดไฟล์เฉลยขึ้นไป
- ไฟล์ที่เป็น csv ควรตรวจสอบให้เป็น UTF-8
- ระวังการอัปโหลดไฟล์เดียวกันแต่ชื่อไฟล์ต่างกัน อาจจะทำให้เกิดการสับสนได้
- ตัวอย่างไฟล์การส่งผล ควรมีตัวอย่างเฉลยอย่างน้อย 3 แถว
- Rules เป็นการอธิกายกฎ หรือกติกาการแข่งขัน สามารถพิมพ์รายละเอียดเข้าไปที่ Rules ได้เลย

- การเตรียมข้อมูล dataset
ในการเตรียม dataset การแข่งขันนั้น โดยปกติจะประสานงานกับอาจารย์ที่เป็นเจ้าของโจทย์เพื่อเตรียมข้อมูล โดยประกอบด้วย
- train – ชุดข้อมูลสำหรับการ Train
- test – ชุดข้อมูลสำหรับการ Test
- csv – ไฟล์ CSV ที่เป็น ground truth data หรือเฉลยคำตอบที่ถูกต้อง
- csv – ไฟล์ CSV การส่งและตรวจสอบให้แน่ใจว่าได้คะแนนตามที่คาดไว้ หรือเป็นเกณฑ์ของการแข่งขัน
- csv – ตัวอย่างไฟล์ที่ใช้ส่ง (พร้อมเฉลย 3 แถวแรก)
- การดูรายงานข้อมูล
เมื่อเสร็จสิ้นการแข่งขัน จะสามารถดูผลการแข่งขันได้ที่เมนู Leaderboard ซึ่งจะสามารถดูได้ทั้ง Public Leaderboard และ Private Leaderboard โดยสามารถคลิกที่ปุ่ม เพื่อดาวน์โหลดไฟล์สรุปข้อมูล (.csv file)

You may also like
ในองค์ความรู้นี้จะนำเสนอ การเขียนโปรแกรมบีบอัดและรวมไฟล์รูปภาพในรูปแบบ ZIP สำหรับระบบบัตรพนักงาน มหาวิทยาลัยบูรพา ซึ่งแบ่งเป็นขั้นตอนการดำเนินการ ดังนี้ ทำการดาวโหลดไฟล์รูปภาพจาก MinIO มาลงที่โฟลเดอร์ storage แสดงดังภาพ สร้างฟังก์ชันสำหรับ บีบอัดและรวมไฟล์รูปภาพในรูปแบบ ZIP แสดงดังภาพ ไฟล์ Zip ที่ออกจากระบบ แสดงดังภาพ อ้างอิง https://www.php.net/manual/en/class.ziparchive.php
การสร้าง QR Code ในรูปแบบนามบัตรดิจิทัล (vCard) บน Laravel Framework เพื่อใช้กับระบบบัตรพนักงานของมหาวิทยาลัยบูรพา
ในองค์ความรู้นี้จะนำเสนอ การสร้าง QR Code ในรูปแบบ vCard สำหรับบัตรพนักงาน มหาวิทยาลัยบูรพา ซึ่งแบ่งเป็นขั้นตอนการดำเนินการ ดังนี้ 1. การติดตั้ง Package สำหรับสร้าง QR Code ที่ชื่อ simplesoftwareio/simple-qrcode โดยติดตั้งผ่าน Composer คำสั่ง : composer require simplesoftwareio/simple-qrcode 2. สร้างฟังก์ชันสำหรับ QR Code ในรูปแบบ vCard ซึ่งโครงสร้างข้อมูล ต้องเริ่มต้นด้วย BEGIN:VCARD และจบด้วย END:VCARD และฟิลด์ที่กำหนดค่าที่สำคัญ เช่น ชื่อ (FN) …
ที่มา/ปัญหา เพื่อให้การใช้งาน Docker Volumes ร่วมกับโปรแกรม Cursor และ Git Azure ได้อย่างมีประสิทธิภาพจึงต้องทำการเชื่อมต่อข้อมูลไฟล์ Project กับ Container และใช้ SSH ในการเชื่อมต่อโดยมีขั้นตอนการทำดังต่อไปนี้ สิ่งที่จำเป็นและต้องเตรียม ๑. Docker Desktop ๒. Docker Container ๓. Extension SFTP ของ Cursor หรือ VS Code ขั้นตอนการติดตั้งและใช้งาน ๑. ติดตั้ง OpenSSH Server โดยเข้าไปที่ Container Exec แล้วลองพิมพ์ …
