메뉴
HN
Hacker News 30일 전

Ornith-1.0: 자가 개선형 에이전트 코딩 LLM 공개

IMP
9/10
핵심 요약

에이전트 코딩(Agentic Coding) 작업에 특화된 오픈소스 모델인 Ornith-1.0이 공개되었습니다. 이 모델은 스스로 문제 해결을 위한 구조(Scaffold)를 생성하고 최적화하는 '자가 개선형 학습 프레임워크'를 적용하여, 동급의 타 오픈소스 모델은 물론 Claude Opus 4.7을 넘어서는 최고 수준의 벤치마크 성능을 기록했습니다. 엣지 기기에 배포 가능한 9B 소형 모델부터 397B 대규모 MoE 모델까지 다양한 버전을 제공하는 것이 특징입니다.

번역된 본문

안녕하세요! 🌺 오늘 저희는 에이전트 코딩(agentic coding) 작업에 특별히 제작된 자가 개선(self-improving) 오픈소스 모델 패밀리, Ornith-1.0을 소개합니다. Ornith-1.0은 엣지 기기 배포에 적합한 소형 9B Dense 모델부터 최고의 성능을 위해 최적화된 397B MoE 최첨단 규모의 모델까지 전체 스펙트럼을 아우르며, 9B Dense, 31B Dense, 35B MoE 및 397B MoE 변형 모델을 제공합니다. 사전 학습된 Gemma 4와 Qwen 3.5를 기반으로 구축되었으며, 코딩 벤치마크에서 동급 규모의 오픈소스 모델들 중 최고 수준(State-of-the-Art)의 성능을 달성했습니다.

Ornith-1.0의 핵심 혁신은 자가 개선 학습 프레임워크에 있습니다. 강화학습(RL)에서 솔루션을 생성하기 위해 인간이 직접 설계한 하네스(harness)에 의존하는 대신, Ornith-1.0은 솔루션 롤아웃(rollouts)과 이를 안내하는 작업별 하네스를 모두 스스로 생성하도록 학습합니다. 스캐폴드(지원 구조)와 그 결과물인 솔루션을 공동으로 최적화함으로써, 모델은 더 나은 탐색 경로를 발견하고 더 높은 품질의 솔루션을 생성할 수 있습니다.

Ornith-1.0은 다양한 에이전트 코딩 벤치마크에서 동급 규모의 오픈소스 모델들 중 최고 수준의 성능을 달성했습니다: Ornith-1.0-397B(Terminal-Bench 2.1에서 77.5점, SWE-Bench Verified에서 82.4점)는 Claude Opus 4.7(TB-2.1에서 70.3점, SWE-Bench Verified에서 80.8점)의 성능과 필적하거나 이를 능가하며, MiniMax M3(TB-2.1에서 66.0점, SWE-Bench Verified에서 80.5점) 및 DeepSeek-V4-Pro(TB-2.1에서 67.9점, SWE-Bench Verified에서 80.6점)를 포함한 유사 규모의 선도적인 오픈소스 모델들을 모두 능가합니다.

최고급 규모인 Ornith-1.0-397B는 Terminal-Bench 2.1에서 77.5점, SWE-Bench Verified에서 82.4점을 기록하며 두 벤치마크 모두에서 Claude Opus 4.7을 뛰어넘고 Minimax M3 및 DeepSeek-V4-Pro와 같은 동급 최고 오픈소스 모델들의 성능을 상회했습니다. 35B 모델인 Ornith-1.0-35B는 Qwen 3.5-35B, Qwen 3.6-35B 및 Gemma 31B를 포함한 유사 규모의 모델들을 크게 능가합니다. 35B 매개변수에 불과함에도 불구하고 Terminal-Bench 2.1에서는 Qwen 3.5-397B(53.5점)보다 훨씬 높은 64.4점을 기록하며 여타 코딩 및 에이전트 벤치마크에서도 동등한 성능을 보여주었습니다.

엣지 기기에 배포 가능한 Ornith-1.0-9B 역시 매우 강력한 결과를 보여주며, Terminal-Bench 2.1에서 43.1점, SWE-Bench Verified에서 69.4점을 달성했습니다. 소형 9B 매개변수 모델임에도 불구하고 Gemma 4-31B와 같은 훨씬 더 큰 모델들의 성능과 동등하거나 이를 뛰어넘었습니다. 이는 자원 효율적인 배포 환경에서도 강력한 에이전트 코딩 기능을 구현할 수 있음을 입증합니다.

LLM 학습을 위한 자가 개선 전략 Ornith-1.0의 핵심은 작업을 해결하는 방법과 해당 솔루션을 안내하는 스캐폴드를 구축하는 방법을 동시에 학습하는 자가 개선 학습 프레임워크입니다. 작업 카테고리 전체에 공유되는 고정적이고 인간이 설계한 하네스에 의존하는 대신, Ornith-1.0은 스캐폴드를 정책과 함께 공동 진화하는 학습 가능한 객체로 취급합니다. 각 강화학습 단계는 두 단계로 진행됩니다: 작업과 이전에 사용된 스캐폴드를 조건으로 모델은 먼저 개선된 스캐폴드를 제안합니다. 그런 다음 해당 스캐폴드와 작업 설명을 조건으로 솔루션 롤아웃을 생성합니다. 롤아웃에서 얻은 보상은 두 단계 모두에 전파되므로, 모델은 더 나은 답변을 생성할 뿐만 아니라 그 답변을 이끌어내는 오케스트레이션을 직접 작성하도록 최적화됩니다. 학습이 반복됨에 따라 스캐폴드가 지속적으로 변형되고 더 높은 보상 궤적을 유도하는 방향으로 선택되는 피드백 루프가 생성됩니다. 이를 통해 작업 카테고리별 전략이 자동으로 생성되며, 인간이 직접 하네스를 설계하지 않아도 지속적인 기능 향상을 이끌어낼 수 있습니다.

자가 개선 과정의 보상 해킹(Reward Hacking) 문제 해결 모델이 자체 스캐폴드를 작성하도록 허용하면 자연스럽게 보상 해킹(reward-hacking) 문제가 발생합니다. 자가 생성된 스캐폴드는 실제 작업을 수행하지 않고도 검증기를 만족하는 방법을 학습할 수 있습니다. 예를 들어, 보이는 테스트 파일을 읽고 확인되는 파일을 생성하거나 관련 리터럴 결과물을 직접 하드코딩하는 식입니다.

원문 보기
원문 보기 (영어)
Aloha! 🌺 Today, we are introducing Ornith-1.0 , a self-improving family of open-source models specially for agentic coding tasks. Ornith-1.0 spans the full spectrum, from compact 9B Dense models suitable for edge device deployment to 397B MoE frontier-scale models optimized for maximum performance, with variants including 9B Dense, 31B Dense, 35B MoE, and 397B MoE . Built on top of pretrained Gemma 4 and Qwen 3.5, it achieves state-of-the-art performance among open-source models of comparable size on coding benchmarks. The key innovation behind Ornith-1.0 is a self-improving training framework. Instead of relying on human-designed harnesses to drive solution generation in RL, Ornith-1.0 learns to generate both solution rollouts and the task-specific harnesses that guide those rollouts. By jointly optimizing the scaffold and the resulting solution, the model can discover better search trajectories and generate higher-quality solutions. Ornith-1.0 achieves state-of-the-art performance among open-source models of comparable size across a broad range of agentic coding benchmarks: Ornith-1.0-397B ( 77.5 on Terminal-Bench 2.1 and 82.4 on SWE-Bench Verified) matches the performance of Claude Opus 4.7 ( 70.3 on TB-2.1 and 80.8 on SWE-Bench Verified) and outperforming leading open-source models of similar size, including MiniMax M3 ( 66.0 on TB-2.1 and 80.5 on SWE-Bench Verified) and DeepSeek-V4-Pro ( 67.9 on TB-2.1 and 80.6 on SWE-Bench Verified). Ornith-1.0-9B, which can be easily deployed on edge devices, matches or exceeds the performance of much larger models such as Gemma 4-31B and Qwen 3.6 35B. At the flagship scale, Ornith-1.0-397B achieves 77.5 on Terminal-Bench 2.1 and 82.4 on SWE-Bench Verified, surpassing Claude Opus 4.7 on both benchmarks and outperforming leading open-source models of similar size, including Minimax M3 and DeepSeek-V4-Pro. Ornith-1.0-35B significantly outperforms similarly sized models, including Qwen 3.5-35B, Qwen 3.6-35B, and Gemma 31B. Despite having only 35B parameters, it even surpasses Qwen 3.5-397B on Terminal-Bench 2.1 (64.4 vs. 53.5) while matching its performance across several other coding and agentic benchmarks. The edge-deployable Ornith-1.0-9B also delivers remarkably strong results, achieving 43.1 on Terminal-Bench 2.1 and 69.4 on SWE-Bench Verified. Despite being a compact 9B-parameter model, it matches or exceeds the performance of much larger models such as Gemma 4-31B, demonstrating that strong agentic coding capabilities can be achieved even in resource-efficient deployments. A Self-improving Strategy for LLM Training At the core of Ornith-1.0 is a self-improving training framework that jointly learns to solve tasks and to construct the scaffolds that guide those solutions. Rather than relying on a fixed, human-designed harness shared across a task category, Ornith-1.0 treats the scaffold as a learnable object that co-evolves with the policy. Each RL step proceeds in two stages: conditioned on a task and the scaffold previously used for it, the model first proposes a refined scaffold; conditioned on that scaffold and the task description, it then generates a solution rollout. Reward from the rollout is propagated to both stages, so the model is optimized not only to produce better answers but to author the orchestration that elicits them. Repeated over training, this yields a feedback loop in which scaffolds are continually mutated and selected toward those that induce higher-reward trajectories, allowing per-task-category strategies to emerge automatically and driving sustained capability gains without hand-engineered harness design. Addressing Reward Hacking in Self-improvement Allowing the model to author its own scaffold naturally introduces the reward-hacking issue. A self-generated scaffold can learn to satisfy the verifier without performing the task: reading the visible test files and hardcoding the expected artifacts, such as touching the checked-for file or writing the literal expected output, or copying an oracle solution present in the environment. We defend against this in three layers. First, we fix the outer trust boundary: the environment, the tool surface, and test isolation are immutable and outside the model's reach, so the model evolves only the inner policy scaffold: its memory, error-handling, and orchestration logic. Second, a deterministic monitor enforces that boundary at the level it can be specified exactly, flagging any attempt to read withheld paths, modify verification scripts, or invoke actions outside the sanctioned tool surface, and assigning such trajectories zero reward with exclusion from the advantage computation. Third, because intent-level gaming can occur entirely within the allowed tool surface, a frozen LLM judge acts as a veto on top of the verifier rather than the primary reward. Asynchronous RL Training For RL training, to address the off-line policy problem for long rollouts, Ornith-1.0 adopts the pipeline-RL strategy. To control the effect of earlier generated off-policy tokens, we apply a staleness weight \(w(d_t)\) that downweights tokens according to their age \(d_t\) and drops them entirely once a threshold is exceeded: \[ w(d_t)= \begin{cases} \!1, & \text{if } d_t \le K_1,\\ \!\exp\!\bigl(-\lambda(d_t-K_1)\bigr), & \text{if } K_1 < d_t \le K_2,\\ \!0, & \text{if } d_t > K_2. \end{cases} \] The token-level GRPO loss is weighted as follows: \[ L_t=\min\!\bigl(r_t A_t,\; \mathrm{clip}(r_t,1-\epsilon^{-},1+\epsilon^{+})A_t\bigr)\cdot w(d_t), \] where \[ r_t= \frac{\pi_{\theta}(y_t \mid x, y_{<t})} {\pi_{\theta_t^{\mathrm{beh}}}(y_t \mid x, y_{<t})} \] Full Table Benchmark Ornith-1.0-397B Qwen3.5-397B Qwen3.7-Max GLM-5.2-744B Minimax-M3-428B DeepSeek-V4-Pro-1.6T Claude Opus 4.7 Claude Opus 4.8 Terminal Bench 2.1 (Terminus-2) 77.5 53.5 73.5 81.0 64 64 70.3 85 Terminal Bench 2.1 (Claude Code) 78.2 48.6 69.8 82.7 - 66.5 69.7 78.9 SWE-Bench Verified 82.4 76.4 80.4 - - 80.6 80.8 87.6 SWE-Bench Pro 62.2 51.6 60.6 62.1 59 55.4 64.3 69.2 SWE-Bench Multilingual 78.9 69.3 78.3 - - 76.2 - - NL2Repo 48.2 36.8 47.2 48.9 42.1 - - 69.7 ClawEval Avg 77.1 70.7 65.2 - - 75.8 78.2 - SWE Atlas - QnA 41.2 20.4 - - 37.9 27.2 40.3 48.8 SWE Atlas - RF 42.6 18.4 - - - - 48.6 46.7 SWE Atlas - TW 39.1 18.5 - - 30.8 - 38.5 - Benchmark Ornith-1.0-35B Qwen3.5-35B Qwen3.6-35B Gemma4-31B Qwen3.5-397B Terminal Bench 2.1 (Terminus-2) 64.2 41.4 52.5 42.1 53.5 Terminal Bench 2.1 (Claude Code) 62.8 38.9 49.2 - 48.6 SWE-Bench Verified 75.6 70 73.4 52 76.4 SWE-Bench Pro 50.4 44.6 49.5 35.7 51.6 SWE-Bench Multilingual 69.3 60.3 67.2 51.7 69.3 NL2Repo 34.6 20.5 29.4 15.5 36.8 ClawEval Avg 69.8 65.4 68.7 48.5 70.7 SWE Atlas - QnA 37.1 13.2 15.5 - 20.4 SWE Atlas - RF 29.7 10.2 11.4 - 18.4 SWE Atlas - TW 27.8 9.8 13.3 - 18.5 Benchmark Ornith-1.0-9B Qwen3.5-9B Qwen3.5-35B Gemma4-12B Gemma4-31B Terminal Bench 2.1 (Terminus-2) 43.1 21.3 41.4 21 42.1 Terminal Bench 2.1 (Claude Code) 40.6 18.9 38.9 - - SWE-Bench Verified 69.4 53.2 70 44.2 52 SWE-Bench Pro 42.9 31.3 44.6 27.6 35.7 SWE-Bench Multilingual 52 39.7 60.3 32.5 51.7 NL2Repo 27.2 16.2 20.5 10.3 15.5 ClawEval Avg 63.1 53.2 65.4 32.5 48.5 SWE Atlas - QnA 17.9 9.2 13.2 - - SWE Atlas - RF 16.6 4.3 10.2 - - SWE Atlas - TW 15.3 4.4 9.8 - - Footnote Terminal-Bench 2.1 (Terminus-2): We evaluate Terminal-Bench 2.1 using the Harbor/Terminus-2 framework with parser=json, temperature=1.0, top_p=1.0, and a 128K context window. Each run uses a 4-hour timeout with 32 CPU cores and 48GB RAM, and results are averaged over 5 runs. We adjust the Qwen chat template to ensure consistency between training and inference ( https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B/blob/main/chat_template.jinja ), and modify Harbor to align with vLLM's reasoning_content key. Terminal-Bench 2.1 (Claude Code): We evaluate Terminal-Bench 2.1 using Claude Code 2.1.126 with parser=json, temperature=1.0, top_p=1.0, max_new_tokens=131072. Results are averaged over 5 runs. Again, Qwen
관련 소식