ornith-1.5-9b on Tenstorrent p150 and p150x2 and p150x4

Serves ornith-ai/Ornith-1.5-9B by Ornith AI at revision 489cb979. See the original model card for training and evaluation details.

Ornith-1.5-9B, a 9B-parameter dense reasoning and coding model, served with vLLM with tool calling and separated reasoning output.

Runs on Tenstorrent p150 or p150x2 or p150x4 β€” see the serving profiles below.

Packaged and published with tt-model-manager 0.1.0 (manifest schema 5.1).

At a glance

Hardware p150, p150x2, p150x4
Context 262,144 tokens
License mit

Intended use

Agentic coding, reasoning and tool calling through an OpenAI-compatible API.

Prerequisites

  • The Tenstorrent CLI, tt: uv tool install tenstorrent (or use tt-model alone, see the Quickstart)
  • Docker
  • Tenstorrent hardware: p150 or p150x2 or p150x4

Quickstart

tt serve tt-hous/ornith-1.5-9b

tt serve downloads the Docker image and the ornith-ai/Ornith-1.5-9B at 489cb97981b8654bcfcf30ce1f94ed1b62e07b53 weights (into your HF cache; they are not in the image), then starts an OpenAI-compatible server on port 20000 (or the next free port, if that one is busy). The first start compiles kernels for your device, which takes several minutes; the server is ready when it logs Application startup complete.

Without tt-cli: tt-model serve tt-hous/ornith-1.5-9b.

Serving profiles

Select a different serving profile using --profile.

profile hardware mesh max_num_seqs max_model_len description
p150 p150 P150 32 262144 One Blackhole ASIC. Full 262144-token context; lowest hardware bar.
p150x2 p150x2 P150x2 32 262144 Two Blackhole ASICs (one p300c board). Full 262144-token context.
p150x4 (default) p150x4 P150x4 32 262144 Four Blackhole ASICs (two p300c boards).

Capabilities

The server speaks the OpenAI API at http://127.0.0.1:20000/v1 (or whichever port your serve command reported; chat completions, completions, and /v1/models). Pass "model": "ornith-ai/Ornith-1.5-9B" β€” the weights id, not this package's name.

Tool calling is enabled (--tool-call-parser qwen3_xml): a request that passes tools comes back with tool_calls and finish_reason: tool_calls.

Reasoning output is separated (--reasoning_parser qwen3): the thinking text arrives in reasoning, apart from content.

The model card's sampling recipe for general tasks is temperature 1.0, top_p 0.95, top_k 20, presence penalty 1.5 (the recipe the GPQA Diamond run below used); for precise coding tasks it is temperature 0.6, top_p 0.95, top_k 20.

Expected performance

eval this package reference prompts notes
GPQA Diamond 78.3 86.4 198 mean of 2 runs here (seeds 42 / 43: 75.3 / 81.3); the reference is a mean of 5 runs

GPQA Diamond ran on the p150 profile with the model card's recipe: temperature 1.0, top_p 0.95, top_k 20, presence penalty 1.5, and a 32,768-token output budget. The reference is the Ornith AI model card's figure.

profile ISL OSL concurrency N TTFT (ms) prefill tok/s/u decode tok/s/u total output tok/s E2EL (s)
p150 128 128 1 1 97 1,313 6.0 6 21.35
p150 128 128 8 1 882 145 5.9 46 22.27
p150 128 128 32 1 3,785 34 5.9 162 25.29
p150 1,024 256 1 1 196 5,224 6.0 6 43.03
p150 1,024 256 8 1 1,629 629 5.9 46 44.64
p150 1,024 256 32 1 6,864 149 5.9 163 50.29
p150 4,096 256 1 1 558 7,343 5.9 6 43.84
p150 4,096 256 8 1 4,508 909 5.9 43 47.98
p150 4,096 256 32 1 18,376 223 5.7 130 62.99
p150 16,384 256 1 1 2,442 6,709 5.7 5 47.55
p150 16,384 256 8 1 19,552 838 5.6 32 64.89
p150 16,384 256 32 1 82,547 198 4.9 41 134.61
p150 32,768 256 1 1 5,687 5,762 5.4 5 53.22
p150 32,768 256 8 1 45,506 720 5.3 22 93.32
p150 32,768 256 32 1 185,051 177 5.3 22 232.73
p150 65,536 256 1 1 14,704 4,457 4.9 4 67.08
p150 65,536 256 8 1 114,339 573 4.9 9 166.76
p150 131,072 256 1 1 42,781 3,064 4.1 2 104.86
p150x2 128 128 1 1 68 1,886 9.7 10 13.23
p150x2 128 128 8 1 576 222 9.6 74 13.79
p150x2 128 128 32 1 2,223 58 9.5 264 15.53
p150x2 1,024 256 1 1 145 7,068 9.6 10 26.65
p150x2 1,024 256 8 1 1,150 890 9.6 74 27.72
p150x2 1,024 256 32 1 4,623 222 9.5 260 31.47
p150x2 4,096 256 1 1 429 9,539 9.5 9 27.16
p150x2 4,096 256 8 1 3,426 1,196 9.5 68 30.24
p150x2 4,096 256 32 1 13,745 298 9.3 199 41.21
p150x2 16,384 256 1 1 1,838 8,913 9.2 9 29.48
p150x2 16,384 256 8 1 14,698 1,115 9.2 48 42.42
p150x2 16,384 256 32 1 58,683 279 7.8 60 91.27
p150x2 32,768 256 1 1 4,205 7,792 8.8 8 33.06
p150x2 32,768 256 8 1 33,599 975 8.8 33 62.54
p150x2 32,768 256 32 1 127,117 258 8.8 33 156.00
p150x2 65,536 256 1 1 10,548 6,213 8.2 6 41.81
p150x2 65,536 256 8 1 78,830 831 8.2 14 110.05
p150x2 131,072 256 1 1 29,784 4,401 7.1 4 65.88
p150x2 131,072 256 8 1 202,876 646 7.1 5 238.91
p150x4 128 128 1 1 66 1,948 15.4 15 8.32
p150x4 128 128 8 1 769 166 17.2 126 8.14
p150x4 128 128 32 1 2,295 56 15.3 386 10.62
p150x4 1,024 256 1 1 97 10,597 15.3 15 16.71
p150x4 1,024 256 8 1 742 1,380 17.2 132 15.54
p150x4 1,024 256 32 1 2,952 347 15.2 415 19.73
p150x4 4,096 256 1 1 258 15,907 15.2 15 16.98
p150x4 4,096 256 8 1 2,059 1,989 17.1 121 16.97
p150x4 4,096 256 32 1 8,173 501 14.9 324 25.24
p150x4 16,384 256 1 1 1,052 15,573 14.8 14 18.23
p150x4 16,384 256 8 1 8,420 1,946 16.6 86 23.76
p150x4 16,384 256 32 1 34,141 480 12.6 101 54.46
p150x4 32,768 256 1 1 2,342 13,993 14.4 13 20.10
p150x4 32,768 256 8 1 18,546 1,767 16.0 59 34.49
p150x4 32,768 256 32 1 70,032 468 16.1 60 85.92
p150x4 65,536 256 1 1 5,585 11,735 13.4 10 24.55
p150x4 65,536 256 8 1 42,898 1,528 13.5 25 61.83
p150x4 65,536 256 32 1 166,320 394 13.5 25 185.21
p150x4 131,072 256 1 1 14,983 8,748 11.9 7 36.35
p150x4 131,072 256 8 1 106,942 1,226 12.0 10 128.25

Means over one run per row on each profile's mesh, with a closed-loop latency client: random-token prompts of exactly ISL tokens, output pinned to OSL tokens with ignore_eos, greedy, streamed; three warm-up requests per input length; each run sends 4 requests per user up to 4,096 input tokens, 2 per user at 16,384 and 1 per user above. TTFT is time to the first streamed token; decode tok/s/u is 1 / TPOT with TPOT = (E2EL - TTFT) / (OSL - 1); prefill tok/s/u is ISL / TTFT, so above concurrency 1 it includes queueing time. The rows are selected from a sweep at 1 to 32 concurrent users; rows predicted to exceed 300 s end to end were skipped. Peak aggregate output across the sweep: 163 tok/s on p150 (1,024 in, 256 out, 32 users), 264 on p150x2 (128 in, 128 out, 32 users) and 415 on p150x4 (1,024 in, 256 out, 32 users).

Limitations

  • Measured on one Blackhole chip (p150), two (p150x2) and four (p150x4). GPQA Diamond is the only accuracy eval and ran on p150 only. No agentic-coding benchmark (SWE-bench, Terminal-Bench) was run.
  • Not for high-throughput serving on p150: decode is about 6 tokens per second per user at every concurrency.
  • With 32 concurrent requests whose generations together exceed the 262,144-token pool, the engine exits (no free device state slot). Keep concurrent long generations below the pool, for example --max-num-seqs 16 on p150.
  • On p150 and p150x2 a logprobs request is rejected with HTTP 400; only p150x4 returns logprobs.
  • min_p, bad_words, logit_bias, allowed_token_ids, min_tokens, structured outputs and top_logprobs above 0 are rejected with HTTP 400 on every profile.

Feedback

Questions or problems with this package: open a discussion at https://huggingface.co/tt-hous/ornith-1.5-9b/discussions β€” that is what reaches its author. A problem with the tt tooling itself: tt report issue (collects your environment and opens a prefilled issue against tenstorrent/tt-cli). Product feedback: support@tenstorrent.com.

Provenance

The exact sources the image was built from β€” code/ in this repo is byte-identical to the model code inside the image:

component built from
tt-metal c0976f241fa369f0a12a561141f0ffc91f7ac087
vLLM v0.26.0
vllm-tt-plugin 9bab7d527d4adbece91de7338302c99e652fd642
code/ digest 13978ba8a38bed56 (sha256, first 16 hex digits)
built 2026-10-23T19:47:44+00:00 by tt-model 0.1.0
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for tt-hous/ornith-1.5-9b

Finetuned
(43)
this model