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 onp150only. 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 16onp150. - On
p150andp150x2alogprobsrequest is rejected with HTTP 400; onlyp150x4returns logprobs. min_p,bad_words,logit_bias,allowed_token_ids,min_tokens, structured outputs andtop_logprobsabove 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 |
Model tree for tt-hous/ornith-1.5-9b
Base model
ornith-ai/Ornith-1.5-9B