YouMind
ลงชื่อเข้าใช้

ปลดปล่อยโมเดล: การออกแบบ Harness ที่ล้ำหน้า

@pirroh
อังกฤษ29 ก.ย. 2569
237K
511
79
21
1.2K

TL;DR

Replit แย้งว่าเราเตอร์โมเดลแบบตายตัวจำกัดประสิทธิภาพเมื่อเทียบกับการปล่อยให้โมเดลระดับแนวหน้าเลือก Subagent และระดับความพยายามแบบไดนามิก การออกแบบ Harness ใหม่ของพวกเขาบรรลุ Pareto-efficiency ในเกณฑ์มาตรฐานด้านการเขียนโค้ดโดยอาศัยความเป็นอิสระของโมเดล

ตอนนี้ Model router มีอยู่ทั่วไปหมด แต่ก็มีข้อจำกัดพื้นฐานอย่างหนึ่ง ไม่ว่าจะเป็นแบบที่ใช้ heuristics ขั้นสูง หรือใช้โมเดลขนาดเล็กที่อ่านแต่ละ turn แล้วเลือก LLM ที่จะใช้งาน ตัว router เองก็จะไม่มีทางเก่งเท่าโมเดลที่มันเลือกให้ได้เลย Replit Agent เลือกวิธีที่ต่างออกไป คือปล่อยให้โมเดลตัดสินใจเอง

Agent หลักหรือ core loop จะเป็นคนเลือกระดับ (tier) และ effort ของ subagent แต่ละตัว พร้อมทั้งปรับระดับของตัวเองไปตามความคืบหน้าของงาน เมื่อมีอิสระขนาดนี้ GPT-6 Astra จึงโยนงาน implementation ทั่วไปให้ subagent ที่ต้นทุนต่ำกว่า แล้วตัดสินใจเองว่าควรใช้ token ตรงไหนถึงจะคุ้มที่สุด บนทั้ง DeepSWE และ Terminal-Bench นั้น Replit Agent มีประสิทธิภาพแบบ Pareto-efficient เมื่อเทียบกับ Astra ที่ทำงานเดี่ยว ๆ ไม่มี baseline ของ Astra ที่ตีพิมพ์ไว้ตัวไหนที่ต้นทุนถูกกว่าแล้วได้คะแนนสูงกว่า นอกจากนี้ยังเอาชนะสถาปัตยกรรมแบบ sidekick (เซ็ตอัปเดียวกันแต่ใช้ worker ตัวเดียวที่รันต่อเนื่อง) ได้ถึง 11 และ 16 คะแนน

Michele Catasta - inline image

อ่านโพสต์ฉบับเต็มพร้อมภาพเคลื่อนไหวและเชิงอรรถได้ที่ https://replit.com/blog/free-the-models

ทำไมเราถึงทำ scaffolding น้อยลง

ทุกครั้งที่มีการปล่อยโมเดลใหม่ สมมติฐานที่ฝังอยู่ใน harness จะใช้ไม่ได้อีกต่อไป

เมื่อโมเดลเก่งขึ้นในงานระยะยาว (long-horizon tasks) มันก็ต้องการ scaffolding ในชั้น harness น้อยลงตามไปด้วย ในทางปฏิบัติ เราสังเกตว่าโมเดลเริ่มเอนเอียงไปทางการมอบหมายงานด้วยตัวเองมากขึ้น โดยใช้ subagent เพื่อจัดการ context และทำงานแบบขนาน ความก้าวหน้าล่าสุด รวมถึงเรื่อง Navier–Stokes ก็เกิดขึ้นส่วนหนึ่งจากการประสานงานฝูง agent ที่ขับเคลื่อนด้วย frontier models [[1]](https://openai.com/index/navier-stokes-solution/

แต่ขอบเขตของ frontier นั้นไม่ได้ราบเรียบ โมเดลเขียนโค้ดที่เก่งที่สุด ไม่จำเป็นต้องเก่งเรื่องการออกแบบ UI หรือทำ Slides มากที่สุด และไม่จำเป็นต้องเขียนอีเมลได้ดีที่สุดเสมอไป

เราจึงออกแบบ harness ให้แต่ละโมเดลทำงานในแบบของตัวเอง โดยมี guardrail เท่าที่จำเป็น และตั้งเป้าที่คุณภาพสูงสุดในต้นทุนที่ต่ำที่สุด

ทุกโมเดลใหม่ทำให้เราต้องกลับไปทดสอบสิ่งที่เคยเชื่อมั่นอีกครั้ง และทดลอง อย่างรวดเร็ว กับเทคนิคที่ต่อยอดจากพฤติกรรมที่เกิดขึ้นใหม่ (emergent behaviors) ดังนั้น การปลดปล่อยโมเดลจึงหมายถึงการปล่อยให้มันตัดสินใจเองว่าจะคิดหนักแค่ไหน เมื่อไหร่ควรส่งต่องาน และส่งต่อให้ใคร

Michele Catasta - inline image

รูปที่ 1: การตัดสินใจสามอย่างที่ core loop ทำในทุกขั้นตอน

Primitives แบบประกอบร่างได้สำหรับการมอบหมายงาน

ตอนที่เราเริ่มทดลองกับ GPT-6 Astra [[2]](https://openai.com/index/gpt-6-astra) เราพบว่าโมเดลนี้มอบหมายงานได้เก่งมาก ตระกูล GPT-6 ยังเป็นกลุ่มแรกจาก OpenAI ที่รองรับการเปลี่ยน effort กลาง turn โดยไม่ทำลาย cache

เพื่อใช้ความสามารถเหล่านี้ เราปรับปรุง harness primitives สี่ตัว ซึ่งช่วยให้ core loop มีตัวเลือกเล็ก ๆ น้อย ๆ ในแต่ละขั้น เช่น จะส่ง subagent ประเภทไหน ขนาดและ effort ระดับใด ควรกลับไปหาตัวที่เคยบรีฟไว้แล้วหรือไม่ และจะต้องคิดหนักแค่ไหน:

  • Subagent ที่เข้าใจโดเมน นอกจาก worker ทั่วไปแล้ว harness ยังมีผู้เชี่ยวชาญเฉพาะทางให้เลือก ได้แก่ explorer แบบ read-only, browser tester, reviewer และ design subagent สำหรับ Slides และ UI ซึ่งแต่ละตัวมีโมเดลและเครื่องมือของตัวเอง ตอนนี้ harness ยังเป็นตัวกำหนดว่ามีผู้เชี่ยวชาญคนไหนบ้าง ส่วน core loop จะเป็นผู้ตัดสินใจว่าจะใช้เมื่อไหร่และอย่างไร
  • Tier และ effort ของ subagent มีทั้ง small, standard และ large ซึ่งแต่ละระดับจะสูงขึ้นทั้งในด้านต้นทุนและความสามารถ พร้อมระดับ effort ภายใน tier นั้น ทั้งสองค่านี้ใช้ได้กับทุก subagent และ core loop จะเลือกค่าเหล่านี้ทุกครั้งที่สั่งงาน ตัวอย่างเช่น การ rename แบบตรงไปตรงมาจะถูกส่งไปที่ small ด้วย low effort ในขณะที่การสร้างสมมติฐานสำหรับบั๊กแก้ยากจะถูกส่งไปที่ large ด้วย high effort
  • Subagent ที่นำกลับมาใช้ซ้ำได้ Core loop สามารถกลับไปหา subagent ที่เคยบรีฟไว้แล้วแทนที่จะเริ่มใหม่ทั้งหมด ไม่ได้มี sidekick ตัวเดียวที่ถูกเลี้ยงไว้ตลอดเซสชัน แต่ subagent จำนวนเท่าใดก็ได้จะยังคง warm อยู่ข้ามประเภทและ tier ต่าง ๆ และ core loop จะเลือกเองว่าจะปลุกตัวไหนขึ้นมา อายุ cache ที่ยาวนานขึ้นบนโมเดลใหม่ของ OpenAI ช่วยให้ต้นทุนในการทำสิ่งนี้ต่ำลง
  • การปรับ effort แบบไดนามิก ในเมื่อการเปลี่ยน effort กลาง turn ช่วยรักษา cache ไว้ได้ในบางโมเดล เราจึงเทรนระบบ escalation ที่ตรวจสอบ trajectory ในแต่ละขั้น แล้วจับคู่ effort ให้เหมาะกับระดับความยากของงาน ต่างจาก router ตรงที่ระบบนี้ทำงานกลาง turn กับงานที่กำลังดำเนินอยู่ ไม่ใช่แค่ครั้งเดียวตอนรับ request

คุณภาพโค้ดของ Astra และ Fable 5.1 [[3]](https://www.anthropic.com/claude-fable-and-mythos-5-1) ยังทำให้เราใช้ code-review subagent น้อยลงได้โดยที่คะแนน eval ไม่ตกเลย เราไม่เคยเห็นคุณภาพทางวิศวกรรมระดับนี้จากโมเดลไหนมาก่อน

โมเดลใหม่ ๆ มอบหมายงานได้ด้วยตัวเอง

Frontier models อย่าง Astra และ Fable มีต้นทุนต่อ token สูงกว่า ทำให้ดูไม่ค่อยคุ้มค่าเมื่อเทียบกับโมเดลเล็ก ๆ เราสังเกตว่ามันจะมอบหมายงานให้ subagent ที่ต้นทุนต่ำกว่าอย่างเป็นธรรมชาติ แล้วเก็บ token ของตัวเองไว้ใช้กับการตัดสินใจที่จำเป็นจริง ๆ

Replit Agent ไม่เคยบังคับให้ core loop สร้าง subagent ตารางที่ 1 แสดงให้เห็นว่าโมเดลสามตัวจัดการการตัดสินใจนี้อย่างไรในระบบ production:

Michele Catasta - inline image

ตารางที่ 1: การมอบหมายงานในระบบ production ของ Replit Agent โดยแต่ละโมเดลใช้ medium reasoning effort

โมเดลทั้งสามตัวล้วนมอบหมายงาน แต่แต่ละตัวมีวิธีของตัวเอง ที่ระดับ medium effort โมเดลตระกูล Fable แทบจะไม่ส่งงานให้ worker ทั่วไปเลย มันจะส่ง explorer แบบ read-only กับ reviewer ออกไป แล้วเก็บงาน implementation ไว้ทำเอง Astra เป็นโมเดลแรกที่เราเห็นว่ามอบหมายงานให้ worker ทั่วไปเป็นประจำโดยไม่ต้องสั่ง และพอเคยบรีฟตัวไหนไปแล้ว ก็มักจะกลับไปหาตัวนั้นแทนที่จะเริ่มใหม่ อัตราการกลับไปหานี้เพิ่มขึ้นเรื่อย ๆ ในทุกรุ่นของโมเดล

Michele Catasta - inline image

รูปที่ 2: Turn หนึ่งจากระบบ production เมื่อวันที่ 17 กันยายน 2026 วาดขึ้นจาก trace โดย core loop สั่งงาน explorer หนึ่งตัว, worker สองตัว และ tester หนึ่งตัว ในการสั่งงาน worker ทั้งห้าครั้ง มีสามครั้งที่เป็นการกลับไปหา worker ที่เคยบรีฟไว้แล้ว

ผลลัพธ์

เราประเมิน Replit Agent ในโหมด Max ซึ่งเป็นตั้งค่าคุณภาพสูงสุดของเราโดยใช้ Astra เป็น core loop บน benchmark ด้าน software engineering สองตัวคือ DeepSWE และ Terminal-Bench เราเปรียบเทียบกับ baseline สองตัว ได้แก่ Astra ที่ทำงานเดี่ยว ๆ ใน mini-swe-agent ตามที่เผยแพร่ไว้ในแต่ละ leaderboard และสถาปัตยกรรมแบบ sidekick ซึ่งเป็นคอนฟิกเดียวกันแต่เปลี่ยนอย่างหนึ่ง คือแทนที่ subagent primitives ทั้งหมดด้วย worker ตัวเดียวที่รันต่อเนื่อง กราฟแต่ละตัวพล็อตคะแนนเทียบกับต้นทุนต่องาน ดังนั้นคอนฟิกที่มีประสิทธิภาพสูงสุดจะอยู่ค่อนไปทางมุมซ้ายบน

บน DeepSWE v1.1 [[4]](https://deepswe.datacurve.ai/) ซึ่งทดสอบการเปลี่ยนแปลงระยะยาวใน repository โอเพนซอร์สที่ใช้งานอยู่จริง Replit Agent ทำคะแนนได้ 72% ที่ต้นทุน $2.11 ต่องาน Astra ใน mini-swe-agent ที่ low effort ทำได้ 67% ที่ $1.60 และที่ xhigh effort ทำได้ 74% ที่ $4.43 ส่วนสถาปัตยกรรมแบบ sidekick ทำได้ 61% ที่ $1.34 Terminal-Bench 4.0 [[5]](https://www.tbench.ai/) ทดสอบงานหลายขั้นตอนที่ทำผ่าน shell ทั้งหมด Replit Agent ทำได้ถึง 49% ที่ $2.53 ต่องาน เทียบกับ 42% ที่ $2.25 สำหรับ Astra ที่ low effort และ 60% ที่ $5.86 ที่ xhigh ส่วนสถาปัตยกรรมแบบ sidekick ทำได้ 33% ที่ $1.84

Michele Catasta - inline image

Replit Agent เอาชนะสถาปัตยกรรมแบบ sidekick บนทั้งสอง benchmark ด้วยระยะห่าง 11 และ 16 คะแนน แบบ sidekick ต้นทุนถูกกว่าก็จริง แต่แลกมาด้วยคะแนนที่หายไปหนึ่งในหกถึงหนึ่งในสาม ส่วน Astra ที่ทำงานเดี่ยว ๆ จะได้คะแนนสูงกว่าก็ต่อเมื่อใช้เงินมากกว่าเท่านั้น ค่าที่ดีที่สุดของมันอยู่เหนือ Replit Agent 2 และ 11 คะแนน แต่ต้นทุนแพงกว่าสองเท่า ไม่มี baseline ไหนที่ชนะทั้งด้านต้นทุนและคะแนน เราทดสอบ Replit Agent ในสภาพเดียวกับที่ส่งมอบให้ผู้ใช้จริงทุกประการ โดยไม่ปรับเปลี่ยน prompt หรือ harness เลย

บทเรียนอันขมขื่นของการออกแบบ harness

เรามองว่าผลลัพธ์เหล่านี้เป็นตัวอย่างหนึ่งของ bitter lesson ของ Sutton [[6]](http://www.incompleteideas.net/IncIdeas/BitterLesson.html) การฝังความรู้ของมนุษย์ลงใน agent อาจช่วยได้ในระยะสั้น แต่จะตันในระยะยาว และสุดท้ายจะถูกแซงโดยวิธีทั่วไปที่ขยายขนาดได้ตามพลังการคำนวณ Harness ที่แข็งทื่อจะบังคับให้โมเดลทำงานได้แค่วิธีเดียว แต่ harness ที่ประกอบร่างได้จะปล่อยให้มันเลือกเอง ยิ่งโมเดลฉลาดขึ้น harness ก็ยิ่งไม่ควรตัดสินใจแทนมันมากเท่านั้น

เมื่อเทียบกับสถาปัตยกรรมที่กำหนดไว้ตายตัวกว่า วิธีนี้ให้อะไรเราสามอย่าง:

  • มันเดิมพันกับ scaling laws ของโมเดล การมอบหมายงานที่พึ่งพารสนิยมของโมเดลจะดีขึ้นในทุกเวอร์ชันที่ปล่อยออกมา ตัวอย่างเบื้องต้นของโมเดลเจเนอเรชันถัดไปก็ยืนยันแนวโน้มนี้
  • มันเหมาะกับงาน งานเล็ก ๆ โมเดลก็ไม่สร้างอะไรเพิ่ม งานค้นหาก็สร้าง explorer ตัวเดียว แต่ถ้า build แตกออกเป็นชิ้นส่วนที่เป็นอิสระต่อกัน มันก็จะสร้างทีมขึ้นมา
  • มันใช้ซ้ำได้โดยไม่ต้องเก็บถาวร Subagent จะเก็บ context ไว้เผื่อโมเดลอยากเรียกกลับมาใช้ และไม่มีอะไรถูกเก็บไว้ถาวรเว้นแต่มันจะเรียกกลับ

ในมุมมองของ Sutton harness ควรปล่อยให้โมเดลค้นพบวิธีทำงานด้วยตัวเอง ไม่ใช่ไปกำหนดว่าถ้าเป็นเราจะทำยังไง ปลดปล่อยโมเดลกันเถอะ

กิตติกรรมประกาศ

เขียนโดย Daniel Furman, Jacky Zhao, Vaibhav Kumar, Ed Sioufi และ Michele Catasta ขอขอบคุณ James Austin, Toby Ho, Preeya Kirani, Zhen Li, Robin Newhouse, Devanshu Sen Pandey, Ibrahim Sheikh, Samuel Spitz, Peter Zhong และทีมงาน AI ทุกคนที่ Replit ที่มีส่วนร่วมในงานนี้ ถ้าคุณอยากทำงานด้าน AI ที่ Replit ทีมของผมกำลังรับสมัครอยู่ ติดต่อมาได้ที่ pirroh@repl.it

เอกสารอ้างอิง

  1. เกี่ยวกับปัญหา Navier–Stokes Millennium Prize
  2. เปิดตัว GPT-6 Astra
  3. เปิดตัว Claude Fable 5.1 และ Claude Mythos 5.1
  4. DeepSWE v1.1
  5. Terminal-Bench 4.0
  6. บทเรียนอันขมขื่น
  7. ความแปลกเฉพาะตัวใน Large Language Models
  8. Design Arena
  9. ผลลัพธ์ Terminal-Bench 4.0 โดย Artificial Analysis
บันทึกในคลิกเดียว

อ่านบทความไวรัลเชิงลึกด้วย AI ใน YouMind

บันทึกแหล่งที่มา ถามคำถามที่ตรงประเด็น สรุปข้อโต้แย้ง และเปลี่ยนบทความไวรัลให้เป็นโน้ตที่นำกลับมาใช้ได้ใน AI เวิร์กสเปซเดียว

สำรวจ YouMind
สำหรับครีเอเตอร์

เปลี่ยน Markdown ของคุณให้เป็นบทความ 𝕏 ที่สะอาดตา

เวลาคุณเผยแพร่งานเขียนยาวของตัวเอง การจัดรูปแบบรูปภาพ ตาราง และบล็อกโค้ดให้เข้ากับ 𝕏 นั้นน่าปวดหัว YouMind เปลี่ยนร่าง Markdown ทั้งฉบับให้เป็นบทความ 𝕏 ที่สะอาดตาและพร้อมโพสต์ทันที

ลอง Markdown เป็น 𝕏

แพตเทิร์นให้ถอดรหัสเพิ่มเติม

บทความไวรัลล่าสุด

สำรวจบทความไวรัลเพิ่มเติม