Thinklite-27B / README.md
Mintzs's picture
Card: no quotation marks on the grey callout
2aa8161 verified
|
Raw History Blame Contribute Delete
18.9 kB
---
license: apache-2.0
base_model: Qwen/Qwen3.8-27B
pipeline_tag: image-text-to-text
library_name: transformers
tags:
- thinklite
- reasoning
- efficient-reasoning
- qwen3.8
---
<img src="thinklite-banner.png?v=2" alt="Thinklite-27B: Qwen 3.8 27B made efficient" style="width:100%;max-width:100%;height:auto;display:block;margin-bottom:1em;" />
> [!NOTE]
> **Qwen3.8-27B that thinks with half the tokens and keeps 99.6% of its accuracy.** At
> `reasoning_effort="xhigh"`, Thinklite-27B uses 47% less reasoning than Qwen3.8-27B on average over six benchmarks and
> writes half as many output tokens, so its time-to-final-output (TTFO) is about 2x shorter, while it keeps 99.6% of
> the base model's average accuracy (89.8 against 90.2). At `reasoning_effort="low"` it uses 28% less reasoning and
> keeps 97.5% of the base model's accuracy (2.2 points below).
> Check out the official [Thinklite-27B-GGUF](https://huggingface.co/Sparset/Thinklite-27B-GGUF), a 16.5 GB Q4_K_M
> for llama.cpp and Ollama that uses 48% less reasoning than Qwen3.8-27B quantized the same way at 99.3% of its
> accuracy.
<style>
.tl-table { display:table !important; width:100% !important; table-layout:fixed !important; border-collapse:separate; border-spacing:0; overflow:hidden; border:1px solid rgba(246,246,243,0.16); border-radius:0; background:#090909; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif; font-size:13px; color:rgba(246,246,243,0.80); }
.tl-table th { padding:10px 6px; text-align:center; font-weight:600; color:rgba(246,246,243,0.55); background:#101010; border-right:1px solid rgba(246,246,243,0.16); border-bottom:1px solid rgba(246,246,243,0.16); }
.tl-table td { padding:10px 6px; text-align:center; color:rgba(246,246,243,0.80); background:#090909; border-right:1px solid rgba(246,246,243,0.16); border-bottom:1px solid rgba(246,246,243,0.16); vertical-align:middle; font-variant-numeric:tabular-nums; }
.tl-table tr > :last-child { border-right:0; }
.tl-table tbody tr:last-child td { border-bottom:0; }
.tl-table .group { color:#F6F6F3; font-weight:700; border-bottom:2px solid #3E61EB; }
.tl-table .name { padding-left:16px; text-align:left; color:#F6F6F3; font-weight:600; }
.tl-table .tl { background:rgba(62,97,235,0.16); }
.tl-table th.tl { color:#8DA2F5; }
.tl-table td.tl strong, .tl-table td.tl { color:#F6F6F3; }
.tl-table strong { color:#F6F6F3; }
.tl-table .up { color:#8DA2F5; font-weight:700; }
.tl-table .section { padding:10px 16px; text-align:left; color:#8DA2F5; background:#101010; font-weight:700; letter-spacing:.06em; text-transform:uppercase; font-size:12px; }
.tl-table .avg td { border-top:2px solid #3E61EB; font-weight:700; }
@media (max-width: 640px) {
.tl-table { display:block !important; overflow-x:auto !important; table-layout:auto !important; }
.tl-table th, .tl-table td { min-width:92px; }
.tl-table th:first-child, .tl-table td:first-child { min-width:140px; }
}
.model-card-content blockquote.note, blockquote.note { border-width:0 !important; box-shadow:inset 4px 0 0 #3E61EB !important; background:rgba(62,97,235,0.14) !important; border-radius:0 !important; padding:12px 18px 12px 22px !important; }
blockquote.note p { margin:0 !important; font-style:normal !important; }
/* Plain blockquotes (no [!NOTE]) render as a grey card, used for the pointer to the GGUF release. */
.model-card-content blockquote:not(.note), blockquote:not(.note) { border-width:0 !important; box-shadow:inset 4px 0 0 rgba(246,246,243,0.35) !important; background:rgba(246,246,243,0.07) !important; border-radius:0 !important; padding:12px 18px 12px 22px !important; color:rgba(246,246,243,0.85) !important; }
blockquote:not(.note) p { margin:0 !important; font-style:normal !important; quotes:none !important; }
</style>
<table class="tl-table">
<thead>
<tr><th rowspan="2" style="text-align:left;padding-left:16px;vertical-align:bottom;">Model</th><th class="group" colspan="2">reasoning_effort = xhigh</th><th class="group" colspan="2">reasoning_effort = low</th></tr>
<tr><th>Reasoning vs base</th><th>TTFO speed-up</th><th>Reasoning vs base</th><th>TTFO speed-up</th></tr>
</thead>
<tbody>
<tr><td class="name tl">Thinklite-27B</td><td class="tl"><strong>&#8595; 47.0%</strong></td><td class="tl"><strong>2.0x</strong></td><td class="tl"><strong>&#8595; 28.0%</strong></td><td class="tl"><strong>1.3x</strong></td></tr>
<tr><td class="name">ThinkingCap-Qwen3.8-27B</td><td>&#8595; 45.8%</td><td>1.7x</td><td>&#8595; 16.4%</td><td>1.2x</td></tr>
<tr><td class="name">Swift-1.5-Qwen3.8-27b</td><td>&#8595; 35.6%</td><td>1.6x</td><td>&#8595; 12.7%</td><td>1.1x</td></tr>
</tbody>
</table>
- *Reasoning vs base*: the change in mean reasoning tokens per answer against Qwen3.8-27B at the same effort,
averaged over the six benchmarks below.
- *TTFO speed-up*: TTFO (time-to-final-output) is how long a user waits until the model's complete final
output is there, thinking included. The speed-up is Qwen3.8-27B's TTFO divided by the model's, over all 4,291
requests for one user. All four models share the Qwen3.8-27B architecture and decode at the same speed
(Thinklite-27B 26.3 vs base 26.2 tokens/s for a single user on the same GPU), and the prompts are identical, so
TTFO falls in proportion to the tokens a model writes.
## Side-by-side comparisons
### Debugging
<video src="https://huggingface.co/Sparset/Thinklite-27B/resolve/main/thinklite-side-by-side.mp4" controls autoplay muted loop playsinline style="width:100%;height:auto;display:block;"></video>
Qwen3.8-27B and Thinklite-27B get the same debugging prompt (retry code plus two logs: find the duplicate charges to
refund and the fix) with the same seed, each model on one NVIDIA RTX PRO 6000 serving 20 requests at once. Both answer correctly; Thinklite-27B is done
in 2:36.9 with 3,381 tokens, the base model in 11:04.9 with 14,313 tokens (4.2x). The video plays at 22x speed and the
clocks show the measured time. This is the largest speed-up of 20 paired runs of this prompt. Thinklite-27B was correct in 19 of the 20
runs and the base model in all 20; over the 19 correct runs the median speed-up was 2.7x.
### Building a 3D physics lab
<video src="https://huggingface.co/Sparset/Thinklite-27B/resolve/main/thinklite-physics-lab-side-by-side.mp4" controls autoplay muted loop playsinline style="width:100%;height:auto;display:block;"></video>
Both models get the same objective: build an interactive 3D science lab as a single HTML file in which everything has
to follow realistic physics. Objects have real sizes and masses and fall under real gravity (9.81 m/s²): a hinged door
swings with its momentum and stops at its frame, glassware tips over when bumped and shatters when it hits something
hard, a rubber ball bounces high while a heavy steel ball barely bounces, a block tower topples and a pendulum swings.
Both models run at `reasoning_effort="xhigh"` on the same NVIDIA RTX PRO 6000. The numbers are the total tokens and
generation time each model needed to reach a working version of the lab: Thinklite-27B 87,134 tokens in 56.7 min, the
base model 127,661 tokens in 87.6 min (1.5x). The video shows one working game per model; it is not a measure of how
often each model succeeds.
## How it works
Reasoning models spend much of their output on thinking that does not change the answer: restating the question,
repeating a step, re-checking a result that was already checked. Thinklite-27B is fine-tuned from Qwen3.8-27B on its
own verified-correct answers to reach the same answers by a shorter route. Only the thinking gets shorter; the visible
answer keeps its full length and format. It is a drop-in replacement for Qwen3.8-27B with the same chat template,
tokenizer and `reasoning_effort` control.
## Benchmarks
**Setup:**
- We ran all four models ourselves on one frozen suite: identical prompts, chat template, sampling, token caps and
scoring. Compared models, both also built on Qwen3.8-27B and run in bf16:
[bottlecapai/ThinkingCap-Qwen3.8-27B](https://huggingface.co/bottlecapai/ThinkingCap-Qwen3.8-27B) (revision `7891e03`)
and [ukisai/Swift-1.5-Qwen3.8-27b](https://huggingface.co/ukisai/Swift-1.5-Qwen3.8-27b) (revision `b4c84d42`).
- vLLM 0.30.0, bf16 weights, FP8 KV cache, temperature 1.0, top_p 0.95, top_k 20, 64 concurrent requests, one NVIDIA
RTX PRO 6000 Blackwell (96 GB). All answers were scored together on one machine.
- One sample per question (two on AIME 2025). Answers that hit their cap were rerun once with a 131,072-token cap;
truncated or unparseable answers count as incorrect.
- **GSM8K**: 1,319 problems
- **AIME 2025**: 30 problems x 2 samples, avg@2
- **MMLU-Pro**: 1,000-question stratified subset
- **IFEval**: 541 prompts, prompt-level strict
- **LiveCodeBench v6 (LCB)**: 131 problems (2025-02 to 2025-04), pass@1
- **BFCL v4**: 1,240 non-live function-calling cases
### `reasoning_effort="xhigh"`
<table class="tl-table">
<thead>
<tr><th style="width:26%;text-align:left;padding-left:16px;">Model</th><th>GSM8K</th><th>AIME 2025</th><th>MMLU-Pro</th><th>IFEval</th><th>LCB v6</th><th>BFCL v4</th><th>Average</th></tr>
</thead>
<tbody>
<tr><td class="section" colspan="8">Accuracy (%)</td></tr>
<tr><td class="name tl">Thinklite-27B</td><td class="tl">96.8</td><td class="tl">95.0</td><td class="tl">84.4</td><td class="tl">89.1</td><td class="tl"><strong>84.7</strong></td><td class="tl">88.9</td><td class="tl">89.82</td></tr>
<tr><td class="name">ThinkingCap-Qwen3.8-27B</td><td>97.0</td><td><strong>100.0</strong></td><td>86.5</td><td>90.9</td><td><strong>84.7</strong></td><td><strong>89.0</strong></td><td>91.37</td></tr>
<tr><td class="name">Swift-1.5-Qwen3.8-27b</td><td>96.9</td><td><strong>100.0</strong></td><td><strong>86.6</strong></td><td>90.9</td><td><strong>84.7</strong></td><td>87.6</td><td>91.12</td></tr>
<tr><td class="name">Qwen3.8-27B</td><td><strong>97.2</strong></td><td>93.3</td><td>86.3</td><td><strong>91.5</strong></td><td>84.0</td><td>88.7</td><td>90.17</td></tr>
<tr><td class="section" colspan="8">Reasoning tokens vs Qwen3.8-27B</td></tr>
<tr><td class="name tl">Thinklite-27B</td><td class="tl">&#8595; 63%</td><td class="tl"><strong>&#8595; 43%</strong></td><td class="tl"><strong>&#8595; 69%</strong></td><td class="tl">&#8595; 41%</td><td class="tl"><strong>&#8595; 38%</strong></td><td class="tl">&#8595; 28%</td><td class="tl">&#8595; 47.0%</td></tr>
<tr><td class="name">ThinkingCap-Qwen3.8-27B</td><td><strong>&#8595; 68%</strong></td><td>&#8595; 33%</td><td>&#8595; 58%</td><td><strong>&#8595; 51%</strong></td><td>&#8595; 20%</td><td><strong>&#8595; 44%</strong></td><td>&#8595; 45.8%</td></tr>
<tr><td class="name">Swift-1.5-Qwen3.8-27b</td><td>&#8595; 40%</td><td>&#8595; 34%</td><td>&#8595; 44%</td><td>&#8595; 44%</td><td>&#8595; 32%</td><td>&#8595; 20%</td><td>&#8595; 35.6%</td></tr>
</tbody>
</table>
<details>
<summary>Mean reasoning tokens per answer</summary>
| Benchmark | Thinklite-27B | ThinkingCap-Qwen3.8-27B | Swift-1.5-Qwen3.8-27b | Qwen3.8-27B |
|---|---|---|---|---|
| GSM8K | 163 (-63%) | 141 (-68%) | 267 (-40%) | 443 |
| AIME 2025 | 11,236 (-43%) | 13,228 (-33%) | 12,961 (-34%) | 19,642 |
| MMLU-Pro | 1,343 (-69%) | 1,785 (-58%) | 2,404 (-44%) | 4,295 |
| IFEval | 1,082 (-41%) | 891 (-51%) | 1,031 (-44%) | 1,830 |
| LiveCodeBench v6 | 17,079 (-38%) | 21,936 (-20%) | 18,770 (-32%) | 27,589 |
| BFCL v4 | 143 (-28%) | 113 (-44%) | 159 (-20%) | 200 |
| **Average change** | **-47.0%** | **-45.8%** | **-35.6%** | - |
| **All output tokens, 4,291 requests** | **5,822,599 (-50%)** | **6,724,080 (-42%)** | **7,319,314 (-37%)** | **11,533,518** |
</details>
### `reasoning_effort="low"`
<table class="tl-table">
<thead>
<tr><th style="width:26%;text-align:left;padding-left:16px;">Model</th><th>GSM8K</th><th>AIME 2025</th><th>MMLU-Pro</th><th>IFEval</th><th>LCB v6</th><th>BFCL v4</th><th>Average</th></tr>
</thead>
<tbody>
<tr><td class="section" colspan="8">Accuracy (%)</td></tr>
<tr><td class="name tl">Thinklite-27B</td><td class="tl">96.7</td><td class="tl">81.7</td><td class="tl">83.3</td><td class="tl">84.3</td><td class="tl">71.0</td><td class="tl">91.2</td><td class="tl">84.70</td></tr>
<tr><td class="name">ThinkingCap-Qwen3.8-27B</td><td>97.2</td><td>86.7</td><td><strong>84.8</strong></td><td>85.8</td><td>72.5</td><td><strong>91.5</strong></td><td>86.40</td></tr>
<tr><td class="name">Swift-1.5-Qwen3.8-27b</td><td>97.1</td><td><strong>90.0</strong></td><td>84.7</td><td>86.0</td><td><strong>73.3</strong></td><td>91.2</td><td>87.04</td></tr>
<tr><td class="name">Qwen3.8-27B</td><td><strong>97.4</strong></td><td><strong>90.0</strong></td><td>84.4</td><td><strong>86.1</strong></td><td>72.5</td><td>90.8</td><td>86.88</td></tr>
<tr><td class="section" colspan="8">Reasoning tokens vs Qwen3.8-27B</td></tr>
<tr><td class="name tl">Thinklite-27B</td><td class="tl"><strong>&#8595; 21%</strong></td><td class="tl"><strong>&#8595; 46%</strong></td><td class="tl"><strong>&#8595; 23%</strong></td><td class="tl"><strong>&#8595; 41%</strong></td><td class="tl"><strong>&#8595; 17%</strong></td><td class="tl"><strong>&#8595; 19%</strong></td><td class="tl">&#8595; 28.0%</td></tr>
<tr><td class="name">ThinkingCap-Qwen3.8-27B</td><td>&#8595; 12%</td><td>&#8595; 23%</td><td>&#8595; 18%</td><td>&#8595; 19%</td><td>&#8595; 15%</td><td>&#8595; 12%</td><td>&#8595; 16.4%</td></tr>
<tr><td class="name">Swift-1.5-Qwen3.8-27b</td><td>&#8595; 5%</td><td>&#8595; 22%</td><td>&#8595; 13%</td><td>&#8595; 15%</td><td>&#8595; 13%</td><td>&#8595; 7%</td><td>&#8595; 12.7%</td></tr>
</tbody>
</table>
<details>
<summary>Mean reasoning tokens per answer</summary>
| Benchmark | Thinklite-27B | ThinkingCap-Qwen3.8-27B | Swift-1.5-Qwen3.8-27b | Qwen3.8-27B |
|---|---|---|---|---|
| GSM8K | 144 (-21%) | 160 (-12%) | 173 (-5%) | 183 |
| AIME 2025 | 6,521 (-46%) | 9,324 (-23%) | 9,416 (-22%) | 12,125 |
| MMLU-Pro | 854 (-23%) | 908 (-18%) | 963 (-13%) | 1,103 |
| IFEval | 386 (-41%) | 537 (-19%) | 557 (-15%) | 659 |
| LiveCodeBench v6 | 8,882 (-17%) | 9,183 (-15%) | 9,341 (-13%) | 10,741 |
| BFCL v4 | 78 (-19%) | 85 (-12%) | 90 (-7%) | 96 |
| **Average change** | **-28.0%** | **-16.4%** | **-12.7%** | - |
| **All output tokens, 4,291 requests** | **3,748,880 (-23%)** | **4,121,634 (-16%)** | **4,303,835 (-12%)** | **4,896,249** |
</details>
## Image understanding
Thinklite-27B accepts images like Qwen3.8-27B. Its training data was text only and its vision encoder is
byte-for-byte the base model's, so we checked that the fine-tuned language model still reads what it sees: 88 questions
from six public image datasets, each answerable only from the picture (a chart, a scanned document, an infographic, a
math figure, an exam diagram or a photo). Both models got the same image and question at `reasoning_effort="low"`,
with the same seeds and sampling as the benchmarks above.
<table class="tl-table">
<thead>
<tr><th style="width:26%;text-align:left;padding-left:16px;">Model</th><th>ChartQA</th><th>DocVQA</th><th>InfoVQA</th><th>MathVista</th><th>MMMU</th><th>A-OKVQA</th><th>Average</th></tr>
</thead>
<tbody>
<tr><td class="section" colspan="8">Score (%)</td></tr>
<tr><td class="name tl">Thinklite-27B</td><td class="tl">100.0</td><td class="tl">100.0</td><td class="tl"><strong>91.1</strong></td><td class="tl">87.5</td><td class="tl">100.0</td><td class="tl">87.5</td><td class="tl"><strong>94.35</strong></td></tr>
<tr><td class="name">Qwen3.8-27B</td><td>100.0</td><td>100.0</td><td>88.1</td><td>87.5</td><td>100.0</td><td>87.5</td><td>93.85</td></tr>
<tr><td class="section" colspan="8">Reasoning tokens vs Qwen3.8-27B</td></tr>
<tr><td class="name tl">Thinklite-27B</td><td class="tl">&#8595; 15%</td><td class="tl">&#8595; 15%</td><td class="tl">&#8595; 32%</td><td class="tl">&#8595; 36%</td><td class="tl">&#8595; 30%</td><td class="tl">&#8595; 15%</td><td class="tl">&#8595; 24.0%</td></tr>
</tbody>
</table>
- 16 questions per dataset (12 for InfographicVQA and MMMU), a seeded random sample of each validation or testmini
split. Scores: ChartQA relaxed accuracy (numbers within 5%), DocVQA and InfographicVQA ANLS, multiple-choice or exact
accuracy for MathVista, MMMU and A-OKVQA. No answer was cut off or unparseable.
- Both models answered the same 83 of 88 questions correctly; the only score difference is partial ANLS credit on one
InfographicVQA answer.
- 18 of the questions (3 per dataset) also ran at `reasoning_effort="xhigh"`: Thinklite-27B answered 17 correctly
and Qwen3.8-27B 16, with 52% less reasoning per answer (758 vs 1,565 tokens).
- This is a check, not a full benchmark: one question moves a dataset's score by 6 to 8 points. It shows that image
understanding is kept, not that it improved.
## Usage
**vLLM**
```bash
vllm serve Sparset/Thinklite-27B --reasoning-parser qwen3 --max-model-len 135168 --kv-cache-dtype fp8
```
```python
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="-")
reply = client.chat.completions.create(
model="Sparset/Thinklite-27B",
messages=[{"role": "user", "content": "How many primes are there below 100?"}],
temperature=1.0, top_p=0.95,
extra_body={"top_k": 20, "chat_template_kwargs": {"enable_thinking": True, "reasoning_effort": "xhigh"}},
)
print(reply.choices[0].message.content)
```
Set `reasoning_effort` to `"low"`, `"medium"` or `"xhigh"`, exactly as with Qwen3.8-27B. The benchmarks used
temperature 1.0, top_p 0.95 and top_k 20, as recommended for the base model.
**Transformers**
```python
from transformers import AutoModelForImageTextToText, AutoProcessor
model = AutoModelForImageTextToText.from_pretrained("Sparset/Thinklite-27B", dtype="auto", device_map="auto")
processor = AutoProcessor.from_pretrained("Sparset/Thinklite-27B")
```
## Files
Merged bf16 safetensors with the tokenizer, chat template and processor files of Qwen3.8-27B.
## Limitations
- One benchmark run per effort; the small benchmarks (AIME 2025 with 60 answers, LiveCodeBench with 131) carry wide
confidence intervals.
- At xhigh, accuracy is below the base model on IFEval (89.1 vs 91.5) and MMLU-Pro (84.4 vs 86.3).
- At low effort, the average accuracy is 2.2 points below the base model, mostly from AIME 2025 (81.7 vs 90.0).
- Long single-answer code was less reliable than the base model's: in the game test above, 1 of 5 games fully worked
against 3 of 5.
- The vision encoder is unchanged from Qwen3.8-27B and training data was text only; image understanding was checked
on 88 questions, not a full vision benchmark.
- No safety tuning beyond the base model's. Check the model on your own tasks before relying on it.
## License
Apache-2.0, the license of the base model [Qwen/Qwen3.8-27B](https://huggingface.co/Qwen/Qwen3.8-27B).