Video-Text-to-Text
Transformers
Safetensors
qwen3_vl
image-text-to-text
video-understanding
reinforcement-learning
adaptive-reasoning
qwen3-vl
Instructions to use MaplesWCT/EVAThink-Stage1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use MaplesWCT/EVAThink-Stage1 with Transformers:
# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("MaplesWCT/EVAThink-Stage1") model = AutoModelForMultimodalLM.from_pretrained("MaplesWCT/EVAThink-Stage1", device_map="auto") - Notebooks
- Google Colab
- Kaggle
File size: 5,945 Bytes
934eb63 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | ---
license: apache-2.0
base_model: Qwen/Qwen3-VL-8B-Instruct
pipeline_tag: video-text-to-text
library_name: transformers
tags:
- video-understanding
- reinforcement-learning
- adaptive-reasoning
- qwen3-vl
---
# EVAThink-Stage1
<!-- TODO(author): one-line expansion of the name, paper title / arXiv link, code repo link -->
**EVAThink-Stage1** is the intermediate checkpoint after the first of the two reinforcement learning stages behind
[EVAThink-Qwen3](https://huggingface.co/MaplesWCT/EVAThink-Qwen3). It is fine-tuned from
[Qwen3-VL-8B-Instruct](https://huggingface.co/Qwen/Qwen3-VL-8B-Instruct) and already chooses per question whether to answer
directly or to write an evidence-grounded reasoning trace first, but it still reasons on most questions.
**For general use, prefer [EVAThink-Qwen3](https://huggingface.co/MaplesWCT/EVAThink-Qwen3).** It reaches about the same
accuracy with roughly a third fewer output tokens. This checkpoint is released for studying the training stages.
## Highlights
- **Accuracy is already close to the final model.** Averaged over six benchmarks it scores 65.4, against 65.6 for
EVAThink-Qwen3 and 64.3 for the base model.
- **It thinks much more often than it needs to.** It reasons on 77% of Video-MME questions and 83% of LongVideoBench
questions (EVAThink-Qwen3: 34% and 46%). Stage 2 mainly teaches the model to skip reasoning when it isn't needed.
- **It still adapts to the task.** On purely perceptual spatial questions (VSI-Bench) it almost never reasons (0.2%), and on
MVBench it reasons on about a third of questions.
## Results
Same protocol as EVAThink-Qwen3, all models evaluated by us:
- 64 frames sampled uniformly (first and last frame included)
- each frame resized to a fixed 200,704 pixels (factor 28)
- greedy decoding with presence penalty 1.5, up to 4,096 new tokens
- vLLM
EVAThink models get the bare question and options with no instruction. Qwen3-VL-8B-Instruct gets each benchmark's official prompt.
| Benchmark (split, #Q) | Qwen3-VL-8B-Instruct | **EVAThink-Stage1** | EVAThink-Qwen3 | Stage1 think-rate | Stage1 mean tokens |
|---|---|---|---|---|---|
| Video-MME w/o subs (2,700) | 64.9 | 65.4 | 66.3 | 76.7% | 203 |
| MVBench (4,000) | 65.8 | 65.2 | 66.5 | 31.9% | 90 |
| MMVU, multiple-choice (625) | 70.4 | 73.4 | 72.8 | 96.0% | 413 |
| Video-MMMU (900) | 65.6 | 66.7 | 67.4 | 98.3% | 1,038 |
| LongVideoBench val (1,337) | 60.7 | 61.3 | 60.7 | 83.2% | 237 |
| VSI-Bench (5,130) | 58.3 | 60.3 | 59.9 | 0.2% | 6 |
Notes:
- These numbers come from our own fixed-budget protocol and are not directly comparable with numbers in other papers.
- Mean output length over the six benchmarks is 331 tokens for EVAThink-Stage1 and 213 for EVAThink-Qwen3.
- A response counts as "thinking" (think-rate) when it doesn't start directly with the answer.
- See the [EVAThink-Qwen3 card](https://huggingface.co/MaplesWCT/EVAThink-Qwen3) for per-benchmark scoring details.
## Usage
EVAThink-Stage1 uses the standard Qwen3-VL architecture and chat template, so any Qwen3-VL-compatible stack works.
Give it just the question and options.
### Transformers
```python
from transformers import AutoProcessor, Qwen3VLForConditionalGeneration
model_id = "MaplesWCT/EVAThink-Stage1"
model = Qwen3VLForConditionalGeneration.from_pretrained(model_id, dtype="auto", device_map="auto")
processor = AutoProcessor.from_pretrained(model_id)
question = "What does the person do right after opening the fridge?\nA. Takes out milk\nB. Closes it\nC. Pours water\nD. Leaves the room"
messages = [{
"role": "user",
"content": [
{"type": "video", "video": "path/to/video.mp4"},
{"type": "text", "text": question},
],
}]
inputs = processor.apply_chat_template(
messages, tokenize=True, add_generation_prompt=True, return_dict=True, return_tensors="pt",
fps=2,
).to(model.device)
out = model.generate(**inputs, max_new_tokens=4096, do_sample=False)
print(processor.batch_decode(out[:, inputs["input_ids"].shape[1]:], skip_special_tokens=True)[0])
```
### vLLM
```bash
vllm serve MaplesWCT/EVAThink-Stage1 --max-model-len 64000 --limit-mm-per-prompt '{"video": 1}'
```
### Output format
Same as EVAThink-Qwen3: either the answer alone (e.g. `B`), or a short reasoning passage followed by the final answer.
Take the letter at the start of the response; if there isn't one, take the last letter that follows "answer is".
## Training
<!-- TODO(author): check this outline before release. -->
Stage 1 starts from Qwen3-VL-8B-Instruct and runs GRPO on
[EVAThink-Dataset-Stage1](https://huggingface.co/datasets/MaplesWCT/EVAThink-Dataset-Stage1): 1,766 multiple-choice video
questions, each shown in a **dense** view (the evidence fills the clip) and a **sparse** view (the evidence is diluted in a
longer video), 32 frames per view.
- The reward depends on the view. On the dense view a correct direct answer earns the most; on the sparse view a correct
reasoned answer does. Malformed responses are penalized.
- A regularizer on the first response token keeps the model from collapsing onto a single mode.
- Both views of a question go into the same update: 32 prompts (16 questions × 2 views) × 8 rollouts per step.
- One epoch (110 steps), learning rate 1e-6, no KL penalty.
EVAThink-Qwen3 continues from this checkpoint with a stage-2 reward that no longer looks at the view.
## Limitations
- It reasons on most questions, so it is slower than EVAThink-Qwen3 at about the same accuracy.
- It was evaluated on multiple-choice video QA, plus numerical estimation in VSI-Bench. Behavior on open-ended tasks has not been studied.
- Evaluation uses a fixed 64-frame budget. Results under other frame budgets may differ.
## Citation
```bibtex
@misc{evathink2026,
title = {TODO},
author = {TODO},
year = {2026},
note = {TODO: arXiv link}
}
```
## Acknowledgements
Built on [Qwen3-VL](https://github.com/QwenLM/Qwen3-VL).
|