Views
No views yet
Qwen/Qwen3-VL-32B-Instruct trained with LongPO for improved long-document QA and reasoning over PDFs. We use task arithmetic to minimize degradation from the original model.Qwen3VLForConditionalGeneration + AutoProcessor (same API as the base model) and vllm serve lightonai/OriOn-Qwen.| Model / checkpoint | VA | LCA | MMLBD-C | MMLB 128K | SlideVQA | Helmet | LongBench v2 | DUDE |
|---|---|---|---|---|---|---|---|---|
| OriOn-Qwen (LongPO short-stage) | 94.6 | 93.1 | 56.4 | 75.6 | 75.5 | 62.9 | 42.0 | 56.0 |
| Qwen3-VL 32B (baseline) | 94.2 | 92.8 | 53.8 | 70.4 | 77.2 | 63.0 | 42.0 | 61.8 |
| Qwen3-VL 32B Plain Distill (short stage) | 92.5 | 92.5 | 57.3 | 73.8 | 66.8 | 65.7 | 44.0 | 54.8 |
| OriOn-Mistral (Plain Distill) | 84.9 | 83.0 | 47.4 | 65.7 | 71.2 | 53.1 | 38.0 | 54.0 |
| Mistral 3.1 Small (24B) | 80.2 | 76.7 | 41.4 | 66.4 | 67.8 | 37.0 | 39.0 | 52.8 |
vllm serve lightonai/OriOn-Qwen -tp 2 --quantization fp8 lightonai/OriOn-Qwen.1from transformers import Qwen3VLForConditionalGeneration, AutoProcessor
2
3# Load the model on the available device(s)
4model = Qwen3VLForConditionalGeneration.from_pretrained(
5 "lightonai/OriOn-Qwen", dtype="auto", device_map="auto"
6)
7
8processor = AutoProcessor.from_pretrained("lightonai/OriOn-Qwen")
9
10messages = [
11 {
12 "role": "user",
13 "content": [
14 {
15 "type": "image",
16 "image": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg",
17 },
18 {"type": "text", "text": "Describe this image."},
19 ],
20 }
21]
22
23# Preparation for inference
24inputs = processor.apply_chat_template(
25 messages,
26 tokenize=True,
27 add_generation_prompt=True,
28 return_dict=True,
29 return_tensors="pt",
30)
31inputs = inputs.to(model.device)
32
33# Inference
34generated_ids = model.generate(**inputs, max_new_tokens=128)
35generated_ids_trimmed = [
36 out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
37]
38output_text = processor.batch_decode(
39 generated_ids_trimmed,
40 skip_special_tokens=True,
41 clean_up_tokenization_spaces=False,
42)
43print(output_text)Tip: if you’re running multi-image/video, Qwen recommendsflash_attention_2for speed/memory.
1@misc{orion_longdoc_vlm_2026,
2 title={How to Train Your Long-Context Visual Document Model},
3 author={Austin Veselka},
4 year={2026},
5 eprint={2602.15257},
6 archivePrefix={arXiv},
7 primaryClass={cs.CV},
8 url={https://arxiv.org/abs/2602.15257},
9}
10@misc{qwen3technicalreport,
11 title = {Qwen3 Technical Report},
12 author = {Qwen Team},
13 year = {2025},
14 eprint = {2505.09388},
15 archivePrefix= {arXiv},
16 primaryClass = {cs.CL},
17 url = {https://arxiv.org/abs/2505.09388}
18}
19@misc{mmlbd,
20 title={MMLongBench-Doc: Benchmarking Long-context Document Understanding with Visualizations},
21 author={Yubo Ma and Yuhang Zang and Liangyu Chen and Meiqi Chen and Yizhu Jiao and Xinze Li and Xinyuan Lu and Ziyu Liu and Yan Ma and Xiaoyi Dong and Pan Zhang and Liangming Pan and Yu-Gang Jiang and Jiaqi Wang and Yixin Cao and Aixin Sun},
22 year={2024},
23 eprint={2407.01523},
24 archivePrefix={arXiv},
25 primaryClass={cs.CV},
26 url={https://arxiv.org/abs/2407.01523},
27}