HuggingFace镜像/Ornith-1.5-35B-A3B
模型介绍
文件和版本
分析

Ornith 博客

Ornith-1.5-35B-A3B

啾啾!🐦 我们隆重推出 Ornith-1.5,这是在通过端到端自我提升来构建基础模型道路上迈出的重要一步。

Ornith-1.5 在 Ornith-1.0(基于 Qwen3.5 和 Gemma4 开发,并额外进行了持续预训练、中期训练和后训练)的基础上,将自我提升循环从脚手架与展开优化,扩展到对任务生成、脚手架构建和解决方案展开的联合优化。Ornith-1.5 不再依赖固定的人工策划任务集和手工设计的框架,而是持续生成新的训练任务,发现解决这些任务的有效策略,并通过强化学习改进策略。有关任务、框架和展开奖励设计的更多细节,请参阅我们的博客。

Ornith 1.5 35B 基准测试结果

Ornith 1.5 35B-A3B

本模型卡片介绍的是 Ornith-1.5-35B-A3B,Ornith-1.5 系列中的中型混合专家模型。它每个 token 仅激活约 3B 参数,却在所有代码和智能体基准测试中显著超越了同规模的 Qwen 3.6-35B,并在智能体编码任务上以较大优势胜过 Gemma 4-31B 和 Muse Glimmer-30B 等密集模型。

基准测试

Ornith-1.5-35B-A3BOrnith-1.0-35B-A3BQwen3.6-35B-A3BGemma-4-31B Muse-Glimmer-30B Qwen3.5-397B
代码
Terminal-Bench 2.1 (Terminus-2)67.864.252.542.151.753.5
Terminal-Bench 2.1 (Claude Code)68.562.849.2--48.6
SWE-bench Verified7975.673.4527676.4
SWE-bench Pro59.650.449.535.751.251.6
SWE-bench Multilingual71.469.367.251.7-69.3
DeepSWE2200--1
Frontier-Bench v0.15.11.41.4--1.4
NL2Repo46.234.629.415.5-36.8
SWE Atlas - QnA39.837.115.5--20.4
推理
HLE (无工具)25.620.821.419.52228.7
HLE (带工具)33.430.128.926.5-48.3
GPQA Diamond89.286.28684.383.588.4
智能体
MCP-Atlas70.264.462.85575.572.3
Toolathlon-Verified48.742.441.740.8-38.3
WideSearch67.863.460.154.2-74
BrowseComp67.663.562--78.6
ClawEval72.569.868.748.5-70.7

* Ornith-1.5 的所有结果均为五次独立运行的平均值。
* Terminal-Bench 2.1 (Terminus-2):我们使用 Harbor/Terminus-2 框架评估 Terminal-Bench 2.1,参数设置为 parser=json、temperature=1.0、top_p=1.0 以及 128K 上下文窗口。每次运行使用 4 小时超时,配备 32 个 CPU 核心和 48GB 内存,结果取 5 次运行的平均值。我们调整了 Qwen 聊天模板以确保训练与推理之间的一致性 (https://huggingface.co/ornith-ai/Ornith-1.5-35B-A3B/blob/main/chat_template.jinja),并修改了 Harbor 以与 vLLM 的 reasoning_content 键对齐。
* Terminal-Bench 2.1 (Claude Code):我们使用 Claude Code 2.1.126 评估 Terminal-Bench 2.1,参数设置为 parser=json、temperature=1.0、top_p=1.0、max_new_tokens=131072。结果取 5 次运行的平均值。同样需要修改 Qwen 聊天模板。
* SWE-Bench Verified、Pro 和 Multilingual:使用 OpenHands 框架,temp=1.0、top_p=0.95、256k 上下文窗口。整个评估过程中应用了防作弊保障措施:从本地仓库镜像中移除 Git 历史记录,防止模型访问先前的解决方案或提交记录;禁用网络访问,防止模型获取外部信息或资源。
* DeepSWE:使用 Claude Code 框架评估,temperature=1.0、top_p=0.95、256K 上下文窗口。
* SWE Atlas QnA:使用 mini SWE agent 框架,temp=1.0、top_p=0.95、128K 上下文窗口。结果取 5 次运行的平均值。
* NL2Repo:temperature=1.0、top_p=1.0、400K 上下文、48K 输出。阻止访问指定的 GitHub 仓库和 pip 包以防止奖励作弊。
* HLE:使用 Claude 4.6 Opus 作为评判模型进行评估。
* MCP-Atlas:所有模型均在思考模式下对 500 个任务的公开子集进行评估,每个任务超时 10 分钟。我们使用 Claude 4.8 Opus 作为评判模型。
* Toolathlon-Verified:我们使用官方评估服务,最大 token 限制设置为 128K。
* ClawEval:基于真实用户任务分布的智能体代码基准测试;temp=0.6,256K 上下文。

快速开始

📝 说明

Ornith-1.5-35B-A3B 是一个推理模型:默认情况下,助手回复会以<think> … </think>块开头,随后才是最终答案。以下部署方案启用了推理解析器,可将思维链内容单独返回到reasoning_content字段中;同时启用了工具调用解析器,可将模型的<tool_call>块以OpenAI风格的tool_calls形式呈现。

部署Ornith-1.5-35B-A3B需要较新的运行时环境:

  • 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

部署Ornith-1.5-35B-A3B

Ornith-1.5-35B-A3B 是一个约35B参数的混合专家模型,每个token仅激活约3B参数(bf16精度下约70 GB)。以下方案可在2× 80GB GPU上搭建一个兼容OpenAI的服务器,为256K上下文留出足够余量;请根据你的硬件调整 --tensor-parallel-size / --tp 参数。

vLLM

vllm serve ornith-ai/Ornith-1.5-35B-A3B \
    --served-model-name Ornith-1.5-35B-A3B \
    --host 0.0.0.0 --port 8000 \
    --tensor-parallel-size 2 \
    --max-model-len 262144 \
    --gpu-memory-utilization 0.90 \
    --enable-prefix-caching \
    --enable-auto-tool-choice --tool-call-parser qwen3_xml \
    --reasoning-parser qwen3 \
    --trust-remote-code

SGLang

python -m sglang.launch_server \
    --model-path ornith-ai/Ornith-1.5-35B-A3B \
    --served-model-name Ornith-1.5-35B-A3B \
    --host 0.0.0.0 --port 8000 \
    --tp 2 \
    --context-length 262144 \
    --mem-fraction-static 0.85 \
    --tool-call-parser qwen3_coder \
    --reasoning-parser qwen3

长上下文支持

Ornith-1.5-35B-A3B 可处理高达 262,144 个 token 的上下文窗口。当某项任务的输入与输出合计超出此限制时,我们建议通过 RoPE 缩放来扩展有效窗口——YaRN 是我们验证过的方案,且已内置于 vLLM 和 SGLang 中。将缩放因子设为 4.0 后,可用窗口可扩展至约 100 万 token。

您可以通过以下两种方式启用 YaRN:

  • 修改检查点的 config.json。 在模型配置中添加 rope_scaling 配置块:

    {
        "rope_scaling": {
            "rope_type": "yarn",
            "factor": 4.0,
            "original_max_position_embeddings": 262144
        }
    }
  • 启动时覆盖配置。 保持检查点不变,在启动命令中附加等效参数。

    vLLM:

    VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 vllm serve ornith-ai/Ornith-1.5-35B-A3B ... --hf-overrides '{"rope_scaling": {"rope_type": "yarn", "factor": 4.0, "original_max_position_embeddings": 262144}}' --max-model-len 1000000

    SGLang:

    SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 python -m sglang.launch_server ... --json-model-override-args '{"rope_scaling": {"rope_type": "yarn", "factor": 4.0, "original_max_position_embeddings": 262144}}' --context-length 1000000
📝 注意事项

开源运行时以静态方式实现 YaRN:无论请求长短,都会施加相同的缩放因子,这可能对普通长度输入的质量产生轻微影响。仅在您的任务确实需要更长窗口时才启用 rope_scaling,并将 factor 设置为匹配的规模——目标窗口约为 factor × 262,144,因此如果您的请求上限约为 524,288 个 token,则 factor: 2.0 是更合适的选择。

通过 Chat Completions API 使用 Ornith-1.5-35B-A3B

当 vLLM 或 SGLang 服务器运行后,即可使用任何兼容 OpenAI 的客户端与之通信。

基本用法

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="EMPTY",  # any non-empty string works for a local server
)

response = client.chat.completions.create(
    model="Ornith-1.5-35B-A3B",
    messages=[
        {"role": "user", "content": "Write a one-line Python lambda that squares a number."}
    ],
    temperature=0.6,
    top_p=0.95,
    max_tokens=1024,
)

message = response.choices[0].message
# reasoning_content holds the <think> trace; content holds the final answer.
print("reasoning:", getattr(message, "reasoning_content", None))
print("answer:", message.content)

您也可以流式传输令牌,或将工具交给模型——Ornith-1.5-35B-A3B 能够生成格式规范的函数调用,服务器会将其解析为标准 tool_calls 字段:

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a city",
            "parameters": {
                "type": "object",
                "properties": {"city": {"type": "string"}},
                "required": ["city"],
            },
        },
    }
]

response = client.chat.completions.create(
    model="Ornith-1.5-35B-A3B",
    messages=[{"role": "user", "content": "What is the weather in Paris right now?"}],
    tools=tools,
    tool_choice="auto",
    temperature=0.6,
    max_tokens=2048,
)

tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.function.name, tool_call.function.arguments)
# -> get_weather {"city": "Paris"}

您可以将任何兼容OpenAI的SDK(如Python、Node.js等)或curl指向同一个/v1/chat/completions端点。

智能体使用场景

Ornith-1.5-35B-A3B在工具调用和智能体编码方面表现出色。它提供了兼容OpenAI的端点,支持工具调用,并能与标准智能体框架开箱即用。

将Ornith与智能体结合使用的示例:

Ollama

ollama run hf.co/ornith-ai/Ornith-1.5-35B-A3B-GGUF

Atomic.chat

# Atomic.chat loads a GGUF build of Ornith (ornith-ai/Ornith-1.5-35B-A3B-GGUF)
# through llama.cpp's OpenAI-compatible API on port 8000.
llama-server -hf ornith-ai/Ornith-1.5-35B-A3B-GGUF --port 8000 -c 262144

llama.cpp

# llama.cpp — serve an OpenAI-compatible API on port 8000.
llama-server -hf ornith-ai/Ornith-1.5-35B-A3B-GGUF --port 8000 -c 262144

Hermes Agent

# Hermes talks to any OpenAI-compatible endpoint — point it at your Ornith server.
export OPENAI_BASE_URL="http://localhost:8000/v1"
export OPENAI_API_KEY="EMPTY"
export MODEL="ornith-ai/Ornith-1.5-35B-A3B"

OpenClaw

# OpenClaw talks to any OpenAI-compatible endpoint — point it at your Ornith server.
export OPENAI_BASE_URL="http://localhost:8000/v1"
export OPENAI_API_KEY="EMPTY"
export OPENAI_MODEL="ornith-ai/Ornith-1.5-35B-A3B"

Unsloth Studio

pip install unsloth

# Load Ornith for fast local inference or fine-tuning (Python):
#   from unsloth import FastLanguageModel
#   model, tokenizer = FastLanguageModel.from_pretrained(
#       "ornith-ai/Ornith-1.5-35B-A3B",
#       max_seq_length=262144,
#       load_in_4bit=True,
#   )

编码命令行工具

Ornith-1.5-35B-A3B 专为基于终端的编码代理优化。将任何兼容 OpenAI 的编码 CLI 指向你的 Ornith-1.5-35B-A3B 端点(设置 OPENAI_BASE_URL 和 OPENAI_API_KEY),即可理解大型代码库、自动化繁琐工作,并加速交付。

OpenCode

# Register your local Ornith endpoint as a provider in ~/.config/opencode/opencode.json:
#
# {
#   "$schema": "https://opencode.ai/config.json",
#   "provider": {
#     "ornith": {
#       "npm": "@ai-sdk/openai-compatible",
#       "name": "Ornith (local)",
#       "options": { "baseURL": "http://localhost:8000/v1", "apiKey": "EMPTY" },
#       "models": { "ornith-ai/Ornith-1.5-35B-A3B": { "name": "Ornith-1.5-35B-A3B" } }
#     }
#   }
# }

opencode

引用

如果您觉得我们的工作对您有帮助,欢迎引用我们。

@misc{ornith_1_5,
    title = {{Ornith-1.5}: From Self-Scaffolding to Self-Improvement},
    url = {https://ornith.ai/ornith_1_5.html},
    author = {{Ornith Team}},
    year = {2026}
}