แพลตฟอร์มให้ข้อมูลคำมั่นสัญญาเลือกตั้งประธานาธิบดีของสาธารณรัฐเกาหลี
(github.com/MinsuChae)ข้อมูลผู้สมัครประธานาธิบดีคนที่ 21 ครบในที่เดียว
- แม้จะตั้งชื่อไว้ดูยิ่งใหญ่ แต่พูดสั้น ๆ ก็คือเป็นโปรเจกต์ที่มีเป้าหมายเพื่อให้ข้อมูลอย่างประวัติของผู้สมัครประธานาธิบดี นโยบายหาเสียง หรือประเด็นถกเถียงของผู้สมัคร ก่อนการเลือกตั้งประธานาธิบดีครั้งที่ 21
- 🔗 https://daeseoneunjigeum.com
จุดประสงค์ที่สร้าง
คนรู้จักวัย 20 กว่าปีที่ผมรู้จักแสดงความสนใจต่อประธานาธิบดีและการเลือกตั้งประธานาธิบดี อีกทั้งจากหลายเหตุการณ์ล่าสุดทำให้ความสนใจของคนหนุ่มสาวต่อการเลือกตั้งเพิ่มขึ้น และผมคิดว่าควรมีการส่งเสริมให้คนออกมาใช้สิทธิเลือกตั้งประธานาธิบดีมากขึ้น
แต่พอถึงเวลาลงคะแนนจริง การจะไปดูรายละเอียดของผู้สมัครทีละคนก็ทำได้ยาก และเมื่อเทียบกับผู้สมัครคนอื่น ๆ ก็ไม่ใช่เรื่องง่ายที่จะตัดสินว่าใครดีกว่ากัน
“ถ้าอย่างนั้นมาทำเว็บไซต์ที่ให้ ถาม‑ตอบ ได้ทันทีด้วย LLM กันเถอะ” ด้วยไอเดียง่าย ๆ แบบนี้จึงได้เริ่มทำขึ้นมา โดยใช้เวลาวางแผน 2~5 วัน และใช้เวลาเขียนโค้ดกับดีพลอยประมาณ 2 วัน
ฟีเจอร์ที่มี
- ให้ สรุปประวัติ·นโยบาย·ประเด็นถกเถียงของผู้สมัคร แยกตามแต่ละคน
(ตอนนี้ยังไม่มีเอกสารประชาสัมพันธ์การเลือกตั้ง จึงเป็นฉบับร่างที่อ้างอิงจากข่าวเป็นหลัก) - Q&A แบบเรียลไทม์ เช่น “ช่วยบอกนโยบายเด่นของผู้สมัคร ○○ หน่อย”
(Gemma‑3‑1b‑itเป็นโมเดลที่ใช้สร้างคำตอบ คำนวณด้วย CPU ล้วน ๆ 😅 )
แผนต่อไป
- ให้ข้อมูลโดยอิงจากเอกสารประชาสัมพันธ์การเลือกตั้ง
- หากได้รับความสนใจในวงกว้างจากประชาชนเกาหลีใต้ทั่วไป ไม่ใช่แค่ในระดับนักพัฒนา หรือได้รับการสนับสนุนจากหน่วยงานต่าง ๆ จะปรับปรุงโมเดล LLM เป็น Gemma‑3‑27b
จุดที่น่าเสียดาย
- ขนาดโมเดล
เดิมทีอยากรันเวอร์ชัน 27 b พารามิเตอร์ แต่ต้องใช้ VRAM 48 GB
สุดท้ายจึงต้องประนีประนอมด้วยโมเดล 1 b (แค่เช่า A6000 หนึ่งตัวก็ต้องใช้ราว 600,000 วอนต่อเดือนแล้ว) - คุณภาพข้อมูลที่ยังต่ำ
แม้จะคัดกรองผ่านข่าวมาบ้าง แต่เพราะยังไม่มีข้อมูลทางการ จึงยังมีปัญหาในการทำความเข้าใจรายละเอียดของนโยบายต่าง ๆ อย่างชัดเจน เมื่อเอกสารประชาสัมพันธ์การเลือกตั้งเปิดเผยแล้ว มีแผนจะอัปเดตเป็นอย่างแรก - ความเร็วในการตอบของโมเดล LLM
หากเป็นการทักทายง่าย ๆ จะตอบได้ภายในไม่กี่วินาที แต่ถ้าเป็นคำถามสำคัญอย่างเรื่องนโยบายจะมี ปัญหาที่ใช้เวลามากกว่า 1 นาที ซึ่งจะเรียกว่าเรียลไทม์ก็ค่อนข้างลำบาก สาเหตุก็มาจากการคำนวณด้วย CPU 😅
สิ่งที่อยากขอ
- หากพบข้อมูลผิดพลาดหรือความไม่สะดวก รบกวนแจ้งผ่านคอมเมนต์ได้เลย
- ยินดีต้อนรับการสนับสนุน GPU/ความร่วมมือด้านคลาวด์เสมอ
- จะขอบคุณมากหากหลีกเลี่ยงการทดสอบโหลดหนักเกินไป!
ช่วงนี้การมีส่วนร่วมทางการเมืองของคนหนุ่มสาวยิ่งสำคัญมากขึ้น ผมจึงทำสิ่งนี้ขึ้นมาเพื่อให้เข้าถึงข้อมูลการเมืองได้ง่ายและรวดเร็ว
ลองแวะเข้าไปค้นหาผู้สมัครที่คุณสงสัยดูสักครั้ง แล้วช่วยชี้จุดที่ยังขาดไปด้วยนะครับ 🙏
แม้สาขาวิชาของผมจะเป็นสายคอมพิวเตอร์ แต่เพราะบทบาทของผมค่อนข้างเอนไปทางนักวิจัย AI มากกว่านักพัฒนา โค้ดทดสอบหรือการตรวจสอบ data type อาจทำให้คนที่เป็นนักพัฒนาตัวจริงรู้สึกขัดใจได้บ้าง
9 ความคิดเห็น
สวัสดีครับ ผมได้แรงบันดาลใจจากโพสต์นี้ เลยลองทำของตัวเองขึ้นมาบ้าง โดยมีความคล้ายกันแต่ปรับรูปแบบไปเล็กน้อย โดยส่วนตัวผมกำลังทดลองความเป็นไปได้หลายอย่างของการพัฒนาแอปพลิเคชัน AI ในเชิงบริการอยู่พอดี และครั้งนี้ก็เป็นประสบการณ์ที่ดีมากในแง่ของการเข้าถึงเทคโนโลยีและการลงมือพัฒนา
ตั้งแต่วันที่ 8 พฤษภาคมถึง 11 พฤษภาคม จะรันด้วย gemma 12b ได้เข้าร่วมการทดสอบเบต้าที่จัดโดยผู้ให้บริการซึ่งให้บริการคล้ายกับ GPU cloud computing และได้ดำเนินการทดสอบโหลดที่เกี่ยวข้อง พร้อมนำผลไปปรับใช้เพื่อให้สามารถทราบโหลดจริงได้
ข้อมูลที่เกี่ยวข้องแก้ไขปรับปรุงอย่างต่อเนื่องได้ยาก จึงอัปเดตทุกครั้งที่มีการอัปเดตข้อมูลครั้งใหญ่ การอัปเดตครั้งถัดไปคือช่วงเช้าวันที่ 12 เมื่อมีการยืนยันผู้สมัครเลือกตั้งอย่างเป็นทางการ และหลังจากนั้นเมื่อเอกสารประชาสัมพันธ์การเลือกตั้งถูกเผยแพร่ มีแผนจะปรับปรุงให้สามารถให้ข้อมูลนี้ผ่าน RAG ได้
จุดประสงค์ดีมาก แต่ถ้านำข้อมูลลักษณะนี้ไปสื่อสารด้วยระบบที่อิงกับ LLM (ถ้าให้ข้อมูลไม่ถูกต้อง) ก็ดูเหมือนว่าอาจมีปัญหาทางกฎหมายได้เหมือนกัน..!
มีบางเว็บไซต์ที่ยังไม่ได้อัปโหลด ไม่แน่ใจว่าเป็นการทดสอบภายในของผมหรือเป็นใครสักคน แต่เพราะมีโหลดมากเกินไปเลยกลายเป็นซอมบี้ไปแล้วครับ เป็น AI แบบรันในเครื่องและเป็นโมเดลขนาดเบา เลยไม่คิดว่าจะโดนโหลดหนักขนาดนี้ ผมให้มันทำงานในสภาพแวดล้อมแบบ virtualization แล้วมันก็เข้าสู่สถานะซอมบี้ไปเลย...;; จะตรวจสอบแล้วกู้คืนให้นะครับ
สำหรับคนที่ให้บริการ AI แบบรันในเครื่อง ถ้าเป็นงานประมวลผลบน GPU อาจจะเบากว่า แต่ถ้าเป็น CPU...น่าจะยอมแพ้จะดีกว่าครับ เหมือนจะไม่ได้มีใครใช้งานเยอะขนาดนั้นด้วย...;;
เดิมทีเป็นเซิร์ฟเวอร์จริงที่ไม่ได้มีงานใหญ่ ๆ รันอยู่ แต่ผมเอามาเปิดให้บริการผ่าน
docker containerแล้วถึงสเปกจะไม่สูงมากก็เถอะ กลับมีโหลด CPU สูงเกินไปจนหนักถึงขั้นแม้แต่การเชื่อมต่อsshก็ยังลำบาก...; ไม่ได้ตั้ง CPU limit ไว้ เลยทำให้มีปัญหากับโฮสต์เซิร์ฟเวอร์ไปด้วย...แต่ก็ดูไม่เหมือนว่าจะมีผู้ใช้จริงใช้งานเยอะมากนัก...
ได้ลองพิจารณาการออก openrouter key เพื่อให้ใช้งาน หรือทดลองใช้ WebLLM หรือ Gemini nano ดูบ้างไหม?
ขอบคุณที่แจ้งให้ทราบครับ ก่อนอื่น เนื่องจากมันไม่ใช่เว็บไซต์แบบสแตติก ผมเลยตั้งใจว่าจะทำฝั่งแบ็กเอนด์มากกว่าประมวลผลที่ฝั่งฟรอนต์เอนด์ และพยายามซ่อน API key ให้ได้มากที่สุด
ก่อนหน้านี้ผมไม่ได้คิดจะทำแบบนั้นมากนัก แต่มีแผนจะใช้ OpenAI หรือ API อื่น ๆ ช่วง 7 วันหรือ 14 วันก่อนวันเลือกตั้ง
จนกว่าจะถึงตอนนั้น ถึงจะลดค่าใช้จ่ายได้ด้วยโมเดลขนาดเล็กแค่ไหน ก็ยังประเมินไม่ได้ว่าจะมีการใช้งานมากเพียงใด เลยยังค่อนข้างระมัดระวังกับการใช้งานครับ
ขอบคุณมากครับที่ทำให้ผมได้รู้จัก WebLLM ผมเองในฐานะคนที่ทำวิจัยด้านดีปเลิร์นนิงก็เคยกังวลเรื่องการเสิร์ฟโมเดลผ่าน CDN หรือที่อื่นแล้วให้มันรันได้เหมือนกัน เลยเพิ่งได้รู้ว่ามีการเสิร์ฟในลักษณะแบบนั้นด้วย แต่ก็ยังมีส่วนที่น่ากังวลอยู่ครับ ถ้าประมวลผลที่ฝั่งฟรอนต์เอนด์ แน่นอนว่าภาระโหลดจะลดลง แต่ผมคิดว่าปัญหาอาจอยู่ที่ช่วงเริ่มต้นซึ่งการเสิร์ฟโมเดลครั้งแรกอาจใช้เวลาค่อนข้างนาน ตรงนี้ยังเป็นเรื่องที่ผมลังเลอยู่ครับ ถึงอย่างนั้นก็ต้องขอบคุณที่ทำให้ได้รู้จักโปรเจกต์ดี ๆ แบบนี้ ผมยังไม่ได้ดูละเอียดนัก เลยยังไม่เข้าใจทั้งหมดว่าใช้ได้เฉพาะโมเดลที่อยู่ใน ReadMe เท่านั้นหรือไม่ หรือมีการเสิร์ฟโมเดลที่เข้ากันได้ด้วย หรือจำเป็นต้องอัปขึ้น CDN อื่นเองกันแน่ ส่วนตัวผมคิดว่าน่าจะต้องเสิร์ฟตัวโมเดลแยกต่างหาก ซึ่งถ้าเป็นแบบนั้นประเด็นนี้ก็น่าจะเป็นเรื่องให้ต้องคิดต่อครับ ผมไม่แน่ใจว่าต่างประเทศเป็นอย่างไร แต่ในเกาหลีน่าจะมี CDN สำหรับเสิร์ฟโมเดลหรือเปล่า เพราะเท่าที่ผมค้นดู CDN ในประเทศส่วนใหญ่น่าจะรองรับแค่รูปภาพครับ
โฮก T_T
แม้จะเป็นโมเดล LLM 1B แต่ดูเหมือนว่าปริมาณการประมวลผลจะเยอะพอสมควร เมื่อวานก็วุ่นวายอยู่แล้ว แถม container อยู่ ๆ ก็กลายเป็นสถานะซอมบี้ เลยสับสนไปหมด ผมเลยทดสอบโดยคอยปรับเปลี่ยนการจำกัดอัตราการใช้ CPU ใน docker อยู่เรื่อย ๆ แต่สุดท้ายก็ดูเหมือนว่าจะรองรับคำขอพร้อมกันได้แค่ราว ๆ 3–5 คำขอแบบกระท่อนกระแท่นเท่านั้น
มองอีกมุมหนึ่ง ระหว่างทำโปรเจ็กต์แบบย่อ ๆ นี้ ผมก็อยากดูด้วยว่าในอีกไม่กี่ปีข้างหน้า local AI จะมาแน่ ๆ และถ้าต้องให้บริการ LLM ในสถานการณ์ที่ทรัพยากร GPU ไม่พอ จะมีภาระมากแค่ไหนด้วย
CPU ที่ใช้รันเซิร์ฟเวอร์คือ AMD 7700 สุดท้ายก็ได้รู้ว่าถ้าจะทำบน local AI จริง ๆ ต้องคำนึงถึงหลายอย่างกว่าที่คิด ปัญหาคือมีอาการ timeout ตั้งแต่ส่ง POST ไปจนก่อนจะได้ response กลับมา และถ้าจะทำให้เป็นบริการที่เสถียร สุดท้ายก็คงต้องมี GPU หรืออุปกรณ์สำหรับ inference (เช่น google TPU) จำนวนมากพอถึงจะได้เปรียบด้านความเร็วในการตอบสนอง และน่าจะต้องจัดให้บริการในรูปแบบคิวได้ด้วย
จริง ๆ แล้วในเกาหลีมีบริษัทที่ดำเนินงาน LLM อย่างจริงจังอยู่ไม่มากนัก (เช่นที่รู้จักกันอยู่แล้วอย่าง Naver, Kakao, Upstage เป็นต้น) และแชตบอตหลายตัวก็มักทำงานตามฟังก์ชันที่กำหนดไว้ หรือไม่ก็เชื่อมต่อกับ LLM model API ทำให้ผมได้คิดว่าโหลดมันจะหนักแค่ไหน และถ้าต้องทำบริการลักษณะนี้บนเว็บโดยลดภาระของเซิร์ฟเวอร์ให้น้อยลง ควรทำอย่างไร
อนึ่ง คนที่มาอ่านคอมเมนต์นี้บางส่วนอาจคิดว่า ก็แค่ส่งโมเดลไปให้แล้วปล่อยใช้งานไม่ใช่เหรอ แต่ขนาดของ gemma3 1b นั้นเกิน 1GB และแม้จะใช้เซิร์ฟเวอร์โฮสติ้งอยู่ ผมก็คิดว่าไม่น่าจะรับทราฟฟิกระดับนั้นไหว
ถ้าพรีโหลดไว้ในรูปแบบแอปก็คงพอหาทางได้อยู่บ้าง แต่สำหรับบนเว็บ การจะให้บริการโดยลดภาระของเซิร์ฟเวอร์ลงได้อย่างไร ผมคิดว่าบริษัทที่คิดเรื่องนี้ได้ดีน่าจะรักษาต้นทุนการดูแลไว้ในระดับต่ำได้มากกว่า
ขอบคุณมากที่แบ่งปันประสบการณ์อันมีค่านี้