Ornith-1.0 - โมเดลโอเพนซอร์สแบบปรับปรุงตัวเองสำหรับการเขียนโค้ดเชิงเอเจนต์
(github.com/deepreinforce-ai)- Ornith-1.0 เป็นโมเดลโอเพนซอร์สแบบปรับปรุงตัวเองสำหรับการเขียนโค้ดเชิงเอเจนต์ โดยมีตัวเลือก 9B Dense, 31B Dense, 35B MoE และ 397B MoE และผ่านการ post-train บน Gemma 4 และ Qwen 3.5
- เฟรมเวิร์กการฝึกใช้ reinforcement learning เพื่อให้โมเดลเรียนรู้ไม่เพียงการสร้าง solution rollout แต่ยังรวมถึงการสร้าง scaffold ที่นำทาง rollout ด้วย ทำให้สามารถปรับเหมาะทั้ง scaffold และโซลูชันผลลัพธ์ไปพร้อมกัน
- ตาม README, Ornith-1.0 ทำผลงานระดับ state-of-the-art เมื่อเทียบกับโมเดลโอเพนซอร์สขนาดใกล้เคียงกันบนโค้ดดิ้งเบนช์มาร์กอย่าง Terminal-Bench 2.1, SWE-Bench, NL2Repo และ OpenClaw
- ทุก checkpoint เปิดใช้ อินเทอร์เฟซที่เข้ากันได้กับ OpenAI และรองรับ context window 256K โทเค็น พร้อมใช้งานผ่าน vLLM, SGLang, Hugging Face Transformers, llama.cpp, Ollama และอื่น ๆ
- ใช้ไลเซนส์ MIT และเข้าถึงได้ทั่วโลกโดยไม่มีข้อจำกัดตามภูมิภาค อีกทั้งยังสามารถแยก reasoning block และการเรียกใช้เครื่องมือผ่าน
reasoning_contentและtool_callsเพื่อนำไปเชื่อมกับ agent framework และ coding CLI ได้
ภาพรวมโมเดลและวิธีการฝึก
- Ornith-1.0 เป็นตระกูลโมเดลโอเพนซอร์สแบบปรับปรุงตัวเองสำหรับการเขียนโค้ดเชิงเอเจนต์
- ขนาดโมเดลที่มีให้คือ 9B Dense, 31B Dense, 35B MoE และ 397B MoE โดยผ่านการ post-train บน Gemma 4 และ Qwen 3.5
- เฟรมเวิร์กการฝึกแบบปรับปรุงตัวเอง ใช้ reinforcement learning
- โมเดลถูกฝึกให้สร้างไม่เพียง solution rollout แต่ยังรวมถึง scaffold ที่นำทาง rollout ด้วย
- มีการปรับเหมาะทั้ง scaffold และโซลูชันผลลัพธ์ร่วมกัน เพื่อค้นหาเส้นทางการค้นหาที่ดีกว่าและโซลูชันที่มีคุณภาพสูงกว่า
- ไลเซนส์คือ MIT ใช้งานได้ทั่วโลกและไม่มีข้อจำกัดตามภูมิภาค
ผลลัพธ์เบนช์มาร์ก
- แต่ละโมเดลถูกเปรียบเทียบกับโมเดลอ้างอิงที่เหมาะกับขนาดของตน และทั้งสามโมเดลใช้ harness และ decoding setting เดียวกัน
-
Ornith-1.0-9B
- บน Terminal-Bench 2.1 ทำได้ 43.1 ตามเกณฑ์ Terminus-2 และ 40.6 ตามเกณฑ์ Claude Code
- ทำได้ SWE-bench Verified 69.4, SWE-bench Pro 42.9, SWE-bench Multilingual 52
- ทำได้ NL2Repo 27.2, Claw-eval Avg 63.1
- สำหรับ SWE Atlas ทำได้ QnA 17.9, RF 16.6, TW 15.3
-
Ornith-1.0-35B
- บน Terminal-Bench 2.1 ทำได้ 64.2 ตามเกณฑ์ Terminus-2 และ 62.8 ตามเกณฑ์ Claude Code
- ทำได้ SWE-bench Verified 75.6, SWE-bench Pro 50.4, SWE-bench Multilingual 69.3
- ทำได้ NL2Repo 34.6, Claw-eval Avg 69.8
- สำหรับ SWE Atlas ทำได้ QnA 37.1, RF 29.7, TW 27.8
-
Ornith-1.0-397B
- บน Terminal-Bench 2.1 ทำได้ 77.5 ตามเกณฑ์ Terminus-2 และ 78.2 ตามเกณฑ์ Claude Code
- ทำได้ SWE-bench Verified 82.4, SWE-bench Pro 62.2, SWE-bench Multilingual 78.9
- ทำได้ NL2Repo 48.2, Claw-eval Avg 77.1
- สำหรับ SWE Atlas ทำได้ QnA 41.2, RF 42.6, TW 39.1
การตั้งค่าการประเมิน
- การประเมิน Terminal-Bench 2.1 Terminus-2 ใช้เฟรมเวิร์ก Harbor/Terminus-2,
parser=json,temperature=1.0,top_p=1.0และ context window 128K- แต่ละรันมี timeout 4 ชั่วโมง ใช้ 32 CPU cores, RAM 48GB และคิดค่าเฉลี่ยจาก 5 รอบ
- Qwen chat template ถูกปรับเพื่อความสอดคล้องระหว่างการฝึกและการอนุมาน และ Harbor ถูกแก้ไขให้สอดคล้องกับคีย์
reasoning_contentของ vLLM
- การประเมิน Terminal-Bench 2.1 Claude Code ใช้ Claude Code 2.1.126,
parser=json,temperature=1.0,top_p=1.0,max_new_tokens=131072และคิดค่าเฉลี่ยจาก 5 รอบ - SWE-bench Verified / Pro / Multilingual ใช้ OpenHands harness,
temperature=1.0,top_p=0.95และ context window 256K - SWE Atlas QnA / RF / TW ใช้ mini-SWE-agent harness,
temperature=1.0,top_p=0.95และ context window 128K พร้อมคิดค่าเฉลี่ยจาก 5 รอบ - NL2Repo ใช้
temperature=1.0,top_p=1.0, context 400K, output 48K และ anti-hacking filters - ClawEval เป็น agentic code benchmark ที่อิงการกระจายตัวของงานผู้ใช้จริง โดยใช้
temperature=0.6และ context 256K
การรันและ checkpoint
- Ornith-1.0 เป็น reasoning model และโดยปกติ assistant turn จะเริ่มด้วยบล็อก
<think> … </think>ก่อนส่งคำตอบสุดท้าย - สูตรการเสิร์ฟโมเดลเปิดใช้ reasoning parser เพื่อคืนค่า chain-of-thought ในฟิลด์
reasoning_contentแยกต่างหาก และเปิดใช้ tool-call parser เพื่อแสดงบล็อก<tool_call>เป็นtool_callsแบบสไตล์ OpenAI - เวอร์ชันรันไทม์ที่ต้องการมีดังนี้
- Transformers ≥ 5.8.1
- vLLM ≥ 0.19.1
- SGLang ≥ 0.5.9
- พารามิเตอร์การสุ่มตัวอย่างที่แนะนำคือ
temperature=0.6,top_p=0.95,top_k=20- หากต้องการทำซ้ำการตั้งค่าเบนช์มาร์กที่รายงานไว้ ให้ใช้
temperature=1.0
- หากต้องการทำซ้ำการตั้งค่าเบนช์มาร์กที่รายงานไว้ ให้ใช้
- ทุก checkpoint เปิดใช้อินเทอร์เฟซที่เข้ากันได้กับ OpenAI แบบเดียวกัน และรองรับ context window 256K หรือ 262,144 โทเค็น
- Dense 9B เหมาะกับ GPU 80GB เดี่ยว
- checkpoint แบบ MoE ถูก shard ข้ามหลาย GPU node ด้วย tensor parallelism
- checkpoint ที่มีให้
- Ornith-1.0-9B: Dense ราว 9B, bf16, สำหรับการเสิร์ฟบน GPU เดี่ยวและการ fine-tune
- Ornith-1.0-9B-GGUF: Dense ราว 9B, quantized แบบ GGUF, สำหรับ local inference บน llama.cpp / Ollama
- Ornith-1.0-35B: MoE 35B, bf16, สำหรับการเสิร์ฟแบบ full-precision บนหลาย GPU
- Ornith-1.0-35B-FP8: MoE 35B, FP8, สำหรับการเสิร์ฟบน GPU ที่รองรับ FP8 เพื่อลดการใช้ VRAM ลงประมาณครึ่งหนึ่ง
- Ornith-1.0-35B-GGUF: MoE 35B, quantized แบบ GGUF, สำหรับ local inference บน llama.cpp / Ollama
- Ornith-1.0-397B: MoE 397B, bf16, สำหรับการเสิร์ฟแบบ full-precision บนหลาย GPU node
- Ornith-1.0-397B-FP8: MoE 397B, FP8, สำหรับการเสิร์ฟที่ประหยัดหน่วยความจำบน GPU ที่รองรับ FP8
OpenAI-compatible API และการใช้งานแบบเอเจนต์
- เมื่อรันเซิร์ฟเวอร์ vLLM หรือ SGLang แล้ว สามารถเรียก endpoint
/v1/chat/completionsผ่านไคลเอนต์ที่เข้ากันได้กับ OpenAI ได้ - ตัวอย่าง local server ใช้
base_url="http://localhost:8000/v1",api_key="EMPTY",model="Ornith-1.0" - ในข้อความตอบกลับ reasoning_content จะเก็บ trace การให้เหตุผลจาก
<think>และcontentจะเก็บคำตอบสุดท้าย - หากส่งเครื่องมือไปด้วย Ornith-1.0 จะสร้าง function call ที่มีรูปแบบถูกต้อง และเซิร์ฟเวอร์จะแปลงเป็นฟิลด์มาตรฐาน tool_calls
- OpenAI-compatible SDK สามารถใช้ endpoint เดียวกันได้ทั้งใน Python, Node.js,
curlและอื่น ๆ
เฟรมเวิร์กที่รองรับและ coding CLI
- Ornith-1.0 ถูกปรับให้เหมาะกับการเรียกใช้เครื่องมือและความสามารถการเขียนโค้ดเชิงเอเจนต์
- เนื่องจากให้ทั้ง OpenAI-compatible endpoint และการเรียกใช้เครื่องมือ จึงสามารถใช้ร่วมกับ agent framework มาตรฐานได้
- ใน README มีตัวอย่างการเชื่อมเครื่องมือผ่าน MCP server และตัวอย่างการเรียกใช้ฟังก์ชัน
run_shell - harness และ runtime แบบเอเจนต์ที่ยกตัวอย่างมีดังนี้
- Hermes Agent: ตั้งค่า
OPENAI_BASE_URL,OPENAI_API_KEY,MODEL="Ornith-1.0" - OpenHands: ใช้พาธ
openai/Ornith-1.0ของ LiteLLM และ local base URL - llama.cpp / Ollama: โหลดบิลด์ GGUF ของ 9B และ 35B เพื่อทำ local inference
- Unsloth Studio: ใช้
FastLanguageModel.from_pretrainedสำหรับ local inference หรือ fine-tune - OpenClaw: กำหนด OpenAI-compatible endpoint ให้ชี้ไปยังเซิร์ฟเวอร์ Ornith
- Hermes Agent: ตั้งค่า
- coding CLI สามารถเชื่อมต่อได้โดยตั้ง
OPENAI_BASE_URLและOPENAI_API_KEYให้ชี้ไปยัง endpoint ของ Ornith-1.0 - ตัวอย่าง OpenCode ลงทะเบียน local provider ของ Ornith ใน
~/.config/opencode/opencode.jsonและใช้โมเดลOrnith-1.0
1 ความคิดเห็น
ความเห็นจาก Hacker News
การพูดคุยก่อนหน้า: https://news.ycombinator.com/item?id=48709744
https://swelljoe.com/post/will-it-mythos/: “ประสิทธิภาพค่อนข้างไม่ดี เจอบั๊กได้แค่ตัวเดียวที่แทบทุกรุ่นหาเจอ แม้ว่าประสิทธิภาพบนเบนช์มาร์กอื่นเมื่อเทียบกับขนาดจะโดดเด่นก็ตาม […] แม้แต่ในแชตที่ไม่มีเครื่องมือก็ยังทำได้แย่ และมีอาการ หลอนข้อมูล ค่อนข้างหนัก ตอนนี้กำลังพยายามทำซ้ำโดยให้สิทธิ์เข้าถึงเครื่องมือครบรวมถึง bash/Python ซึ่งถ้าเป็นแบบนั้นโมเดลนี้ก็อาจแข่งขันได้”
นี่เป็น Qwen fine-tune ตัวแรกที่ไม่ได้โดนชุมชน LLM แบบรันท้องถิ่นปัดตกทันที และในบางกรณียังถูกแนะนำด้วย จากที่ลองแบบจำกัดก็ดูใช้ได้ และเสนอวิธีแก้ปัญหาการเขียนโค้ดที่สร้างสรรค์ดี ฉันไม่ได้คาดหวังให้โมเดล 9~35B สร้างแอปทั้งตัวให้ได้ด้วยการคลิกครั้งเดียว ดูเหมือนว่าคนที่บ่นส่วนใหญ่จะคาดหวังแบบนั้น
โมเดลส่วนใหญ่ เช่น Qwen, Gemma, Llama, gpt-oss ตอนนี้น่าปวดหัวมากกับการต้องไปค้นหากับดักจุกจิกอย่าง special token, โครงสร้างพรอมป์ต์, หรือสิ่งที่โมเดลชอบ แต่ถ้าฝ่าฟันจนได้พรอมป์ต์และพารามิเตอร์ที่เหมาะแล้ว คุณก็จะได้โมเดลที่ทำงานได้ดีมากใน สภาพแวดล้อมการรันแบบเอเจนต์
ทำไมโมเดลแนว “self-improving” พวกนี้สุดท้ายถึงไม่พัฒนาตัวเองจนเหนือกว่าโมเดลล้ำหน้าที่สุดไปเลยล่ะ?
จากที่ทดสอบเอง Ornith-1.0 35B ดีกว่า Qwen-3.6 35B อยู่เล็กน้อย
การทดสอบของฉันเป็นงานเพิ่มหรือแก้ฟีเจอร์ในโค้ดเบส C++ ขนาดใหญ่ สิ่งที่น่าสนใจคือโมเดลนี้เร็วกว่า Qwen3.6 35B มาก ดูเหมือน Ornith จะสร้างกระบวนการคิดที่สั้นกว่า
ในการทดสอบของฉัน มันสร้างคำตอบได้เร็วกว่าเดิมสูงสุด 3 เท่า ใช้งานผ่าน llamacpp และ codex-cli
ฉันทดสอบ Ornith-1.0 35B ด้วย FP8 block quantization ที่ทำเองแล้วชอบมาก บน RTX PRO 6000(sm120) ผ่าน vLLM ได้เกิน 200 โทเค็นต่อวินาที และช่วงไม่กี่วันที่ผ่านมาได้รันโทเค็นแคชไปมากกว่า 140 ล้านโทเค็นในงานเขียนโค้ดแบบเอเจนต์
โดยรวมดูอยู่แถว ๆ ระหว่าง Qwen 3.6 35B-A3B กับ 27B แต่ข้อดีคือมันคิดมากเกินไปหรือติดลูปเดิมซ้ำน้อยกว่า Qwen 3.6 มาก พอดู trace ของกระบวนการคิดแล้วก็ชอบเทมเพลตแนวแยกปัญหาเป็นส่วน ๆ
มันทำงานวิเคราะห์พื้นฐาน จัดการงาน และแก้ทั้งฝั่งฟรอนต์เอนด์/แบ็กเอนด์บางส่วนได้ดีในโค้ดเบส Go ขนาดกลาง แต่พอเป็นงานเขียนเคอร์เนลแบบตรงไปตรงมาที่ยาวขึ้นก็ชนเพดานชัดเจน ฉันลองวนประมาณ 100 รอบในสภาพแวดล้อมรัน Pi Agent แล้วมันพัง ซึ่งเป็นงานประเภทที่โมเดลเปิดที่แกร่งกว่านี้อย่าง Kimi K2.6 หรือ GLM 5.2 ทำได้
มีใครอธิบายได้ไหมว่าเกิดอะไรขึ้นตรงนี้? แค่เอา Qwen มาเปลี่ยนเปลือกหรือเปล่า? deepreinforce-ai คือใคร แล้วทำไมโมเดลนี้ถึงไม่มีอยู่บนเว็บไซต์ของพวกเขา?
ฉันสงสัยว่ามัน self-improving ยังไง โมเดลบนดิสก์เปลี่ยนไปจริงไหม หรือแค่เก่งขึ้นระหว่างการรันในคอนเท็กซ์เดียว?
เท่าที่ฉันเข้าใจคือเขาเอา Qwen กับ Gemma 4 มาฝึกด้วย reinforcement learning ของตัวเอง ไม่รู้ว่าเขารวม weight ของทั้งสองยังไง หรือจริง ๆ ใช้ Qwen เป็นฐานแล้วใช้ Gemma 4 ช่วยในกระบวนการฝึกหรือเปล่าก็ไม่แน่ใจ คำว่า “self-improving” ตรงนี้น่าจะหมายถึง กระบวนการฝึก มากกว่าวิธีที่โมเดลใช้ weight
พวกนี้ดูเหมือนเป็นแค่ Qwen หรือ Gemma 4 เวอร์ชันที่ ปรับแต่งเพื่อเบนช์มาร์ก
“dense 9B ใส่ลงใน GPU 80GB เดี่ยวได้”
คนธรรมดาแบบพวกเราใช้ไม่ได้หรอก
ฉันใช้โมเดลท้องถิ่นมาเยอะแล้วและรู้สึกว่าทุกตัวเหมือนของเล่น แต่ตัวนี้ให้ความรู้สึกว่าใช้งานจริงได้ Qwen 36-A3B ก็ได้ยินมาว่าดี แต่ยังไม่ได้ลอง
ระบบ self-improving น่าสนใจ แต่ทำให้การติดตามที่มาและการกำกับดูแลยากขึ้นมาก ถ้าเอเจนต์สามารถเปลี่ยนพฤติกรรมของตัวเองได้เมื่อเวลาผ่านไป การเข้าใจว่าทำไมมันถึงทำแบบใดแบบหนึ่งก็จะยิ่งสำคัญขึ้นเรื่อย ๆ