- Mercury คือ โมเดลภาษาขนาดใหญ่ (LLM) เชิงพาณิชย์ แบบใหม่ที่ใช้แนวทาง diffusion
- โมเดลนี้มีจุดเด่นคืออิงบน สถาปัตยกรรม Transformer และคาดการณ์โทเค็นหลายตัวแบบขนาน
- Mercury Coder เป็นชุด diffusion LLM ชุดแรก พัฒนามาสำหรับการเขียนโค้ด และมีให้เลือก 2 ขนาดคือ Mini และ Small
- บน NVIDIA H100 GPU ทำ throughput ได้ 1109 (Mini) และ 737 (Small) โทเค็นต่อวินาที และให้ความเร็วสูงสุดมากกว่าโมเดลเดิมที่เน้นความเร็วได้ถึง 10 เท่าที่คุณภาพระดับเดียวกัน
- ทั้งในเบนช์มาร์กการใช้งานจริงและการประเมินโดยนักพัฒนา เช่น Copilot Arena ก็ทำได้ คุณภาพอันดับ 2 และความเร็วสูงสุด พร้อมให้บริการทั้งAPI สาธารณะ และเพลย์กราวด์
ภาพรวม
- Mercury คือ ซีรีส์โมเดลภาษาขนาดใหญ่แบบใหม่ที่อิงกับ diffusion ซึ่งเป็น LLM ยุคใหม่ที่ทำงานได้ในระดับการใช้งานเชิงพาณิชย์
- โมเดลทั้งหมดถูกพารามิเตอร์ด้วย สถาปัตยกรรม Transformer และถูกฝึกให้คาดการณ์โทเค็นหลายตัวพร้อมกันแบบขนาน
- รายงานนี้แนะนำไลน์อัปแรกของ Mercury Coder ซึ่งออกแบบมาเป็นหลักสำหรับแอปสร้างโค้ด
- ขณะนี้ Mercury Coder มีให้ใช้งาน 2 ขนาดคือ Mini และ Small
ผลงานสำคัญ
- Mercury Coder สร้างมาตรฐาน state-of-the-art ใหม่ในด้านสมดุลระหว่าง ความเร็วและคุณภาพ
- จากเกณฑ์ของ Artificial Analysis ซึ่งเป็นหน่วยประเมินภายนอก:
- Mercury Coder Mini: 1109 โทเค็นต่อวินาที
- Mercury Coder Small: 737 โทเค็นต่อวินาที บน NVIDIA H100 GPU
- เร็วกว่าโมเดลฟรอนเทียร์ที่เร็วที่สุดโดยเฉลี่ย สูงสุด 10 เท่า พร้อมคุณภาพใกล้เคียงกัน
- ยังมีผลประเมินเพิ่มเติมจากเบนช์มาร์กโค้ดใน ภาษาโปรแกรมและกรณีการใช้งานที่หลากหลาย
- ในสภาพแวดล้อมนักพัฒนาจริง (Copilot Arena) ก็ทำได้
- อันดับ 2 ด้านคุณภาพ
- อันดับ 1 ด้านความเร็วโดยรวม
- รองรับทั้ง API สาธารณะ ( platform.inceptionlabs.ai ) และ แชตเพลย์กราวด์ฟรี ( chat.inceptionlabs.ai ) ที่ทุกคนใช้งานได้
คำอธิบายโครงสร้างสารบัญ
- Introduction (บทนำ)
- ผลงานสำคัญ (Contributions)
- Inception Mercury Model Family (คำอธิบายตระกูลโมเดล)
- กระบวนการฝึก (Training)
- วิธีการอนุมาน (Inference)
- Capabilities (ความสามารถของโมเดล)
- ประสิทธิภาพพื้นฐาน (Baselines)
- ความสามารถด้านการเขียนโค้ด (Coding Capabilities)
- เบนช์มาร์กการประเมิน (Evaluation Benchmarks)
สรุป
- Mercury ผสาน การออกแบบ LLM ที่อิง diffusion แบบนวัตกรรมใหม่ เข้ากับโครงสร้างการคาดการณ์แบบขนาน ทำให้ได้ ความเร็วเหนือชั้นและคุณภาพสูง ในงานสร้างโค้ด
- ด้วยโมเดลหลายขนาด เบนช์มาร์กการใช้งานจริงที่แข็งแกร่ง และการเข้าถึงที่ง่าย จึงเป็นตัวเลือกที่แข่งขันได้ทั้งในงานเชิงพาณิชย์และสภาพแวดล้อมการพัฒนา
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
มีการย้ำว่าเมื่อมีการนำ LLM agent มาใช้ ประสิทธิภาพของการทดสอบจะยิ่งกลายเป็นคอขวดฝั่ง CPU ที่รุนแรงขึ้น และตอนนี้ทุกทีมก็เจอคอขวดจากความเร็วของ CI กันอยู่แล้ว
ต่อให้เอเจนต์เขียนโค้ดได้เร็วกว่าคน 100 เท่า ก็ไม่มีความหมายถ้าการทดสอบใช้เวลาหนึ่งชั่วโมง
ในหลายโปรเจกต์ที่ฉันเคยทำ เวลาของนักพัฒนาถูกเปลืองไปมากกับการรอให้การเปลี่ยนแปลงมีผล และหลายงานก็ติดคอขวดที่ I/O หรือจำนวน worker ไม่พอ
เมื่อ coding agent เปลี่ยนงาน ticket ง่าย ๆ ให้กลายเป็น PR ได้อย่างรวดเร็ว และคอยแก้แบบเรียลไทม์ตามผลทดสอบที่ล้มเหลว คอขวดที่ CI ก็จะยิ่งแย่ลง
สภาพแวดล้อมการทดสอบของโปรเจกต์ส่วนใหญ่ยังมีช่องให้ปรับปรุงได้มาก แต่ในความเป็นจริงกลับเคยชินกับ CI ที่ช้าและต้นทุนสูงมาหลายปีโดยแทบไม่มีความคืบหน้า
บางที่ปิดแคชเพื่อแยก build ออกจากกันอย่างสมบูรณ์ หรือย้ายจาก on-premise ไปเป็น cloud VM ที่ช้ากว่า ทำให้ CI ยิ่งช้าลงไปอีก
ความเร็วของ Mercury เร็วจนน่าตกใจ และจากที่ลองทดสอบไม่กี่ครั้ง คุณภาพโค้ดก็ดีมากและแม่นยำ แต่ตอนนี้โจทย์คือทำอย่างไรให้การรันทดสอบตามความเร็วนี้ให้ทัน
ฉันไม่ค่อยเห็นด้วยกับประเด็นที่ว่าในโปรเจกต์ส่วนใหญ่ เวลานักพัฒนาถูกเปลืองไปกับการรอ PR อนุมัติ
ในมุมบริษัท เวลาของนักพัฒนาแพงกว่าเวลาเครื่องมาก ดังนั้นถ้านักพัฒนาบ่น ก็เป็นปัญหาที่แก้ได้ด้วยการเพิ่ม CI worker เป็นสองเท่า
ที่ Google เคยมีกรณี debug ปัญหา test flakiness โดยรันเทสต์ 10,000 ครั้งบนเครื่อง 10,000 เครื่องเพื่อหา failure ที่เกิดขึ้นนาน ๆ ครั้ง
ที่ทำงานปัจจุบันของฉันก็มีแนวทางคล้ายกัน โดยใช้คำสั่งเดียวรันทุกเทสต์แบบขนานบน 1,000 worker เพื่อให้โปรเจกต์ขนาด 1M LOC ได้ feedback ภายใน 5 นาที
การแยก build ออกอย่างสมบูรณ์กับการไม่ใช้แคชเป็นคนละเรื่องกัน และควรแยก build ให้สมบูรณ์พร้อมใช้ทุกแคชให้คุ้มที่สุด
ถ้าความเร็วในการ implement สูงขึ้น คอขวดก็น่าจะย้ายไปอยู่ฝั่ง PM และในกรณีนี้ความขัดแย้งอาจลดลงมาก เพราะการเปลี่ยนแปลงจะถูกทำแบบอนุกรมมากขึ้น
ยังมีความเป็นไปได้ที่จะเกิดการกลับมาของภาษาอธิบายสเปก (เช่น TLA+) เพราะเอเจนต์สามารถเขียนและตรวจสอบได้อย่างรวดเร็ว จนอาจลดจำนวน integration test ทั้งหมดลงได้
เมื่อ background agent จัดการโค้ดซ้ำซ้อน ก็อาจจัดการเทสต์ที่ซ้ำซ้อนตามไปด้วย
AI ดูมีแนวโน้มจะทำงานกับโครงสร้างแบบ monolithic ได้มีประสิทธิภาพกว่าทีมวิศวกรมนุษย์ ซึ่งอาจเพิ่มสัดส่วนการทดสอบที่รันในเครื่องโลคัลได้ ทำให้ flaky ลดลงและลดภาระของ CI
แม้ AI จะเพิ่มประสิทธิภาพได้ แต่มันก็จะนำไปสู่โค้ดที่มากขึ้น การสร้างและรันโค้ดที่เร็วขึ้น และปัญหาใหม่ ๆ ที่ตามมาอย่างต่อเนื่อง ซึ่งสุดท้ายก็ยังต้องมีวิศวกรมนุษย์คอยแก้อยู่ดี
LLM เหมาะกับงานแก้ไขเล็ก ๆ ที่ไม่เกิน 100 บรรทัด หรือทำหน้าที่คล้าย rubber duck ได้โอเค แต่ถ้าเอา LLM ใส่เข้าไปตรง ๆ ใน CI pipeline ของโปรเจกต์ขนาดใหญ่ อาจทำให้ประสิทธิภาพการทำงานลดลงเป็นหลักหลายร้อยชั่วโมง
ถ้าสุดท้ายต้องใช้เวลาไปกับการจูน prompt และจัด context แทนที่จะพัฒนาทักษะการเขียนโค้ดจริง ๆ ก็ไม่มีความหมาย
รู้สึกว่าความมั่นใจต่อ tooling ของ LLM สูงเกินไป และคิดว่ามันใช้กับระบบซับซ้อนได้ไม่ดี
มีความไม่ไว้วางใจอย่างมากถึงขั้นว่า การปล่อย LLM แบบไม่มีการกำกับดูแลเข้าไปใน repository สำคัญนั้นคงไม่เกิดขึ้น “เว้นแต่จะถูกเอาปืนจ่อ”
สุดท้ายแล้วก็มักต้องกลับมาแก้ผลลัพธ์ของ LLM อยู่ครึ่งหนึ่ง และถ้าเป็นแบบนั้นทำเองน่าจะดีกว่า
ก่อนมีรถยนต์ แทบไม่ต้องเสียเงินกับน้ำมัน น้ำมันเครื่อง หรือการบำรุงรักษา แต่เมื่อระบบก้าวหน้าขึ้น ก็ต้องมีโครงสร้างพื้นฐานและค่าใช้จ่ายประกอบตามมา
นี่เป็นวงจรที่ใช้ AI แก้คอขวดหรือสร้างฟีเจอร์เพิ่มเพื่อเพิ่มรายได้สูงสุด แล้วเอารายได้ส่วนเพิ่มนั้นไปซื้อทรัพยากร CI เพิ่ม
AI ก็ไม่ต่างจากการเพิ่มนักพัฒนาอีก 10 คน ดังนั้นต้นทุนสนับสนุนที่เพิ่มขึ้นจึงเป็นเรื่องธรรมดา
เป็นมุมมองที่ชวนให้ย้อนคิดว่า เราสามารถอธิบายเรื่องประสิทธิภาพอย่างมีเหตุผลเพื่อขอทรัพยากร CI เพิ่ม หรือชี้แนวทางในการ optimize ได้หรือไม่
อยากรู้ว่าต้นทุนต่อเครื่องของทรัพยากร CI อยู่ที่เท่าไร
มีประสบการณ์เร่งความเร็ว CI ได้มากในแอป Python ด้วยการใช้ toolchain ของ astral.sh และการติดตั้งแพ็กเกจผ่าน uv พร้อมใช้แคช
อีกไม่นานมีแผนจะย้ายจาก mypy ไปใช้ type checker ของ astral ซึ่งก็น่าจะยิ่งเร็วขึ้น
ถ้าเป็นแอปที่มี frontend ส่วนที่ช้าที่สุดน่าจะเป็นการทดสอบ Playwright แต่กับแอปอื่น ๆ ก็อาจไม่ใช่ประเด็น
(ป.ล. ถ้า Mike คนนี้ใช่คนที่คิดไว้ ก็น่าจะเป็น SRE ที่เคยทำงานด้วยกันใน Google Maps ช่วงต้นทศวรรษ 2000 เป็นความเห็นที่เชื่อถือได้)
ฉันลองขอ regex pattern ใน Mercury playground แล้วพบว่าโมเดลเริ่มวางแผนเอง เขียน pattern แล้วต่อด้วยการสร้างเทสต์
แต่จากนั้นมันก็เพิ่มจำนวนเทสต์ไปเรื่อย ๆ ไม่หยุด จนชนขีดจำกัดของ context แล้วคำตอบก็ขาดไป
พอเกินราว 30 อัน มันเริ่มใส่คอมเมนต์ผลทดสอบผิด ๆ และหลัง 120 อันไปแล้ว input ของเทสต์เองก็เริ่มเพี้ยน มีตัวอักษรสุ่มเต็มไปหมด
ตัว pattern เองก็ไม่ใช่คำตอบที่ถูกต้องอยู่แล้ว แต่ปรากฏการณ์ “ลูปไม่รู้จบ” นี้น่าสนใจกว่า
อนึ่ง จำได้ว่าเมื่อไม่นานมานี้ LLM ทั่วไปก็เคยมีเอาต์พุตซ้ำ ๆ ที่ดูเหมือน “ลูปเกือบไม่สิ้นสุด” แบบนี้เหมือนกัน
เป็นการติดอยู่กับรูปแบบที่ผลลัพธ์ต่างกันออกไปเพียงเล็กน้อย
คิดว่ากรณีนี้เป็นหลักฐานชั้นดีว่า “การทำนาย token อย่างเดียวไม่สามารถสร้างโค้ดได้อย่างแม่นยำ”
เป็นการประเมินว่า LLM ไม่ได้ถูกออกแบบมาให้เหมาะกับการใช้เหตุผลด้านโค้ดตั้งแต่ต้น
จากที่ฉันอ่านรายงานทางเทคนิค Mercury ดูเหมือนจะอิงจากงาน Lou et al. 2023, SEDD
ฉันเป็นคนแรก ๆ (อาจจะคนแรก) ที่ reimplement SEDD แบบ from-scratch และ เปิดโค้ดไว้
ฉันยัง implement วิธี denoising ที่ซับซ้อนด้วยตัวเอง
ออกแบบให้สะอาดและอ่านง่ายกว่า SEDD เดิม และสามารถรันบน single GPU กับชุดข้อมูลขนาดเล็กได้ภายในไม่กี่ชั่วโมง
อนึ่ง ที่ DeepMind ก็มีโมเดล Gemini แบบ diffusion เหมือนกัน (ลิงก์)
จากที่ลองเอง มันเร็วมากแบบเดียวกับ Mercury แต่คุณภาพคำตอบด้อยกว่า Gemini รุ่นอื่นค่อนข้างมาก
จากที่ลองคร่าว ๆ ก็เห็นด้วยว่าแม้ความเร็วจะน่าประทับใจ แต่ความแม่นยำตกลงไปพอสมควร
สงสัยว่า Gemini Diffusion demo ใช้งานฟรีหรือเปล่า
ฉันอยู่ใน waiting list มาหลายวันแล้ว เลยยังไม่มีโอกาสได้ลองใช้จริง เสียดายมาก
ส่วนตัวตื่นเต้นกับพัฒนาการแบบนี้มาก
ตอน game jam ล่าสุด ฉันใช้ AI ช่วยเขียนเกมง่าย ๆ แต่เวลาส่วนใหญ่กว่าครึ่งหมดไปกับการรอผลลัพธ์
ถ้าจากเดิมต้องรอ 1–2 นาทีต่อ prompt แล้วลดเหลือแค่ 10 วินาที ก็จะทดลองได้ 5 ถึง 10 รอบในเวลาที่เมื่อก่อนทดสอบได้ครั้งเดียว
ตอนนี้ Mercury ยังไม่โตพอจะใช้งานจริงได้อย่างสะดวก แต่ Claude 3.0 เมื่อหนึ่งปีก่อนก็ยังไม่ดีนัก ดังนั้นต่อจากนี้ก็น่าจะดีขึ้นอีก
เป็นช่วงเวลาที่น่าตื่นเต้นมากสำหรับอนาคต
ลองใช้ Mercury playground แล้ว ความเร็วสุดยอดจริง ๆ
ภาพแสดงผลของ diffusion mode ก็สดใหม่ดี แต่ในทางปฏิบัติดูเหมือนมันกำลังแสดงกระบวนการค่อย ๆ ขัดเกลาจากเส้น noise ที่มองเห็นให้กลายเป็นสถานะที่แม่นยำขึ้น
ในความเป็นจริงน่าจะมองได้ว่าเป็นกระบวนการค่อย ๆ ลู่เข้าสู่ token ที่แน่ชัดยิ่งขึ้นใน vector space แบบสุ่ม
โมเดล text diffusion บางตัวใช้ latent space แบบต่อเนื่อง แต่ประสิทธิภาพไม่ค่อยดีนัก
ช่วงหลังมานี้ส่วนใหญ่มักเน้นการทำนายเอาต์พุต token จริง แล้วค่อยแก้ค่าก่อนหน้าเป็นขั้น ๆ จนลู่เข้าสู่ผลลัพธ์สุดท้าย
แนะนำให้อ่าน ลิงก์อธิบายการทำงานของ text diffusion ที่ฉันเขียน
ลิงก์ : https://chat.inceptionlabs.ai/
เร็วจนน่าตกใจจริง ๆ
โค้ดที่ทำงานใกล้ชิดกับ GPU ส่วนใหญ่ยังมีช่องให้ปรับจูนประสิทธิภาพได้อีกมาก
แต่ก็มีการตั้งข้อสงสัยว่า paper บน arXiv นี้ดูคล้ายงานการตลาดมากกว่างานวิจัยจริง
ยินดีรับฟังความเห็นอื่น
นโยบายราคาโมเดล Mercury
1 ดอลลาร์ต่อ output token 1 ล้านตัว และ 0.25 ดอลลาร์ต่อ input token 1 ล้านตัว
ดูรายละเอียดราคาเพิ่มเติมได้ที่ นี่
ถ้าเน้นเรื่องประสิทธิภาพ ตอนเปรียบเทียบ Mercury กับ Groq (Llama 3.1 8b, Llama 4 Scout) ประสิทธิภาพพอ ๆ กัน แต่ราคาของ Groq ดีกว่ามาก
กำลังจับตาดูด้วยความสนใจและหวังว่าจะได้เห็น diffusion model แบบโอเพนซอร์สออกมา
ในโค้ดของ playground และคำตอบจาก API มี
gpt-3.5-turboกับ"openai": trueโผล่มา เลยสงสัยว่าจริง ๆ แล้วมันเรียก OpenAI อยู่ ไม่ได้ใช้ dLLM ของตัวเองหรือเปล่าฟีเจอร์ diffusion effect มุมขวาบนก็ดูเหมือนเป็นแค่อนิเมชันประกอบ
ทุกอย่างฟังดูดีมาก แต่
ถ้าส่งโพสต์ของผู้ใช้เข้าไปในบริการ จะถือว่าผู้ใช้มอบไลเซนส์แบบไม่ผูกขาด ถาวร ปลอดค่าลิขสิทธิ์ ฟรี และโอนสิทธิ์ต่อได้ทั้งหมดให้ Inception ทั่วโลกตามเงื่อนไขการใช้งาน
นั่นหมายความว่าเนื้อหาของผู้ใช้สามารถถูกนำไปใช้ฝึกโมเดล AI ได้
(แต่มีข้อยกเว้นว่าหากเข้าผ่าน OpenRouter จะไม่ถูกนำไปใช้ฝึก)