Model reference · open weights
Ornith-1.0 is an open-weight language model from ornith-ai. Ornith-1.0-35B (BF16) weighs 70.2 GB; the smallest configuration that runs it is A100 80 GB.
Summary of the ornith-ai/Ornith-1.0-35B model card, 2026-10-01
What it is
| Released by | ornith-ai |
|---|---|
| Released | 2026-06-21 |
| Parameters | 1M |
| VRAM | 70.2 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory | |
|---|---|---|---|---|
| 8K each | 32K each | |||
| RTX 3060 12 GB … L40S 48 GB 6 smaller cards | — | — | — | |
| A100 80 GB | 18 | 6 | 255K | 78.2 GB |
| H100 80 GB | — | — | — | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 49 | 18 | all 256K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 95 | 35 | all 256K | 107 GB |
| H200 141 GB | 198 | 73 | all 256K | 138 GB |
| B200 180 GB | 320 | 118 | all 256K | 176 GB |
| 2× L40S 48 GB tensor parallel | 42 | 15 | all 256K | 44.0 GB a card |
| 4× RTX 4090 24 GB tensor parallel | 28 | 9 | all 256K | 23.4 GB a card |
| 4× RTX 3090 24 GB tensor parallel | 29 | 9 | all 256K | 23.4 GB a card |
| 4× RTX 5090 32 GB tensor parallel | 94 | 29 | all 256K | 31.0 GB a card |
| 2× H100 80 GB tensor parallel | 229 | 85 | all 256K | 78.1 GB a card |
| 2× A100 80 GB tensor parallel | 273 | 101 | all 256K | 78.2 GB a card |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 73.0 GB | 73.5 GB |
| 5 | 74.2 GB | 76.7 GB |
| 8 | 75.1 GB | 79.1 GB |
| 16 | 77.4 GB | 85.5 GB |
| 32 | 82.2 GB | 98.3 GB |
| 64 | 91.7 GB | 124 GB |
One card, with vLLM's small-card settings.
Builds
| Build | Params | Precision | Weights | Smallest setup |
|---|---|---|---|---|
| Ornith-1.0-35B (above) ↗ | 1M | BF16 | 70.2 GB | A100 80 GB |
| Ornith-1.0-35B-FP8 ↗ | 35.1B | FP8 | 37.7 GB | L40S 48 GB |
| Ornith-1.0-397B-FP8 ↗ | 396.8B | FP8 | 405 GB | 4× H200 141 GB |
| Ornith-1.0-397B ↗ | 396.8B | BF16 | 794 GB | 8× H200 141 GB |
From the model card
Aloha! 🌺 Today, we are releasing Ornith-1.0, a self-improving family of open-source models for agentic coding.
Highlights:
This model card documents Ornith-1.0-35B, the lightweight member of the Ornith family, designed for efficient single-GPU deployment.
The two recipes below stand up an OpenAI-compatible server on a single 8×80GB GPU node (tensor-parallel 8). Adjust --tensor-parallel-size / --tp to the number of GPUs you have.
vllm serve deepreinforce-ai/Ornith-1.0-35B \
--served-model-name Ornith-1.0-35B \
--tensor-parallel-size 8 \
--host 0.0.0.0 --port 8000 \
--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
python -m sglang.launch_server \
--model-path deepreinforce-ai/Ornith-1.0-35B \
--served-model-name Ornith-1.0-35B \
--tp 8 \
--host 0.0.0.0 --port 8000 \
--context-length 262144 \
--mem-fraction-static 0.85 \
--tool-call-parser qwen3_coder \
--reasoning-parser qwen3
For a quick local test (or to script offline generation), load the model directly with Transformers. Make sure you have a recent release installed — see the Transformers installation guide; Ornith-1.0-35B requires transformers >= 5.8.1.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "deepreinforce-ai/Ornith-1.0-35B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
dtype="auto",
device_map="auto",
)
messages = [
{"role": "user", "content": "Write a Python function is_prime(n). Keep it short."}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
generated = model.generate(
**inputs,
max_new_tokens=512,
do_sample=True,
temperature=0.6,
top_p=0.95,
top_k=20,
)
output_ids = generated[0][inputs.input_ids.shape[1]:]
# The reply contains a ... reasoning block followed by the answer.
content = tokenizer.decode(output_ids, skip_special_tokens=True)
print(content)
To split the reasoning trace from the final answer, parse on the `` marker:
text = tokenizer.decode(output_ids, skip_special_tokens=True)
if "" in text:
reasoning, answer = text.split("", 1)
reasoning = reasoning.replace("", "").strip()
answer = answer.strip()
else:
reasoning, answer = "", text.strip()
Once a vLLM or SGLang server is running, talk to it with any OpenAI-compatible client.
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.0-35B",
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 trace; content holds the final answer.
print("reasoning:", getattr(message, "reasoning_content", None))
print("answer:", message.content)
You can also stream tokens, or hand the model tools — Ornith-1.0-35B emits well-formed function calls that the server parses into the standard tool_calls field:
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {"citQuoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.