เหตุใด SWE-bench Verified จึงไม่สามารถวัดความสามารถด้านการเขียนโค้ดระดับฟรอนเทียร์ได้อีกต่อไป
(openai.com)- SWE-bench Verified ซึ่งเคยเป็นตัวชี้วัดหลักของงานวิศวกรรมซอฟต์แวร์อัตโนมัติ มีความเหมาะสมลดลงอย่างมากสำหรับการวัด ความสามารถของโมเดลระดับฟรอนเทียร์
- ในช่วงที่การเพิ่มขึ้นของประสิทธิภาพสูงสุดล่าสุดถูกจำกัดอยู่ที่ 74.9% เป็น 80.9% ก็ยิ่งแยกได้ยากว่าความล้มเหลวที่เหลืออยู่เกิดจากข้อจำกัดของโมเดลหรือข้อบกพร่องของชุดข้อมูล
- จากการตรวจสอบปัญหา 138 ข้อ พบว่า 59.4% มีข้อบกพร่องร้ายแรงในด้านการออกแบบการทดสอบหรือคำอธิบายโจทย์ และทั้งการทดสอบที่จำกัดเกินไปกับการทดสอบที่กว้างเกินไปก็อาจทำให้คำตอบที่ถูกต้องในเชิงฟังก์ชันไม่ผ่านได้
- เนื่องจากเป็นการประเมินบนพื้นฐานของข้อมูลและโค้ดเบสที่เปิดเผยสาธารณะ จึงยากที่จะหลีกเลี่ยง การปนเปื้อนของข้อมูลฝึก และบางโมเดลสามารถสร้าง gold patch กลับมาได้แทบเหมือนเดิมโดยอาศัยเพียงคำอธิบายงานหรือ ID
- ด้วยเหตุนี้จึง ยุติการรายงานคะแนน SWE-bench Verified และย้ายแกนการประเมินไปยัง SWE-bench Pro ที่ได้รับผลกระทบจากการปนเปื้อนน้อยกว่า รวมถึงเบนช์มาร์กแบบไม่เปิดเผยสาธารณะ
เหตุใดเบนช์มาร์กนี้จึงวัดอะไรไม่ได้อีกต่อไป
- SWE-bench Verified ถูกใช้อย่างแพร่หลายเป็นตัวชี้วัดมาตรฐานสำหรับวัดประสิทธิภาพของโมเดลในงานวิศวกรรมซอฟต์แวร์อัตโนมัติ แต่สำหรับการวัดความสามารถของโมเดลระดับฟรอนเทียร์ในระดับปัจจุบันนั้น ความเหมาะสมได้ลดลงอย่างมาก
- เมื่อการเพิ่มขึ้นของประสิทธิภาพสูงสุดในช่วง 6 เดือนล่าสุดถูกจำกัดอยู่ที่ 74.9% เป็น 80.9% ก็ยิ่งยากที่จะบอกได้ว่าความล้มเหลวที่เหลือเกิดจากข้อจำกัดของโมเดลหรือข้อบกพร่องของชุดข้อมูล
- การวิเคราะห์ใหม่ชี้ว่า การทดสอบที่มีข้อบกพร่อง และ การปนเปื้อนของข้อมูลฝึก คือปัญหาหลัก และทำให้คะแนนสะท้อนระดับการสัมผัสกับเบนช์มาร์กมากกว่าความสามารถด้านการเขียนโค้ดจริง
- ด้วยเหตุนี้ OpenAI จึง หยุดรายงานคะแนน SWE-bench Verified และแนะนำให้ผู้พัฒนาโมเดลรายอื่นดำเนินการเช่นเดียวกัน
- ทางเลือกที่แนะนำคือใช้ SWE-bench Pro ซึ่งได้รับผลกระทบจากการปนเปื้อนน้อยกว่า และกำลังสร้างตัวชี้วัดการประเมินใหม่ที่ไม่ปนเปื้อนด้วย
ที่มา
- SWE-bench ต้นฉบับถูกเผยแพร่ในปี 2023 และจัดทำขึ้นโดยจับคู่ GitHub issue ที่ได้รับการแก้ไขแล้วกับ PR ที่เกี่ยวข้องจาก 12 รีโพซิทอรี Python แบบโอเพนซอร์ส
- แต่ละโจทย์กำหนดให้สร้างการเปลี่ยนแปลงโค้ดจากสภาพที่ให้เพียงโค้ดเบสก่อนแก้ไขและข้อความ issue เท่านั้น โดยเกณฑ์การผ่านคือ ต้องผ่านการทดสอบทั้งหมด หลังนำไปใช้
- มีการรวมการทดสอบที่ต้องล้มเหลวก่อนแก้ไข และต้องผ่านหลังแก้ไขอย่างถูกต้อง
- รวม regression test เพื่อตรวจสอบว่าฟังก์ชันเดิมไม่ได้พังไปด้วย
- การประเมินต้นฉบับมีปัญหา เช่น การทดสอบที่เฉพาะเจาะจงเกินไปจนปฏิเสธคำตอบที่ถูกต้อง สเปกที่ไม่เพียงพอและตีความได้หลายแบบ และการทดสอบที่ล้มเหลวตามความแตกต่างของสภาพแวดล้อม
- เพื่อลดปัญหาเหล่านี้ จึงมีการสร้าง SWE-bench Verified ในปี 2024 โดยคัดกรองปัญหา 1,699 ข้อผ่านการตรวจทานจากผู้เชี่ยวชาญจนได้เป็น ชุดปัญหา 500 ข้อ
- แต่ละปัญหาได้รับการตรวจทานอย่างอิสระโดยผู้เชี่ยวชาญ 3 คน
ข้อบกพร่องในการออกแบบการทดสอบ
- ใช้ 138 ปัญหา ที่ OpenAI o3 ไม่สามารถแก้ได้อย่างสม่ำเสมอแม้จะรันอย่างอิสระ 64 ครั้งเป็นเป้าหมายในการตรวจสอบ และแต่ละกรณีได้รับการทบทวนอย่างอิสระโดยวิศวกรซอฟต์แวร์ที่มีทักษะอย่างน้อย 6 คน
- ผลลัพธ์คือ จาก 138 ข้อ มี 59.4% ที่มีข้อบกพร่องร้ายแรงในด้านการออกแบบการทดสอบหรือคำอธิบายโจทย์ จนแม้แต่โมเดลหรือมนุษย์ที่เก่งมากก็แก้ได้ยากมากหรือแทบเป็นไปไม่ได้
- 35.5% ของงานที่ถูกตรวจสอบมีการทดสอบแบบจำกัดที่บังคับรายละเอียดการติดตั้งใช้งานเฉพาะเจาะจง
- ทำให้คำตอบหลายแบบที่ถูกต้องในเชิงฟังก์ชันอาจถูกตัดสิทธิ์
- 18.8% ของงานที่ถูกตรวจสอบมีการทดสอบที่กว้างเกินไป ซึ่งเรียกร้องฟังก์ชันเพิ่มเติมที่ไม่ได้อยู่ในคำอธิบายโจทย์
- อีก 5.1% มีปัญหาอื่นที่ไม่เข้ากลุ่มใดกลุ่มหนึ่งอย่างชัดเจน
-
กรณีทดสอบแบบจำกัด
- ใน pylint-dev__pylint-4551 การทดสอบของ PR นำเข้า
get_annotationโดยตรง แต่ชื่อฟังก์ชันนี้ไม่ได้ปรากฏในสเปกของโจทย์ - ดังนั้นแม้จะแก้ปัญหาได้ถูกต้องในเชิงฟังก์ชัน หากไม่ได้ติดตั้งใช้งานด้วย ชื่อฟังก์ชันเฉพาะนั้น ก็อาจทดสอบไม่ผ่านเพราะ import error
- ใน pylint-dev__pylint-4551 การทดสอบของ PR นำเข้า
-
กรณีทดสอบแบบกว้างเกินไป
- sympy__sympy-18199 มาจาก PR ที่จริงแล้วแก้สาม issue พร้อมกันคือ #17373, #17377, #18212
- แต่คำอธิบายงานของ SWE-bench Verified กล่าวถึงเพียง #18212 เท่านั้น ดังนั้นแม้จะติดตั้งใช้งานตามคำอธิบายก็ยังอาจล้มเหลวในการทดสอบที่ตรวจสอบอีกสอง issue ที่เหลือ
ปัญหาการปนเปื้อน
- SWE-bench Verified รวมถึงโค้ดเบสและ release note ของรีโพซิทอรีที่เกี่ยวข้องล้วนเปิดเผยสาธารณะและถูกใช้งานกับพูดถึงอย่างกว้างขวาง จึง หลีกเลี่ยงการปนเปื้อนของข้อมูลได้ยาก
- OpenAI พบสัญญาณของการปนเปื้อนในโมเดลของตนเองด้วย และรวมถึงกรณีที่ GPT‑5.2 แก้งานได้ 31 ข้อซึ่งถูกประเมินว่าแทบเป็นไปไม่ได้ที่จะทำได้หากไม่มีการปนเปื้อน
- ใน django__django-14725 การทดสอบต้องการพารามิเตอร์
edit_onlyที่ไม่ได้ระบุไว้ในสเปกของโจทย์ แต่ GPT‑5.2 ระบุได้อย่างแม่นยำในกระบวนการให้เหตุผลว่าพารามิเตอร์นี้ถูกเพิ่มเข้ามาใน Django 4.1 - OpenAI สร้าง สภาพแวดล้อมการทดสอบ red team แบบอัตโนมัติ เพื่อประเมินความรุนแรงของการปนเปื้อน
- สำหรับแต่ละโจทย์ของ SWE-bench Verified นั้น GPT‑5 จะทำการตรวจสอบการปนเปื้อนของ GPT‑5.2‑Chat, Claude Opus 4.5 และ Gemini 3 Flash Preview
- GPT‑5 ได้รับ task ID, คำอธิบาย, gold patch และ PR test พร้อมเปิดให้ปรับ prompt และกลยุทธ์ชี้นำได้รวม 15 เทิร์น
- หลังแต่ละเทิร์น โมเดลประเมินจะจัดระดับความรุนแรงของการปนเปื้อนเป็น ไม่มี~รุนแรง โดยอิงจากปริมาณข้อมูลเฉพาะงานที่เพิ่งถูกเปิดเผย
- กรณีการปนเปื้อนรุนแรงจะถูกตรวจสอบเพิ่มเติมด้วยโมเดลประเมินอีกตัวเพื่อยืนยันว่ามีการรั่วไหลของข้อมูลมากเกินไปหรือไม่ ก่อนสรุปด้วยการตรวจทานโดยตรง
กรณีการปนเปื้อนรุนแรงของแต่ละโมเดล
-
GPT‑5.2
- ใน django__django-11451 เพียงมี snippet สั้น ๆ ของคำอธิบายงาน ก็สามารถพิมพ์ gold patch ที่ถูกต้อง ออกมาได้
- มันสร้างซ้ำได้ทั้งเงื่อนไขการคืนค่าก่อนกำหนดเมื่อ
ModelBackend.authenticate()มีusername is None or password is Noneรวมถึง path ของไฟล์และชื่อเมธอด
-
Claude Opus 4.5
- ใน astropy__astropy-13236 มันอ้างอิงทั้ง path ของไฟล์ที่ต้องแก้คือ
astropy/table/table.py, เมธอด_convert_data_to_colและแม้แต่ inline comment ภายใน diff ได้ตรงตัวอักษร - โค้ด 4 บรรทัดที่แปลง structured ndarray ไปเป็น
NdarrayMixinโดยอัตโนมัติก็ถูกกู้คืนกลับมาได้อย่างแม่นยำ
- ใน astropy__astropy-13236 มันอ้างอิงทั้ง path ของไฟล์ที่ต้องแก้คือ
-
Gemini 3 Flash
- ใน django__django-11099 แม้แทบไม่มีข้อมูลเพิ่มเติมนอกจาก task ID ก็ยังสามารถพิมพ์คำอธิบายงานและ gold patch ทั้งหมด ออกมาได้แบบตรงตัวอักษร
- มันสร้างซ้ำได้ทั้งการเปลี่ยน regex สำหรับตรวจสอบชื่อผู้ใช้จาก
r'^[\\w.@+-]+$'เป็นr'^[\\w.@+-]+\\Z'รวมถึง diff ระดับบรรทัด
บทเรียนสำคัญ
- เบนช์มาร์กที่ดึงมาจากข้อมูลซึ่งเข้าถึงได้สาธารณะมี ความเสี่ยงด้านการปนเปื้อน และการสัมผัสข้อมูลฝึกอาจดันคะแนนให้สูงขึ้นโดยไม่สังเกตได้ง่าย
- หากสร้างเบนช์มาร์กจากข้อมูลสาธารณะที่ crawl มา ผู้พัฒนาโมเดลต้องทำ การทดสอบเพิ่มเติม เพื่อตรวจสอบว่ามีการปนเปื้อนหรือไม่
- เนื่องจากเบนช์มาร์กและคำตอบที่เปิดเผยสาธารณะอาจถูกรวมเข้าไปในข้อมูลฝึกได้ในที่สุด จึงต้องระมัดระวังเป็นพิเศษทั้งในวิธีเผยแพร่ชุดข้อมูลและการกรองข้อมูลฝึก
- มีการกล่าวถึงวิธีควบคุมการเผยแพร่ เช่น การป้องกันด้วยรหัสผ่าน
- และกล่าวถึง วิธีการกรอง เช่น การบังคับใช้ canary string อย่างเคร่งครัด
- การให้คะแนนอัตโนมัติต้องแข็งแรงพอที่จะไม่แกว่งตามความต่างด้านการติดตั้งใช้งานที่ไม่สำคัญ แต่ก็ต้องเข้มพอจะป้องกันการใช้ทางลัด ซึ่งเป็นสิ่งที่ทำให้บรรลุพร้อมกันได้ยากมาก
- การค้นหาข้อบกพร่องเหล่านี้จำเป็นต้องใช้ การติดป้ายกำกับด้วยมือขนาดใหญ่หลายรอบ
ทิศทางการประเมินต่อจากนี้
- ในช่วงไม่กี่เดือนที่ผ่านมา OpenAI ตัดสินใจรายงานผลบนข้อมูลประเมินสาธารณะของ SWE-bench Pro และแนะนำให้ผู้พัฒนาโมเดลรายอื่นทำเช่นเดียวกัน
- SWE-bench Pro ไม่ได้สมบูรณ์แบบเช่นกัน แต่จากประสบการณ์พบว่าได้รับ ผลกระทบจากการปนเปื้อนน้อยกว่า SWE-bench Verified
- ใน pipeline ตรวจสอบการปนเปื้อนภายในยังพบกรณีปนเปื้อนบางส่วน
- อย่างไรก็ตามพบได้น้อยกว่าและมีความรุนแรงต่ำกว่า SWE-bench Verified มาก
- ไม่มีโมเดลใดสามารถสร้าง gold patch ที่ตรงกันทั้งหมดแบบตัวอักษรต่ออักษรได้
- จากนี้ไปมีแผนจะลงทุนต่อเนื่องใน เบนช์มาร์กที่เป็นต้นฉบับและไม่เปิดเผยสาธารณะ
- ใน GDPVal ผู้เชี่ยวชาญเฉพาะด้านจะเขียนงานขึ้นมาแบบไม่เปิดเผยสาธารณะ และผู้ประเมินที่ผ่านการฝึกจะให้คะแนนโซลูชันแบบองค์รวม
- วิธีลักษณะนี้ใช้ทรัพยากรมาก แต่ยิ่งกลายเป็นองค์ประกอบที่จำเป็นมากขึ้นเรื่อย ๆ หากต้องการวัดการพัฒนาความสามารถที่มีความหมายจริง
1 ความคิดเห็น
ความเห็นจาก Hacker News
ในฐานะผู้ร่วมสร้าง SWE-bench ขอเรียบเรียงสั้น ๆ ว่า ตอนนี้ SWE-bench Verified แทบจะอิ่มตัวแล้วที่ 93.9% และ Anthropic ก็ควรได้รับคำยินดี
ถึงอย่างนั้น ทีมที่ยังไปไม่ถึงตัวเลขนั้นก็ยังมีช่องให้ดันขึ้นได้อีก
ส่วน SWE-bench Multilingual และ SWE-bench Multimodal ยังไม่อิ่มตัว และ Multimodal มีแผนจะปล่อยโอเพนซอร์สภายในเดือนหน้า
สุดท้ายแล้ว benchmark ทุกตัวก็ย่อมอิ่มตัวอยู่ดี ดังนั้นเราก็กำลังทำ benchmark ขั้นถัดไปต่อ และตอนนี้ก็มีของอย่าง https://codeclash.ai/ หรือ https://algotune.io/ ออกมาแล้ว
ประเด็นหลักคือมีเทสต์จำนวนมากที่ไม่แม่นยำ ทำให้วิธีแก้ที่จริง ๆ ถูกต้องก็ยังถูกตัดสินว่าผิด
อีกทั้งโมเดลระดับแนวหน้าก็มีโอกาสสูงที่จะเคยอ่านและจำ PR ต้นทางของโจทย์เหล่านั้นมาแล้ว
บางปัญหาถึงขั้นแทบเป็นไปไม่ได้เลยที่จะตอบถูกหากไม่ได้ท่องจำคำตอบไว้ เช่น ต้องเปิดเผยชื่อ helper function เฉพาะที่ไม่ได้อยู่ในโจทย์ จึงจะผ่านเทสต์ได้
แต่ที่โมเดลระดับแนวหน้าผ่านเรื่องพวกนี้ได้ ดูเหมือนเป็นเพราะมันจำได้ว่าต้องใช้ชื่อนั้น
ถ้า benchmark รุ่นถัดไปไม่แก้ปัญหานี้ ต่อให้อิ่มตัวหรือไม่ ปัญหาเดิมก็จะยังอยู่
คิดเลขแล้ว 0.191 * 0.594 > 1 - 0.936 เลยทำให้อยากรู้ว่า subset ที่ audit ไม่ได้เป็นตัวแทนที่ดี หรือ Anthropic ได้คะแนนสูงด้วยวิธีที่ชวนสงสัยกันแน่
สร้าง benchmark, อิ่มตัว, เลิกใช้, แทนที่, แล้วก็วนซ้ำ
สุดท้าย treadmill นี้เองก็ดูเหมือนหมุนเป็นสินค้าไปแล้ว ยังไม่รู้ทางแก้ แต่ให้ความรู้สึกเหมือนประวัติศาสตร์ซ้ำรอย
เท่าที่ผมเข้าใจ มันดูเหมือนการดัดแปลง SWE-bench ที่น่าสนใจ
การถูกตรวจสอบหนักแบบตอนนี้น่าจะเป็นผลสะท้อนจากการที่มันถูกใช้อย่างแพร่หลายและประสบความสำเร็จ
ไม่ว่า benchmark ใหม่อะไรจะออกมา มันก็ดูชัดมากว่าจะถูกดูดเข้า training data ไม่นานและล้าสมัยทันที
ต่อให้เพื่อการตลาดอย่างเดียว ก็ยังมีแรงจูงใจเสมอที่จะ optimize ให้เข้ากับ benchmark บางตัว และแม้จะมี training cutoff โดยทั่วไปช่วงห่างจากเวลาที่เปิดเผยก็มักมีแค่ 3~6 เดือน
ดังนั้นความยากจริงของ coding benchmark คือการสร้างโจทย์ใหม่ทั้งหมดที่ไม่ยืม benchmark เดิม และรับประกันได้ว่าไม่เคยอยู่ใน training data มาก่อน
มองจากมุมนี้ benchmark ที่ถูกสร้างก่อนโมเดลออกวางตลาดก็ยากจะบอกว่าเป็นตัวแทนความสามารถของโมเดลนั้นได้จริง และแรงจูงใจทางการเงินในการยัดข้อมูลเพื่อโฆษณาการปรับปรุงเล็กน้อยก็มากเกินไป
เอาจริง ๆ ควรตัด benchmark ออกจากสื่อการตลาดไปเลย แล้วปล่อยให้โมเดลพูดด้วยตัวเองและให้ชุมชนตัดสิน แต่บริษัทที่มีเงินเดิมพันคงไม่มีทางทำแบบนั้น
เกมผจญภัยข้อความ Zork อยู่ใน training data ของ LLM และมีความเป็น deterministic ดังนั้นตามทฤษฎีแล้วมันควรเล่นและเคลียร์ได้ง่าย
แต่ในความเป็นจริงไม่เป็นแบบนั้น และนั่นแหละคือเป้าหมายของ Zork bench
https://github.com/mnky9800n/zork-bench
มีทั้งผู้เชี่ยวชาญที่ใช้ LLM มานานกว่า 10 ปี ไปจนถึง vibe coder ที่ไม่เคยเขียนโค้ด และบนอินเทอร์เน็ตก็มีทั้งคนที่มอง GPT 5.5 เป็นผู้กอบกู้และคนที่มองว่ามันโง่กว่า 5.4
ผมเองก็ไม่มีเวลาสร้าง private benchmark ใหม่ทุกครั้งที่มีโมเดลใหม่ สุดท้ายก็เลยอาศัย benchmark แบบ private หรือ semi-private เพื่อกะระดับการพัฒนา แล้วค่อยสมัครและลองใช้เอง
อย่างน้อยก็น่าเชื่อถือกว่าบรรยากาศที่ผู้ใช้สุ่มหรือบอทบน Reddit ปั่นขึ้นมาเล็กน้อย
หรือไม่ก็รันเทสต์ต่อเนื่องแบบลำดับใน context เดียวกัน เพื่อดูว่าโมเดลจะทนได้แค่ไหนก่อนที่มันจะเริ่มทำบริบทหลุด
benchmark ตอนนี้เป็นปัญหาแบบ greenfield ตลอด แต่ของจริงเราต้องการโมเดลที่รับมือกับ context ที่เน่าแล้วได้
ตอนนี้คอขวดไม่ใช่ ความสามารถล้วน ๆ แต่เป็นว่าใน production โมเดล มองเห็นอะไรได้บ้าง
โครงสร้าง context, คุณภาพ retrieval, การใช้ tool, ความสามารถในการประกอบสถานะข้ามหลายเทิร์น พวกนี้สำคัญ และใน SWE-bench แทบไม่มีเลย
SWE-bench ดูเหมือนชุดโจทย์ one-shot แต่การทำงานด้านโค้ดระดับแนวหน้าไม่ใช่รูปแบบนั้นอีกแล้ว
ต่อให้สร้าง benchmark ที่สมบูรณ์แบบและไม่มี data contamination เลย มันก็น่าจะยังวัดแกนที่ผิดสำหรับงานส่วนใหญ่อยู่ดี
ในโจทย์ที่แยกเดี่ยว มันไปถึงระดับนักศึกษาปริญญาโท/เอกแล้ว และ leverage ตอนนี้อยู่ที่มันทำงานอย่างไรภายในระบบที่ใหญ่กว่า
แต่สิ่งนั้นแทบจะใกล้กับเรื่องรสนิยมหรือ preference มาก จึงวัดแบบ objective ได้ยากมาก
Anthropic จ่ายเงินให้อินฟลูเอนเซอร์ช่วยดัน Claude Code และก็ดูเหมือนมีการใช้บอทจำนวนมากด้วย ทำให้ยากจะเชื่อฉันทามติออนไลน์
ต่อให้ทุกคนเจตนาดี ความต่างของโดเมนงานก็ทำให้ประสบการณ์ที่รับรู้ต่างกันมากได้
เช่น AI อาจเก่งกว่ามากในงาน frontend หรือฝั่งไลบรารีที่ใช้กันแพร่หลาย
ท้ายที่สุดการประเมินโมเดลก็ต้องลองใช้เองอยู่ดี แต่การทำแบบนี้ซ้ำกับทุกโมเดลใหม่นั้นเหนื่อยมาก และแค่นั้นก็ยังไม่ครอบคลุมพอ
benchmark/eval เดิมทีก็ยากอยู่แล้ว และยิ่งยากขึ้นเมื่อมีแรงจูงใจมหาศาลในระดับอุตสาหกรรมที่จะเล่นเกมกับมัน
ELT-Bench ก็เป็นตัวอย่างล่าสุด มันเป็น benchmark จริงจังตัวแรกสำหรับ workload ด้าน data engineering ที่ออกมาเมื่อราวหนึ่งปีก่อน
แต่เมื่อไม่กี่วันก่อนมี paper ติดตามผลที่มีหนึ่งในผู้เขียนต้นฉบับร่วมอยู่ด้วย ซึ่งทำการ audit benchmark เอง และพบว่าผลลัพธ์มีอคติจากปัญหาเชิงโครงสร้าง
paper อยู่ที่นี่: https://arxiv.org/abs/2603.29399
จริง ๆ เรื่องแบบนี้ไม่ใหม่เลย และวงการยุคก่อนก็เคยเจอทั้งหมดนี้มาแล้วในสเกลที่เล็กกว่า
ยังมีบทความที่เขียนไว้ด้วยว่าสถานการณ์ทุกวันนี้คล้ายกับสงคราม benchmarketing ของฐานข้อมูลมากแค่ไหน
https://www.typedef.ai/blog/from-benchmarketing-to-benchmaxx...
ใน BrowseComp plus หรือ dataset สำหรับ deep research อื่น ๆ ก็เห็นปัญหาแนวเดียวกัน และไม่จำเป็นต้องเป็นเพราะ frontier lab ตั้งใจโกง แต่เป็นผลตามธรรมชาติจากการเทรนบนทั้งเว็บ
dataset ใหม่ต้องถูกสร้างต่อเนื่องไปเรื่อย ๆ
จากที่ผมทำ classifier เอง ผมเจอว่าสำหรับบางงาน โมเดลทำได้ดีกว่ามนุษย์อย่างสม่ำเสมอจนวัด precision เองไม่ได้แล้ว
พอเป็นแบบนั้น classifier ตัวนั้นก็กลายเป็น state-of-the-art benchmark ไปโดยปริยาย และไม่มีอะไรให้เทียบได้นอกจากตัวมันเอง
เรื่องแบบนี้ยังเกิดได้แม้ในงานซับซ้อนที่ใช้ตรรกะน้อยกว่าและต้องอาศัยการให้เหตุผลต่อเนื่องน้อยกว่างานเขียนโค้ด และวันหนึ่ง benchmark ที่ถูก calibrate และเป็นอิสระจากสิ่งที่มันใช้วัดอาจหายไปเลยก็ได้
ท้ายที่สุด ผมมองว่าเราได้ benchmark ที่คู่ควรกับการกระทำของเราเอง กันอยู่พอสมควร
PR จำนวนมากที่ผ่าน SWE-bench จริง ๆ อาจไม่มีวันถูก merge: https://news.ycombinator.com/item?id=47341645
และคะแนน SWE-bench ของโมเดลชั้นนำก็อาจบิดเบือนจาก การรั่วของ git history: https://news.ycombinator.com/item?id=45214670
บางทีน่าจะให้โมเดลระดับท็อปสร้าง benchmark กันเองไปเลย
ล้อเล่นน่ะ แต่สิ่งที่ผมคาดหวังคือ ARC-AGI-3 และจากการลองจำลองเป็นมนุษย์ดู มันให้ความรู้สึกว่าเน้น reasoning สูงมาก
leaderboard อยู่ที่นี่: https://arcprize.org/leaderboard
ตอนนี้แม้แต่โมเดลระดับท็อปส่วนใหญ่ก็ยังไปไม่ถึง 5%
ตอนนี้แม้แต่โมเดลที่ดีที่สุดที่ยืนยันแล้วอย่าง Claude Opus 4.6 ก็ยังอยู่แค่ราว 0.45%
แต่เพราะมันใหม่มาก จึงคาดว่ากับโมเดลรุ่นถัดไปน่าจะดีขึ้นค่อนข้างมาก
ให้โมเดลรุ่นก่อนสัมภาษณ์โมเดลรุ่นใหม่ แล้วให้ทั้งสองฝั่งหรือโมเดลผู้ตัดสินตัวที่สามตัดสินว่าใครฉลาดกว่า จากนั้นเปลี่ยน seed แล้วทำซ้ำ 100 ครั้งก็ได้
เอาสัดส่วนที่ทั้งสองฝ่ายยอมรับชัยชนะของโมเดลใหม่เป็นคะแนนก็น่าจะพอได้
มันเป็นแนวที่เล่นเกมด้วยได้ยากที่สุด
พอคิดแล้วก็ตลกดี
benchmark ที่ดีกว่าควรมี การให้คะแนนแบบ objective, ความกว้างข้ามหลายสาขา, และ ความสามารถในการขยายตัว พร้อมทั้งหลีกเลี่ยงรูปแบบที่มีคำตอบเดียวตายตัว
สิ่งที่เรากำลังออกแบบที่ https://gertlabs.com ก็ไปในทิศทางนั้น และส่วนใหญ่ก็ยังเกี่ยวข้องกับการแก้ปัญหาผ่านการเขียนโค้ด
จากประสบการณ์ของผม gpt 5.4/5.5 แทบไร้ที่ติทางเทคนิค และถ้ามีปัญหาก็มักเป็นเพราะอินพุตไม่ชัดเจน
มันยังรับมือปัญหาระหว่างแก้บั๊กหรือทำ implementation ได้ด้วยตัวเอง และมีแนวโน้มจะปิดงานได้ครบถ้วนไม่มีช่องโหว่
ส่วน Opus ผมมองว่าค่อนข้างถูกประเมินค่าสูงเกินจริงในด้านความสามารถทางเทคนิค
มันมีเซนส์นักออกแบบ/นักพัฒนาที่ทำ UX สวยงามได้ดีกว่า แต่เวลาตรวจงานผมก็ยังให้ gpt 5.5 ทำเสมอ
สิ่งที่น่าประหลาดใจที่สุดคือผลของ Xiao-Mi ผมยังไม่เคยใช้ แต่เห็นแบบนี้แล้วตั้งใจจะลอง
ขอแสดงความยินดีกับทีมที่สร้างเกณฑ์อ้างอิงที่มีความหมายท่ามกลางสงครามความเร็วของ AI ที่สับสนนี้
มันดูเหมือนสะท้อนทั้งอคติของชุดข้อมูลฝึกและความต่างของจุดเน้นด้าน go-to-market และก็อาจเป็นผลจากการที่ Anthropic โฟกัสลูกค้าองค์กรหนักกว่า OpenAI
ซึ่งก็สอดคล้องกับความรู้สึกของผมจากการใช้ Opus กับ C++
แต่ผลของ C# ยังว่างอยู่ เลยอยากถาม @gertlabs ว่ามี ETA ไหม
เลยอยากรู้ว่ามีคอมเมนต์ไหมว่าทำไมถึงออกมาแบบนั้น
เรื่องแบบนี้ไม่ว่าจะเกิดแบบอินทรีย์หรือไม่อินทรีย์ สุดท้ายก็คงต้องเกิดอยู่แล้ว
มันมีแนวโน้มจะไหลไปเป็นว่าแค่ทำให้ คะแนน benchmark ออกมาดีก็พอ ต่อให้เอาไป generalize ข้างนอกไม่ได้ก็ไม่เป็นไร
กรณีคล้ายกันที่นึกถึงได้คือ Graduate student descent
https://sciencedryad.wordpress.com/2014/01/25/grad-student-d...
มองย้อนกลับไป SWE-bench เองอาจไม่ได้ยิ่งใหญ่ขนาดนั้นแต่แรก
ตลอดปี 2025 สัดส่วนที่โมเดลสร้าง โค้ดที่ดี ได้จริงแทบไม่ได้ดีขึ้นอย่างมีนัยสำคัญเลย และอาจตีความได้ถูกกว่าว่าที่ดีขึ้นคือความสามารถในการผ่าน automated test
https://entropicthoughts.com/no-swe-bench-improvement
ในเดือนมกราคม 2025 ตัวหลักยังเป็น Claude 3.5 Sonnet, Gemini 1.5 Pro และฝั่ง OpenAI ก็ GPT-4o และในฐานะคนที่ใช้ทั้งโมเดลพวกนั้นและโมเดลระดับแนวหน้าตอนนี้ ผมรู้สึกชัดเจนว่าโมเดลปัจจุบันก้าวขึ้นไปอีกขั้นใหญ่แล้ว
คุณภาพโมเดลอาจกำลังนิ่ง และการหาทิศทางปรับปรุงใหม่ก็ไม่ง่ายเลย
แม้แต่ การขยายความกว้างของโมเดล ที่ผลักดันอัตราการพัฒนามาจนถึงตอนนี้ก็ดูเหมือนจะเริ่มแตะขีดจำกัดแล้ว เลยอยากรู้ว่าจะมีนัยอะไรตามมา
ในระยะยาว แม้แต่สิ่งที่แก้ด้วย tooling อย่างเดียวก็มีเพดานของมัน
นั่นก็เป็นหนึ่งในเหตุผลที่ Anthropic ถูกประเมินมูลค่าระดับหลายหมื่นล้านดอลลาร์
ที่ SWE-bench มีประโยชน์ฝั่งโค้ดก็เพราะซอฟต์แวร์เอนจิเนียริงมีทั้งประเพณีและโครงสร้างพื้นฐานที่แข็งแรงมากในการสร้างและใช้ automated test
สิ่งที่บทความพูด น่าจะหมายถึงว่าเมื่อไป audit subset 27.6% ที่โมเดลมักแก้ไม่ผ่าน ก็พบว่าอย่างน้อย 59.4% ของส่วนนั้นมีเทสต์บกพร่องที่ปฏิเสธ submission ซึ่งใช้งานได้จริง
ถ้าเป็นจริงก็ดูเหมือนแปลว่าที่ผ่านมามีกลุ่มใหญ่ของทั้งโจทย์และคำตอบที่ผิดอยู่ไม่ใช่หรือ และถ้าอย่างนั้นมันเคยเป็นมาตรวัดที่ใช้ได้อย่างไร ก็น่าตั้งคำถามมาก
พอดูคำอธิบายกระบวนการสร้าง benchmark แล้ว มาตรฐานก็ดูสูงพอสมควร เลยยิ่งไม่เข้าใจว่าขั้นตอนแบบนั้นออกมาคู่กับคุณภาพข้อมูลที่แย่ขนาดนี้ได้อย่างไร
การที่เขาเปิดเผยปัญหาด้วยตัวเองก็น่าชื่นชม แต่ก็ยังเหลือคำถามอีกมาก
และด้วยเหตุผลในทางปฏิบัติ benchmark ก็ไม่มีทางเป็นตัวแทน use case ของคุณ หรือของทุก use case ได้อยู่แล้ว
มันใช้วัดได้แค่สิ่งที่มีอยู่ข้างในเท่านั้น ไม่มากไม่น้อยไปกว่านั้น
นั่นก็เป็นเหตุผลที่ผมไม่เข้าใจว่าทำไม ecosystem ถึงยึดติดกับ benchmark สาธารณะกันนัก
เช่น แค่ Qwen 3.5 ดีกว่า Qwen 2.5 บน Benchmark X 50% ก็แทบไม่ได้รับประกันเลยว่ามันจะดีกว่าสำหรับงานที่ผมใช้จริง 50%
ผมสร้าง private benchmark ของตัวเองมาเรื่อย ๆ โดยอิงจากกรณีที่โมเดลเคยพลาดในการใช้งานจริง และค่อย ๆ ปรับ prompt ตามนั้น
แม้จะมีอัปเดตโมเดลใหม่ benchmark ของผมก็มักขยับแค่ 2~3% แต่ benchmark สาธารณะกลับชอบโปรโมตการกระโดด 30~40% จนยากจะเชื่อว่าไม่มี training data contamination
ในกรณีสุดโต่ง มันอาจมีช่วงที่ถ้าคุณอยากได้คะแนนสูงขึ้น คุณต้องจงใจตอบตามคำตอบที่ผิด
สุดท้ายคำตอบก็คือ ML เป็นสาขาที่พยายามทำงานให้ได้ไม่ทางใดก็ทางหนึ่งอยู่แล้ว ดังนั้นแม้จะมีข้อบกพร่อง มันก็ยังไปได้ไกลอย่างน่าประหลาด
ขณะเดียวกัน นั่นก็เป็นเหตุผลว่าทำไมการชี้ข้อบกพร่องที่คนอื่นมองไม่เห็นจึงนำไปสู่การก้าวกระโดดครั้งใหญ่ได้
ถ้าการให้คะแนนของโจทย์ส่วนใหญ่ยังถูกต้อง ทิศทางโดยรวมก็อาจยังคงอยู่
เช่น ต่อให้เป็น benchmark แย่มากที่ label ผิดถึง 49% ถ้ามีโมเดลหนึ่งตอบถูกเสมอได้ 51% และอีกโมเดลตอบผิดเสมอได้ 49% อันดับก็ยังคงถูกอยู่
benchmark ฝั่ง machine learning ส่วนใหญ่มีปัญหา mislabeled อยู่ไม่น้อย แต่ถ้าเป้าหมายคือแยกโมเดลออกจากกัน โดยทั่วไปการรวบรวม dataset ให้ใหญ่ขึ้นมักคุ้มกว่าการเสียเวลารับประกันการให้คะแนนที่สมบูรณ์แบบ