File size: 4,958 Bytes
a381a62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c11a344
a381a62
 
 
c11a344
a381a62
c11a344
a381a62
c11a344
a381a62
 
 
 
 
f4b1928
a381a62
 
f4b1928
a381a62
 
f4b1928
 
a381a62
 
 
 
 
 
f4b1928
a381a62
 
 
 
 
 
 
 
 
 
40600d5
 
 
 
 
 
 
a381a62
 
40600d5
a381a62
 
 
f4b1928
a381a62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
base_model: OpenGVLab/InternVL3-9B
base_model_relation: finetune
library_name: transformers
license: mit
tags:
  - cvrr
  - custom_code
  - latent-reasoning
  - visual-question-answering
  - arxiv:2609.06746
---

# InternVL3-9B-CVRR

<p align="center">
  <a href="https://arxiv.org/abs/2609.06746"><strong>πŸ“„ Paper</strong></a> Β·
  <a href="https://github.com/dmis-lab/CVRR"><strong>πŸ’» Code</strong></a>
</p>

## Introduction

Latent visual reasoning is not just about storing visual information in hidden
states. That information should matter for the model's answer. When an answer
decoder can access the original multimodal context through a parallel path,
the presence of informative latent states alone does not establish their use.

Our work, **Reason Through the Latent! Making Latent Visual Reasoning Necessary**,
introduces **Causal Visual Recurrent Reasoning (CVRR)**. CVRR separates visual
access during reasoning from visual access during answering, focusing on three
design principles:

**πŸ‘οΈ Preserving pretrained visual competence**  
Reasoning starts from the native image-conditioned question representation,
preserving visual information already integrated by the pretrained VLM.

**πŸ” Refining reasoning with persistent visual evidence**  
A shared native decoder layer updates the question state while retaining access
to fixed visual evidence. The recurrent transition is adapted with LoRA and
answer-token supervision.

**πŸ”’ Making the reasoning state the visual answer interface**  
The upper answer decoder receives the final recurrent question state, without
direct access to the original visual rows or original multimodal prefix caches.
The lower-layer prefix context used for answer generation follows a text-only path.

## Model Checkpoints

### Final Models

We release CVRR checkpoints based on the following pretrained vision-language
backbones. Each repository contains the native backbone weights, the merged
recurrent transition, and the custom inference code; no separate LoRA download
is required.

- πŸ€— [Qwen2.5-VL-7B-CVRR](https://huggingface.co/dmis-lab/Qwen2.5-VL-7B-CVRR)
- πŸ€— [Qwen2.5-VL-32B-CVRR](https://huggingface.co/dmis-lab/Qwen2.5-VL-32B-CVRR)
- πŸ€— [Qwen3-VL-8B-CVRR](https://huggingface.co/dmis-lab/Qwen3-VL-8B-CVRR)
- πŸ€— [Gemma3-4B-CVRR](https://huggingface.co/dmis-lab/Gemma3-4B-CVRR)
- πŸ€— [Gemma3-12B-CVRR](https://huggingface.co/dmis-lab/Gemma3-12B-CVRR)
- πŸ€— [Gemma3-27B-CVRR](https://huggingface.co/dmis-lab/Gemma3-27B-CVRR)
- πŸ€— [Gemma4-12B-CVRR](https://huggingface.co/dmis-lab/Gemma4-12B-CVRR)
- πŸ€— [Gemma4-31B-CVRR](https://huggingface.co/dmis-lab/Gemma4-31B-CVRR)
- πŸ€— [InternVL3-9B-CVRR](https://huggingface.co/dmis-lab/InternVL3-9B-CVRR)
- πŸ€— [InternVL3-38B-CVRR](https://huggingface.co/dmis-lab/InternVL3-38B-CVRR)

This checkpoint is based on **`OpenGVLab/InternVL3-9B`**.

## Loading

Install the model-specific dependencies from [requirements.txt](https://huggingface.co/dmis-lab/InternVL3-9B-CVRR/blob/main/requirements.txt), then load directly from the Hub:

```bash
pip install torch==2.9.1 transformers==4.57.6 peft==0.17.1 timm einops accelerate safetensors huggingface_hub Pillow numpy sentencepiece
```

The first `from_pretrained` call downloads and caches the complete model package.

```python
import torch
from PIL import Image
from transformers import AutoModelForImageTextToText

model = AutoModelForImageTextToText.from_pretrained(
    "dmis-lab/InternVL3-9B-CVRR",
    trust_remote_code=True,
    dtype=torch.bfloat16,
    device_map="cuda:0",
).eval()

image = Image.open("example.jpg").convert("RGB")
inputs = model.prepare_inputs(
    image,
    "What is the dominant color? A. Red B. Blue C. Green D. Yellow. Answer with the option letter.",
)
answer_ids = model.generate(
    **inputs,
    do_sample=False,
    max_new_tokens=64,
    eos_token_id=model.tokenizer.eos_token_id,
)
print(model.tokenizer.decode(answer_ids[0], skip_special_tokens=True))
```

This model supports strict first-answer-token readout and deterministic greedy answer generation. The default recurrent update coefficient is `beta=0.5`.

Use one complete model replica per GPU. This custom Transformers loader does
not support automatic model sharding, generic `save_pretrained()` reserialization,
or direct loading through vLLM/SGLang. Pin the Hub revision for reproducible use.

## License

Please follow the upstream model's terms and the included
[`NOTICE.txt`](NOTICE.txt) and [`licenses/`](licenses/) attribution files.
The component licenses remain applicable to their respective materials.

## Citation

```bibtex
@misc{park2026reasonlatentmakinglatent,
      title={Reason Through the Latent! Making Latent Visual Reasoning Necessary},
      author={Suhyeong Park and Junha Jung and Jaewoo Kang},
      year={2026},
      eprint={2609.06746},
      archivePrefix={arXiv},
      primaryClass={cs.AI},
      url={https://arxiv.org/abs/2609.06746},
}
```