mirothinker-1.7-mini on Tenstorrent p300x2 and p150x4 and p300 and p150x2 and p150

Derived from miromind-ai/MiroThinker-1.7-mini by MiroMind (a fine-tune of Qwen3-30B-A3B-Thinking-2507). The checkpoint is used as published; expert weights are converted to lower precision when the server loads them (see Limitations). See the original model card for training and evaluation details.

MiroThinker-1.7-mini, a deep-research agent model: Qwen3-30B-A3B (30B-parameter mixture of experts, 3B active per token: 128 experts, top-8, 48 layers) trained for long-horizon search, browsing and tool use (up to 300 tool calls per task). Served with vLLM: a reasoning model that thinks before it answers, with tool calling and a 256,000-token context, for up to 32 concurrent users. Text only.

Runs on Tenstorrent p300x2 or p150x4 or p300 or p150x2 or p150 β€” 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, p300, p300x2
Context 256,000 tokens
License apache-2.0

Intended use

Search-and-browse research agents and multi-step tool use, plus chat and reasoning over text, 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: p300x2 or p150x4 or p300 or p150x2 or p150

Quickstart

tt serve raahemnabeel/mirothinker-1.7-mini

tt serve downloads the Docker image and the miromind-ai/MiroThinker-1.7-mini at e371d5a8956cad89c574bc1bbe79f3866b325755 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 raahemnabeel/mirothinker-1.7-mini.

Serving profiles

Select a different serving profile using --profile.

profile hardware mesh max_num_seqs max_model_len description
p300x2 p300x2 P300x2 32 256000 Two p300 boards (4 dies, experts 32 per die), 32 sequences, 256000 context.
p150x4 p150x4 P150x4 32 256000 Four p150 boards (4 dies), same configuration as p300x2.
p300 (default) p300 P300 32 256000 One p300 board (2 dies, experts 64 per die), 32 sequences, 256000 context.
p150x2 p150x2 P150x2 32 256000 Two p150 boards (2 dies), same configuration as p300.
p150 p150 P150 32 98304 One p150 (1 die, all 128 experts), 32 sequences sharing a 98304-token context (bf16 KV is 96 KiB per token on one die).

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": "miromind-ai/MiroThinker-1.7-mini" β€” the weights id, not this package's name.

Tool calling is enabled (--tool-call-parser hermes): 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 thinks before every answer (reasoning_content); give requests a large max_tokens (thousands): when the budget runs out inside the reasoning, content is empty.

A request without sampling parameters uses the checkpoint's defaults (temperature 0.6, top_p 0.95, top_k 20). Sampling runs on the device; top_k is limited to 32.

Tools: pass them as OpenAI tools; the chat template asks for <tool_call> JSON, parsed into tool_calls by the server. MiroMind's own agent framework (MiroFlow) instead puts its tools in the system prompt and parses <use_mcp_tool> blocks from content itself; both work against this server. The package serves the model only, bring your own search, browse and code tools.

Expected performance

Accuracy

Pending. MiroMind's own scores (BrowseComp, BrowseComp-ZH, GAIA, HLE) are on the original model card and GitHub; measurements of this package on those benchmarks will be added here.

Performance

Served as shipped (tt-model serve --profile <profile>), vLLM's random-token benchmark with ignore_eos, medians; one request per user at a time.

p300x2 (four dies)

Single user on real text (12 chat prompts x 384 output tokens, temperature 0): 95 tok/s.

users input / output tokens TTFT (ms) TPOT (ms) tok/s per user output tok/s, all users
1 128 / 128 164 10.2 98 88
1 1,024 / 256 410 10.5 95 80
1 4,096 / 256 837 11.1 90 67
1 32,768 / 256 3,585 13.1 76 37
8 128 / 128 543 14.8 68 427
8 1,024 / 256 1,355 15.6 64 391
32 1,024 / 256 5,802 29.3 34 660

p300 (two dies)

Single user on real text (12 chat prompts x 384 output tokens, temperature 0): 86 tok/s.

users input / output tokens TTFT (ms) TPOT (ms) tok/s per user output tok/s, all users
1 128 / 128 139 11.3 89 82
1 1,024 / 256 379 11.7 85 73
1 4,096 / 256 854 12.7 78 59
1 32,768 / 256 4,685 16.7 60 29
8 128 / 128 652 19.3 52 331
8 1,024 / 256 1,620 20.7 48 303
32 1,024 / 256 7,203 42.0 24 488

p150 (one die)

Single user on real text (12 chat prompts x 384 output tokens, temperature 0): 77 tok/s.

users input / output tokens TTFT (ms) TPOT (ms) tok/s per user output tok/s, all users
1 128 / 128 156 12.9 77 71
1 1,024 / 256 439 13.6 74 64
1 4,096 / 256 961 15.1 66 50
1 32,768 / 256 6,657 22.2 45 21
8 128 / 128 872 27.5 36 238
8 1,024 / 256 2,099 29.5 34 217
32 1,024 / 256 9,787 65.0 15 331

Prefix caching

On for every profile. The same real-text prompt sent twice on a freshly started server, time to first token in seconds: first send / resend with the prefix cached. The first send above 8,192 tokens also compiles that prefill length once (later prompts of that length do not pay it; see the 32,768-token rows above for an uncached prompt with compiled programs).

prompt tokens p300x2 first / cached p300 first / cached p150 first / cached
1,563 1.07 / 1.56 0.74 / 1.17 0.86 / 1.19
7,239 2.87 / 1.32 2.84 / 1.06 3.58 / 1.09
22,894 11.78 / 1.44 13.53 / 1.19 18.73 / 1.23

A cache hit costs about 1.1-1.5 s whatever the prompt length. Against compiled uncached prefill (3.6 / 4.7 / 6.7 s at 32,768 tokens on p300x2 / p300 / p150) it pays for long shared prefixes, such as an agent's growing conversation; for prompts of a few thousand tokens an uncached prefill is as fast or faster.

Limitations

  • Text only (the checkpoint has no vision tower).
  • Routed expert weights run at bfp4 on every profile (the fused decode reads that layout), so output can differ from the bf16 original where two candidate tokens are close.
  • Context: 256,000 tokens on two and four dies (the checkpoint advertises 262,144), 98,304 on one die.
  • The p150x4 and p150x2 profiles run the same meshes as p300x2 / p300 but were not run on those boards.
  • The device sampler supports top_k up to 32; a larger top_k is clamped to 32.
  • With prefix caching, a cached prompt can continue differently from the same prompt sent cold (greedy outputs matched on 4 of 9 prompt / profile pairs in the bring-up check): the cached path computes attention in chunks, so near-tied tokens can flip. Both continuations were coherent. --no-enable-prefix-caching makes repeats identical.
  • Not for unattended high-stakes decisions (medical, legal, financial, safety-critical) or as a source of facts without checking: the model can state wrong things confidently. Review generated code and tool calls, or run them in a sandbox, before they act on real systems. No safety evaluation was run on this package beyond the original model's.

Related packages

Feedback

Questions or problems with this package: open a discussion at https://huggingface.co/raahemnabeel/mirothinker-1.7-mini/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 a local checkout β€” commit not published (dirty tree β€” the image includes uncommitted changes)
vLLM v0.26.0
vllm-tt-plugin a local checkout β€” commit not published
code/ digest f24dc02b7a1694a1 (sha256, first 16 hex digits)
built 2026-11-03T20:37:40+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 raahemnabeel/mirothinker-1.7-mini

Finetuned
(3)
this model