Instructions to use InnovatorLab/InnovatorVL-v2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use InnovatorLab/InnovatorVL-v2 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="InnovatorLab/InnovatorVL-v2") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("InnovatorLab/InnovatorVL-v2") model = AutoModelForMultimodalLM.from_pretrained("InnovatorLab/InnovatorVL-v2", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use InnovatorLab/InnovatorVL-v2 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "InnovatorLab/InnovatorVL-v2" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "InnovatorLab/InnovatorVL-v2", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/InnovatorLab/InnovatorVL-v2
- SGLang
How to use InnovatorLab/InnovatorVL-v2 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "InnovatorLab/InnovatorVL-v2" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "InnovatorLab/InnovatorVL-v2", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "InnovatorLab/InnovatorVL-v2" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "InnovatorLab/InnovatorVL-v2", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use InnovatorLab/InnovatorVL-v2 with Docker Model Runner:
docker model run hf.co/InnovatorLab/InnovatorVL-v2
Download README.md from InnovatorLab/InnovatorVL-v2: direct link, hf CLI and curl.
- Browser
- Download file 11.4 kB
-
https://huggingface.co/InnovatorLab/InnovatorVL-v2/resolve/main/README.md
- Command line
-
hf download hf://InnovatorLab/InnovatorVL-v2/README.md
-
curl -L -o README.md https://huggingface.co/InnovatorLab/InnovatorVL-v2/resolve/main/README.md
license: other
library_name: transformers
tags:
- multimodal
- vision-language
- reasoning
- science
- rl
- qwen3.5
InnovatorVL-v2
InnovatorVL-v2 is a dense 9B-parameter multimodal model that delivers state-of-the-art scientific visual understanding at its scale, without giving up general multimodal ability. Built on Qwen3.5-9B-Base, it is trained through a pipeline centred on systematic data governance — recursive self-improvement for data scoring and filtering, rank-based mixture optimisation, failure-guided data synthesis, and Visual Evidence-Calibrated Reinforcement Learning (VEC-RL).
Evaluated on 22 benchmarks with thinking disabled for every compared model, InnovatorVL-v2 attains the highest average in all three categories:
| Category | InnovatorVL-v2 (Ours) | Margin over strongest baseline |
|---|---|---|
| General (12 benchmarks) | 80.18 | +3.32 |
| Science (8 benchmarks) | 59.71 | +12.46 |
| Spatial (2 benchmarks) | 61.56 | +1.17 |
Headline results:
- First on 18 of the 22 benchmarks among the models displayed, and beats Qwen3.5-9B on 21 of the 22 — the single exception is SimpleVQA.
- Scientific understanding is the standout gain: +17.70 points over Qwen3.5-9B on the Science average.
- MolParse 75.40 and OpenRxn 56.50 — ahead of the best compared baseline by +56.35 and +40.85 points respectively. Molecular structure parsing and reaction understanding are near-solved relative to the field.
- Best general score on 11 of the 12 general benchmarks, including DocVQA 96.76, V*Bench 90.58, ChartQA 89.24, AI2D 88.34, OCRBench 88.20 and InfographicVQA 87.69.
- Highest Spatial average, with EmbSpatial-Bench 77.36 and ERQA 45.75.
Performance
Performance overview across 22 benchmarks. Blue bars indicate our model; the remaining bars show the compared models available in each panel. Our model ranks first on 18 of the 22 benchmarks among the models displayed and outperforms Qwen3.5-9B on 21 of the 22. The signed value in the upper-right corner of each panel is the score-point difference against Qwen3.5-9B. All results use our local evaluation setting with thinking disabled. Higher scores are better; vertical scales vary across panels.
Category-level performance with thinking disabled. Panels (a), (b) and (c) report unweighted averages over 12 general, eight scientific and two spatial benchmarks respectively. All seven models have complete coverage. Blue bars denote InnovatorVL-v2 (Ours); the remaining bars are the six baselines, including Qwen3.5-9B-Base. Models appear in the same order across panels, sorted by their General scores. All panels use the same 0–100 scale.
Full results
Local non-thinking evaluation across all 22 benchmarks. The InnovatorVL-v2 (Ours) column is placed first and emphasised throughout; bold marks the best score in each row, including ties.
| Benchmark | InnovatorVL-v2 (Ours) | Qwen3-VL-8B | Gemma4-12B-IT | InternVL3.5-8B | Step3-VL-10B | Qwen3.5-9B | Qwen3.5-9B-Base |
|---|---|---|---|---|---|---|---|
| General | |||||||
| AI2D | 88.34 | 83.74 | 77.49 | 82.22 | 83.55 | 85.46 | 63.28 |
| ChartQA | 89.24 | 85.24 | 52.12 | 87.20 | 59.68 | 85.28 | 61.04 |
| InfographicVQA (val) | 87.69 | 83.72 | 53.86 | 74.23 | 71.27 | 83.34 | 76.70 |
| DocVQA (val) | 96.76 | 93.66 | 83.10 | 92.37 | 92.33 | 94.98 | 92.60 |
| MMBench (EN dev) | 87.97 | 83.67 | 81.62 | 83.51 | 85.47 | 85.48 | 86.34 |
| MME-RealWorld | 71.33 | 63.29 | 35.02 | 62.66 | 30.32 | 60.08 | 46.79 |
| MMStar | 73.15 | 59.94 | 67.11 | 66.38 | 63.24 | 70.52 | 71.92 |
| OCRBench | 88.20 | 87.00 | 77.80 | 83.20 | 85.30 | 83.10 | 86.30 |
| RealWorldQA | 76.73 | 68.76 | 65.23 | 63.53 | 63.66 | 74.51 | 72.81 |
| SEED-Bench-2-Plus | 72.38 | 71.28 | 68.25 | 70.58 | 69.35 | 70.84 | 64.08 |
| V*Bench | 90.58 | 84.82 | 52.36 | 70.68 | 67.02 | 84.29 | 82.20 |
| SimpleVQA | 39.80 | 39.31 | 40.27 | 35.47 | 46.24 | 44.40 | 45.73 |
| Science | |||||||
| EMVista | 49.62 | 44.27 | 39.30 | 46.81 | 43.03 | 43.35 | 37.84 |
| ScienceQA | 93.89 | 91.91 | 89.39 | 95.94 | 85.76 | 93.35 | 89.53 |
| MolParse | 75.40 | 4.35 | 4.95 | 19.05 | 4.25 | 7.00 | 5.20 |
| OpenRxn | 56.50 | 9.25 | 12.60 | 14.05 | 12.70 | 14.40 | 15.65 |
| RxnBench (EN) | 89.05 | 82.75 | 85.31 | 80.46 | 73.70 | 88.52 | 87.67 |
| SmolInstruct_v2 | 27.08 | 20.15 | 24.18 | 40.27 | 6.87 | 14.38 | 27.44 |
| ProteinLMBench | 61.97 | 59.32 | 56.67 | 61.76 | 56.25 | 54.77 | 65.89 |
| SFE (EN) | 24.13 | 28.98 | 22.41 | 19.63 | 14.44 | 20.24 | 20.12 |
| Spatial | |||||||
| EmbSpatial-Bench | 77.36 | 74.90 | 73.54 | 73.24 | 68.10 | 75.77 | 75.00 |
| ERQA | 45.75 | 38.80 | 42.25 | 41.25 | 24.00 | 45.00 | 45.75 |
Usage
Verified with transformers 5.3.0. All 760 tensors in model.safetensors map
cleanly onto the model (no missing or unexpected keys).
import torch
from transformers import AutoModelForImageTextToText, AutoProcessor
path = "InnovatorLab/InnovatorVL-v2"
processor = AutoProcessor.from_pretrained(path) # Qwen3VLProcessor
model = AutoModelForImageTextToText.from_pretrained( # Qwen3_5ForConditionalGeneration
path, dtype=torch.bfloat16, device_map="auto"
)
Inference dependencies
The text stack uses hybrid attention with linear_attention layers. Without
flash-linear-attention
and causal-conv1d installed,
transformers logs "The fast path is not available" and falls back to a
slower pure-PyTorch implementation. Results are unaffected, but throughput is
lower — install both for production inference.
License
The license field above is a placeholder. It must be set by the model owner before relying on this model commercially.

