CoolFace
Modelpublic

OpenGVLab/InternVL3_5-14B-HF

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
3likes1.5kdownloads
README.md600 linesDownload Raw Back to root
1---2license: apache-2.03pipeline_tag: image-text-to-text4library_name: transformers5base_model:6  - OpenGVLab/InternVL3_5-14B-MPO7base_model_relation: finetune8datasets:9  - OpenGVLab/MMPR-v1.210  - OpenGVLab/MMPR-Tiny11language:12  - multilingual13tags:14  - internvl15  - custom_code16---17 18# InternVL3_5-14B19 20[\[πŸ“‚ GitHub\]](https://github.com/OpenGVLab/InternVL)  [\[πŸ“œ InternVL 1.0\]](https://huggingface.co/papers/2312.14238)  [\[πŸ“œ InternVL 1.5\]](https://huggingface.co/papers/2404.16821)  [\[πŸ“œ InternVL 2.5\]](https://huggingface.co/papers/2412.05271)  [\[πŸ“œ InternVL2.5-MPO\]](https://huggingface.co/papers/2411.10442)  [\[πŸ“œ InternVL3\]](https://huggingface.co/papers/2504.10479) [\[πŸ“œ InternVL3.5\]](https://huggingface.co/papers/2508.18265)21 22[\[πŸ†• Blog\]](https://internvl.github.io/blog/)  [\[πŸ—¨οΈ Chat Demo\]](https://chat.intern-ai.org.cn/)  [\[πŸš€ Quick Start\]](#quick-start)  [\[πŸ“– Documents\]](https://internvl.readthedocs.io/en/latest/)23 24<div align="center">25  <img width="500" alt="image" src="https://cdn-uploads.huggingface.co/production/uploads/64006c09330a45b03605bba3/zJsd2hqd3EevgXo6fNgC-.png">26</div>27 28## Introduction29 30We introduce *InternVL3.5*, a new family of open-source multimodal models that significantly advances versatility, reasoning capability, and inference efficiency along the InternVL series. A key innovation is the *Cascade Reinforcement Learning (Cascade RL)* framework, which enhances reasoning through a two-stage process: offline RL for stable convergence and online RL for refined alignment. This coarse-to-fine training strategy leads to substantial improvements on downstream reasoning tasks, e.g., MMMU and MathVista. To optimize efficiency, we propose a *Visual Resolution Router (ViR)* that dynamically adjusts the resolution of visual tokens without compromising performance. Coupled with ViR, our Decoupled *Vision-Language Deployment (DvD)* strategy separates the vision encoder and language model across different GPUs, effectively balancing computational load. These contributions collectively enable InternVL3.5 to achieve up to a +16.0\% gain in overall reasoning performance and a 4.05 \\(\times\\) inference speedup compared to its predecessor, i.e., InternVL3. In addition, InternVL3.5 supports novel capabilities such as GUI interaction and embodied agency. Notably, our largest model, i.e.,  InternVL3.5-241B-A28B, attains state-of-the-art results among open-source MLLMs across general multimodal, reasoning, text, and agentic tasksβ€”narrowing the performance gap with leading commercial models like GPT-5. All models and code are publicly released.31 32![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance.jpg)33 34> Hatched bars represent closed-source commercial models. We report average scores on a set of multimodal general, reasoning, text, and agentic benchmarks: MMBench v1.1 (en), MMStar,BLINK, HallusionBench, AI2D, OCRBench, MMVet, MME-RealWorld (en), MVBench, VideoMME, MMMU, MathVista, MathVision, MathVerse, DynaMath, WeMath, LogicVista, MATH500, AIME24, AIME25, GPQA, MMLU-Pro, GAOKAO, IFEval, SGP-Bench, VSI-Bench, ERQA, SpaCE-10, and OmniSpatial.35 36See [quick start](#quick-start) for how to use our model.37 38## InternVL3.5 Family39 40In the following table, we provide an overview of the InternVL3.5 series.41To maintain consistency with earlier generations, we provide two model formats: [the GitHub format](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B), consistent with prior releases, and [the HF format](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B-HF), aligned with the official Transformers standard.42 43> If you want to convert the checkpoint between these two formats, please refer to the scripts about [custom2hf](https://github.com/OpenGVLab/InternVL/blob/main/internvl_chat/tools/internvl_custom2hf.py) and [hf2custom](https://github.com/OpenGVLab/InternVL/blob/main/internvl_chat/tools/internvl_hf2custom.py).44 45 46### Github Format47 48 49| Model                 | #Vision Param | #Language Param | #Total Param | HF Link                                                                        | ModelScope Link                                                                          |50| --------------------- | ------------- | --------------- | ------------ | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |51| InternVL3.5-1B        | 0.3B          | 0.8B            | 1.1B         | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-1B)                      | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-1B)                      |52| InternVL3.5-2B        | 0.3B          | 2.0B            | 2.3B         | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-2B)                      | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-2B)                      |53| InternVL3.5-4B        | 0.3B          | 4.4B            | 4.7B         | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-4B)                      | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-4B)                      |54| InternVL3.5-8B        | 0.3B          | 8.2B            | 8.5B         | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-8B)                      | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-8B)                      |55| InternVL3.5-14B       | 0.3B          | 14.8B           | 15.1B        | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-14B)                     | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-14B)                     |56| InternVL3.5-38B       | 5.5B          | 32.8B           | 38.4B        | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-38B)                     | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-38B)                     |57| InternVL3.5-20B-A4B   | 0.3B          | 20.9B           | 21.2B-A4B    | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-GPT-OSS-20B-A4B-Preview) | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-GPT-OSS-20B-A4B-Preview) |58| InternVL3.5-30B-A3B   | 0.3B          | 30.5B           | 30.8B-A3B    | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-30B-A3B)                 | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-30B-A3B)                 |59| InternVL3.5-241B-A28B | 5.5B          | 235.1B          | 240.7B-A28B  | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B)               | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-241B-A28B)               |60 61 62### HuggingFace Format63 64 65| Model                    | #Vision Param | #Language Param | #Total Param | HF Link                                                                           | ModelScope Link                                                                             |66| ------------------------ | ------------- | --------------- | ------------ | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |67| InternVL3.5-1B-HF        | 0.3B          | 0.8B            | 1.1B         | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-1B-HF)                      | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-1B-HF)                      |68| InternVL3.5-2B-HF        | 0.3B          | 2.0B            | 2.3B         | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-2B-HF)                      | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-2B-HF)                      |69| InternVL3.5-4B-HF        | 0.3B          | 4.4B            | 4.7B         | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-4B-HF)                      | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-4B-HF)                      |70| InternVL3.5-8B-HF        | 0.3B          | 8.2B            | 8.5B         | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-8B-HF)                      | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-8B-HF)                      |71| InternVL3.5-14B-HF       | 0.3B          | 14.8B           | 15.1B        | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-14B-HF)                     | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-14B-HF)                     |72| InternVL3.5-38B-HF       | 5.5B          | 32.8B           | 38.4B        | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-38B-HF)                     | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-38B-HF)                     |73| InternVL3.5-20B-A4B-HF   | 0.3B          | 20.9B           | 21.2B-A4B    | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-GPT-OSS-20B-A4B-Preview-HF) | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-GPT-OSS-20B-A4B-Preview-HF) |74| InternVL3.5-30B-A3B-HF   | 0.3B          | 30.5B           | 30.8B-A3B    | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-30B-A3B-HF)                 | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-30B-A3B-HF)                 |75| InternVL3.5-241B-A28B-HF | 5.5B          | 235.1B          | 240.7B-A28B  | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B-HF)               | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-241B-A28B-HF)               |76 77 78![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_overall.jpg)79 80> We conduct the evaluation with [VLMEvalkit](https://github.com/open-compass/VLMEvalKit). ***To enable the Thinking mode of our model, please set the system prompt to [R1_SYSTEM_PROMPT](https://github.com/open-compass/VLMEvalKit/blob/main/vlmeval/vlm/internvl/internvl_chat.py#L38).*** When enabling Thinking mode, we recommend setting `do_sample=True` and `temperature=0.6` to mitigate undesired repetition.81 82Our training pipeline comprises four stages: Multimodal Continual Pre-Training (**CPT**), Supervised Fine-Tuning (**SFT**), and Cascade Reinforcement Learning (**CascadeRL**). In CascadeRL, we first fine-tune the model using Mixed Preference Optimization (**MPO**) under an offline RL setting, followed by **GSPO** under an oneline RL setting.83For the Flash version of InternVL3.5, we additionally introduce a lightweight training stage, termed Visual Consistency Learning (**ViCO**), which reduces the token cost required to represent an image patch.84 85![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/training_pipeline.jpg)86 87Here, we also open-source the model weights after different training stages for potential research usage.88***If you're unsure which version to use, please select the one without any suffix, as it has completed the full training pipeline.***89 90 91| Model                            | Training Pipeline     | HF Link                                                                     | ModelScope Link                                                                       |92| -------------------------------- | --------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |93| InternVL3.5-1B-Pretrained        | CPT                   | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-1B-Pretrained)        | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-1B-Pretrained)        |94| InternVL3.5-1B-Instruct          | CPT + SFT             | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-1B-Instruct)          | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-1B-Instruct)          |95| InternVL3.5-1B-MPO               | CPT + SFT + MPO       | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-1B-MPO)               | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-1B-MPO)               |96| InternVL3.5-1B                   | CPT + SFT + CascadeRL | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-1B)                   | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-1B)                   |97| InternVL3.5-2B-Pretrained        | CPT                   | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-2B-Pretrained)        | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-2B-Pretrained)        |98| InternVL3.5-2B-Instruct          | CPT + SFT             | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-2B-Instruct)          | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-2B-Instruct)          |99| InternVL3.5-2B-MPO               | CPT + SFT + MPO       | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-2B-MPO)               | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-2B-MPO)               |100| InternVL3.5-2B                   | CPT + SFT + CascadeRL | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-2B)                   | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-2B)                   |101| InternVL3.5-4B-Pretrained        | CPT                   | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-4B-Pretrained)        | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-4B-Pretrained)        |102| InternVL3.5-4B-Instruct          | CPT + SFT             | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-4B-Instruct)          | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-4B-Instruct)          |103| InternVL3.5-4B-MPO               | CPT + SFT + MPO       | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-4B-MPO)               | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-4B-MPO)               |104| InternVL3.5-4B                   | CPT + SFT + CascadeRL | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-4B)                   | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-4B)                   |105| InternVL3.5-8B-Pretrained        | CPT                   | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-8B-Pretrained)        | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-8B-Pretrained)        |106| InternVL3.5-8B-Instruct          | CPT + SFT             | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-8B-Instruct)          | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-8B-Instruct)          |107| InternVL3.5-8B-MPO               | CPT + SFT + MPO       | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-8B-MPO)               | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-8B-MPO)               |108| InternVL3.5-8B                   | CPT + SFT + CascadeRL | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-8B)                   | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-8B)                   |109| InternVL3.5-14B-Pretrained       | CPT                   | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-14B-Pretrained)       | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-14B-Pretrained)       |110| InternVL3.5-14B-Instruct         | CPT + SFT             | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-14B-Instruct)         | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-14B-Instruct)         |111| InternVL3.5-14B-MPO              | CPT + SFT + MPO       | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-14B-MPO)              | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-14B-MPO)              |112| InternVL3.5-14B                  | CPT + SFT + CascadeRL | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-14B)                  | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-14B)                  |113| InternVL3.5-30B-A3B-Pretrained   | CPT                   | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-30B-A3B-Pretrained)   | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-30B-A3B-Pretrained)   |114| InternVL3.5-30B-A3B-Instruct     | CPT + SFT             | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-30B-A3B-Instruct)     | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-30B-A3B-Instruct)     |115| InternVL3.5-30B-A3B-MPO          | CPT + SFT + MPO       | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-30B-A3B-MPO)          | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-30B-A3B-MPO)          |116| InternVL3.5-30B-A3B              | CPT + SFT + CascadeRL | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-30B-A3B)              | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-30B-A3B)              |117| InternVL3.5-38B-Pretrained       | CPT                   | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-38B-Pretrained)       | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-38B-Pretrained)       |118| InternVL3.5-38B-Instruct         | CPT + SFT             | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-38B-Instruct)         | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-38B-Instruct)         |119| InternVL3.5-38B-MPO              | CPT + SFT + MPO       | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-38B-MPO)              | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-38B-MPO)              |120| InternVL3.5-38B                  | CPT + SFT + CascadeRL | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-38B)                  | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-38B)                  |121| InternVL3.5-241B-A28B-Pretrained | CPT                   | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B-Pretrained) | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-241B-A28B-Pretrained) |122| InternVL3.5-241B-A28B-Instruct   | CPT + SFT             | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B-Instruct)   | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-241B-A28B-Instruct)   |123| InternVL3.5-241B-A28B-MPO        | CPT + SFT + MPO       | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B-MPO)        | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-241B-A28B-MPO)        |124| InternVL3.5-241B-A28B            | CPT + SFT + CascadeRL | [πŸ€— link](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B)            | [πŸ€– link](https://www.modelscope.cn/models/OpenGVLab/InternVL3_5-241B-A28B)            |125 126 127The Flash version of our model will be released as soon as possible.128 129 130 131## Model Architecture132 133`InternVL3.5`:134This series of models follow the "ViT–MLP–LLM" paradigm adopted in previous versions of InternVL.135We initialize the language model using the Qwen3 series and GPT-OSS, and the vision encoder using InternViT-300M and InternViT-6B.136The Dynamic High Resolution strategy introduced in InternVL1.5 is also retained in our design.137 138 139`InternVL3.5-Flash`:140Compared to InternVL3.5, InternVL3.5-Flash further integrates the *Visual Resolution Router (ViR)*, thus yielding a series of  efficient variants friendly  suitable for  resource-constrained scenarios. 141Specifically, in InternVL3.5, each image patch is initially represented as 1024 visual tokens for the vision encoder, which are then compressed into 256 tokens via a pixel shuffle module before being passed to the Large Language Model (LLM).142In InternVL3.5-Flash, as shown in the Figure below, an additional pixel shuffle module with a higher compression rate is included, enabling the compression of visual tokens down to 64 tokens.143For each patch, the patch router determines the appropriate compression rate by assessing its semantic richness, and routes it to the corresponding pixel shuffle module accordingly.144Benefiting from this patch-aware compression mechanism, InternVL3.5-Flash is able to reduce the number of visual tokens by 50\% while maintaining nearly 100\% of the performance of InternVL3.5.145 146 147![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/architecture.jpg)148 149## Training and Deployment Strategy150 151### Pre-Training152 153During the pre-training stage, we update all model parameters jointly using the combination of large-scale text and multimodal corpora. Specifically, given an arbitrary training sample consisting of a multimodal token sequence \\(\mathbf{x}=\left(x_1, x_2, \ldots, x_L\right)\\), the next token prediction (NTP) loss is calculated on each text token as follows:154 155$$156    \mathcal{L}_{i}=-\log p_\theta\left(x_i \mid x_1, \ldots, x_{i-1}\right),157$$158 159where \\(x_i\\) is the predicted token and  prefix tokens in \\(\{x_1, x_2, \ldots, x_{i-1}\}\\) can be either  text tokens or  image tokens. Notably, for conversation samples, only response tokens  are included for the calculation of the loss.160Additionally, to mitigate bias toward either longer or shorter responses during training, we adopt the square averaging to re-weight the NTP loss  as follows:161 162$$163\mathcal{L}_{i}^{'} = \frac{w_i}{\sum_j w_j} \cdot \mathcal{L}_i, \quad w_i = \frac{1}{N^{0.5}},164$$165 166where \\(N\\) denotes the number of tokens in the training sample on which the loss needs to be calculated. The random JPEG compression is also included to enhance the model's real-world performance.167 168### Supervised Fine-Tuning169 170During the SFT phase, we adopt the same objective as in the pre-training stage and use the  square-root averaging strategy to calculate the final loss.  In this stage, the context window is set to 32K tokens to adapt long-context information.171Compared to InternVL3, the SFT stage of InternVL3.5 contains  more high-quality and  diverse training data derived from three sources: 172 173(1) Instruction-following data from InternVL3, which are reused to preserve broad coverage of vision–language tasks. 174 175(2) Multimodal reasoning data in the "Thinking" mode, which are included to instill long-thinking capabilities in the model. To construct such data, we first use InternVL3-78B to describe the image and then input the description into DeepSeek-R1 to sample rollouts with detailed reasoning processes. Rollouts with an incorrect final answer are filtered out. The questions in these datasets cover various expert domains, such as mathematics and scientific disciplines, thereby strengthening performance on different reasoning tasks. 176 177(3) Capability-expansion datasets, which endow InternVL3.5 with new skills, including GUI-based interaction, embodied interaction, and scalable vect178 179### Cascade Reinforcement Learning180 181Cascade RL aims to combine the benefits of offline RL and online RL to progressively facilitate the post-training of MLLMs in an efficient manner.182Specifically, we first fine-tune the model using an offline RL algorithm as an efficient warm-up stage to reach a satisfied results, which can guarantee the high-quality rollouts for the latter stage. 183Subsequently, we employ an online RL algorithm to further refine the output distribution based on rollouts generated by the model itself.  Compared to the single offline or online RL stage, our cascaded RL achieves significant performance improvements at a fraction of the GPU time cost.184 185 186 187During the offline RL stage, we employ mixed preference optimization (MPO) to fine-tune the model. Specifically, the training objective of MPO is a combination of preference loss \\(\mathcal{L}_{p}\\), quality loss \\(\mathcal{L}_{q}\\), and generation loss \\(\mathcal{L}_{g}\\), which can be formulated as follows:188 189$$190    \mathcal{L}_{\text{MPO}}=191    w_{p} \mathcal{L}_{p}192    +193    w_{q} \mathcal{L}_{q}194    +195    w_{g} \mathcal{L}_{g}196    ,197$$198 199where \\(w_{*}\\) represents the weight assigned to each loss component.200The DPO loss, BCO loss, and LM loss serve as the preference loss, quality loss, and generation loss, respectively.201 202 203During the online RL stage, we employ GSPO, without reference model constraints, as our online RL algorithm, which we find more effective in training both dense and mixture-of-experts (MoE) models. Similar to GRPO, the advantage is defined as the normalized reward across responses sampled from the same query.204The training objective of GSPO is given by:205 206$$207    \mathcal{L}_{\mathrm{GSPO}}(\theta)=\mathbb{E}_{x \sim \mathcal{D},\left\{y_i\right\}_{i=1}^G \sim \pi_{\theta \text { old }}(\cdot \mid x)}\left[\frac{1}{G} \sum_{i=1}^G \min \left(s_i(\theta) \widehat{A}_i, \operatorname{clip}\left(s_i(\theta), 1-\varepsilon, 1+\varepsilon\right) \widehat{A}_i\right)\right],208$$209 210where the importance sampling ratio is defined as the geometric mean of the per-token ratios.211 212> Please see [our paper](https://huggingface.co/papers/2508.18265) for more technical and experimental details.213 214 215### Visual Consistency Learning216 217 218We further include ViCO as an additional training stage to integrate the *visual resolution router (ViR)* into InternVL3.5, thereby reducing the inference cost of InternVL3.5. The obtained efficient version of InternVL3.5 are termed as *InternVL3.5-Flash*. In particular, ViCO comprises two stages:219 220`Consistency training`:221In this stage, the entire model is trained to minimize the divergence between response distributions conditioned on visual tokens with different compression rates.222In practice, we introduce an extra reference model, which is frozen and initialized with InternVL3.5.223Given a sample, each image patch is represented as either 256 or 64 tokens, and the training objective is defined as follows:224 225 226$$227\mathcal{L}_\text{ViCO} =228\mathbb{E}_{\xi \sim \mathcal{R}} \Bigg[229\frac{1}{N} \sum_{i=1}^{N} \mathrm{KL} \Big(230\pi_{\theta_{ref}}\left(y_i \mid y_{<i}, I\right) \;\Big\|\;231\pi_{\theta_{policy}}\left(y_i \mid y_{<i}, I_\xi\right)232\Big)233\Bigg],234$$235 236where \\(\mathrm{KL}\) denotes the KL divergence and \(\xi\) denotes the compression rate, which is uniformly sampled from \(\{\frac{1}{4},\frac{1}{16}\}\). The image \(I_\xi\) is represented as 256 tokens when \(\xi=\frac{1}{4}\) and 64 tokens when \(\xi=\frac{1}{16}\). Notably, the reference model always performs inference with \(\xi=\frac{1}{4}\).237 238 239`Router training`:240This stage aims to train the ViR to select an appropriate trade-off resolution for different inputs.241ViR is formulated as a binary classifier and trained using standard cross-entropy loss.242To construct the route targets, we first compute the KL divergence between the model outputs conditioned on uncompressed visual tokens (i.e., 256 tokens per patch) and those conditioned on compressed visual tokens (i.e., 64 tokens per patch).243During this stage, the main MLLM (ViT, MLP and LLM) is kept frozen, and only the ViR is trained.244Specifically, we first compute the loss ratio for each patch:245 246$$247r_i = \frac{\mathcal{L}_\text{ViCO}\big(y_i \mid I_{\frac{1}{16}}\big)}{\mathcal{L}_\text{ViCO}\big(y_i \mid I_{\frac{1}{4}}\big)},248$$249 250which quantifies the relative increase in loss caused by compressing the visual tokens. Based on this ratio, the binary ground-truth label for the patch router is defined as:251 252$$253y_i^\text{router} =254\begin{cases}2550, & r_i < \tau \; \text{(compression has negligible impact)} \\2561, & r_i \ge \tau \; \text{(compression has significant impact)},257\end{cases}258$$259 260where \(y_i^{\text{router}}=0\) and \(y_i^{\text{router}}=1\)  indicate that the compression rate \(\xi\) is set to \(\tfrac{1}{16}\) and \(\tfrac{1}{4}\), respectively.261 262> Please see [our paper](https://huggingface.co/papers/2508.18265) for more technical and experimental details.263 264 265### Test-Time Scaling266 267 268Test-time scaling (TTS) has been empirically demonstrated as an effective approach to enhance the reasoning capabilities of LLMs and MLLMs, particularly for complex tasks necessitating multi-step inference.269In this work, we implement a comprehensive test-time scaling approach that simultaneously improves reasoning depth (i.e., deep thinking) and breadth (i.e., parallel thinking).270 271`Deep Thinking`: By activating the Thinking mode, we guide the model to deliberately engage in step-by-step reasoning (i.e., decomposing complex problems into logical steps and validating intermediate conclusions) prior to generating the final answer. This approach systematically improves the logical structure of solutions for complex problems, particularly those requiring multi-step inference, and enhances reasoning depth.272 273`Parallel Thinking`: Following InternVL3, for reasoning tasks, we adopt the Best-of-N (BoN) strategy by employing [VisualPRM-v1.1](https://huggingface.co/OpenGVLab/VisualPRM-8B-v1_1) as the critic model to select the optimal response from multiple reasoning candidates.274This approach improves reasoning breadth.275 276> Notably, unless otherwise specified, the experimental results reported in our paper are obtained without applying TTS. Thus far, we have only applied TTS to reasoning benchmarks, since we found that the model already exhibits strong perception and understanding capabilities, and initiating TTS yields no significant improvement.277 278 279### Decoupled Vision-Language Deployment280 281In multimodal inference, the vision encoder and language model have distinct computational characteristics. The vision encoder that transforms images into semantic features is highly parallelizable and does not rely on long-term history state.  In contrast,  the language model adopts the inference in an autoregressive manner, which requires previous states to compute the next one. This sequential property makes the language part more sensitive to memory bandwidth and latency. 282When MLLMs are deployed online at scale, the vision and language models often block each other, thus incurring additional inference cost. This effect becomes more pronounced with larger vision models or higher-resolution images.283 284![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/DvD.jpg)285 286As shown in the Figure above, we propose decoupled vision-language deployment (DvD) to address this issue by separating vision and language processing, with a particular focus on optimizing the prefilling stage. The vision subsystem batches and processes images to produce compact feature embeddings, which are then transmitted to the language subsystem for fusion with the text context prior to decoding. This separation alleviates blocking and brings multimodal prefilling performance closer to that of pure language models.287In our system implementation, the ViT and MLP (and ViR for InternVL3.5-Flash) are deployed on the vision server, while the language server executes only the LLM. The communication is unidirectional, transmitting BF16 visual features over TCP, with RDMA optionally employed to achieve higher transmission speed. Vision processing, feature transmission, and language processing are organized into an asynchronous three-stage pipeline, enabling overlapped execution and minimizing pipeline stalls.288 289 290DvD increases GPU utilization and processing efficiency on the vision side, while enabling the language server to focus exclusively on the LLM’s prefilling and decoding without being blocked by vision computation. This design leads to improved throughput and responsiveness. Moreover, the architecture supports independent hardware cost optimization for the vision and language modules, and facilitates the seamless integration of new modules without requiring modifications to the language server deployment.291 292 293## Evaluation on Multimodal Capability294 295### Multimodal Reasoning and Mathematics296 297![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_reasoning.jpg)298 299### OCR, Chart, and Document Understanding300 301![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_ocr.jpg)302 303### Multi-Image Understanding & Real-World Comprehension304 305![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_multi_images.jpg)306 307### Comprehensive Multimodal Understanding & Multimodal Hallucination Evaluation308 309![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_comprehensive.jpg)310 311### Visual Grounding312 313![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_grounding.jpg)314 315### Multimodal Multilingual Understanding316 317![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_multilingual.jpg)318 319### Video Understanding320 321![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_video.jpg)322 323### GUI Tasks324 325![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_gui.jpg)326 327### Embodied Tasks328 329![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_embody.jpg)330 331### SVG Tasks332 333![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_svg.jpg)334 335![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_svg_gen.jpg)336 337## Evaluation on Language Capability338 339![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/performance_text.jpg)340 341## Ablation Study342 343### Cascade Reinforcement Learning344 345![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/ablation_cascade_rl.jpg)346 347![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/ablation_cascade_rl_table.jpg)348 349### Decoupled Vision-Language Deployment350 351 352![image/jpg](https://huggingface.co/OpenGVLab/InternVL3_5-241B-A28B/resolve/main/images/ablation_dvd.jpg)353 354## Quick Start355 356We provide an example code to run `InternVL3.5-8B-HF` using `transformers`. Please note that our models with up to 30B parameters can be deployed on a single A100 GPU, while the 38B model requires two A100 GPUs and the 235B model requires eight A100 GPUs.357 358> In most cases, both [LMDeploy](https://github.com/InternLM/lmdeploy) and [vLLM](https://github.com/vllm-project/vllm) can be used for model deployment. However, for InternVL3.5-20B-A4B, we recommend using vLLM since lmdeploy has not yet supported GPT-OSS.359 360> Please use transformers>=4.52.1 to ensure the model works normally. For the 20B version of our model, transformers>=4.55.0 is required.361 362### Model Loading363 364#### 16-bit (bf16 / fp16)365 366```python367import torch368from transformers import AutoTokenizer, AutoModelForImageTextToText369path = "OpenGVLab/InternVL3_5-8B-HF"370model = AutoModelForImageTextToText.from_pretrained(371    path,372    torch_dtype=torch.bfloat16,373    low_cpu_mem_usage=True,374    use_flash_attn=True,375    trust_remote_code=True).eval().cuda()376```377 378#### BNB 8-bit Quantization379 380```python381import torch382from transformers import AutoTokenizer, AutoModelForImageTextToText383path = "OpenGVLab/InternVL3_5-8B-HF"384model = AutoModelForImageTextToText.from_pretrained(385    path,386    torch_dtype=torch.bfloat16,387    load_in_8bit=True,388    low_cpu_mem_usage=True,389    use_flash_attn=True,390    trust_remote_code=True).eval()391```392 393#### Multiple GPUs394 395```python396import math397import torch398from transformers import AutoTokenizer, AutoModelForImageTextToText399 400path = "OpenGVLab/InternVL3_5-8B-HF"401model = AutoModelForImageTextToText.from_pretrained(402    path,403    torch_dtype=torch.bfloat16,404    low_cpu_mem_usage=True,405    use_flash_attn=True,406    trust_remote_code=True,407    device_map="auto").eval()408```409 410### Thinking Mode411 412To enable thinking mode, please set the system prompt to our Thinking System Prompt. When enabling Thinking mode, we recommend setting `do_sample=True` and `temperature=0.6` to mitigate undesired repetition.413 414```python415R1_SYSTEM_PROMPT = """416You are an AI assistant that rigorously follows this response protocol:417 4181. First, conduct a detailed analysis of the question. Consider different angles, potential solutions, and reason through the problem step-by-step. Enclose this entire thinking process within <think> and </think> tags.419 4202. After the thinking section, provide a clear, concise, and direct answer to the user's question. Separate the answer from the think section with a newline.421 422Ensure that the thinking process is thorough but remains focused on the query. The final answer should be standalone and not reference the thinking section.423""".strip()424 425messages = [426    {427        "role": "system",428        "content": [429            {"type": "text", "text": R1_SYSTEM_PROMPT},430        ],431    },432    {433        "role": "user",434        "content": [435            {"type": "text", "text": "xxx"},436        ],437    },438]439```440 441### Inference with Transformers442 443The HuggingFace format checkpoints of our models are fully consistent with the APIs of the official HuggingFace models. For details, please refer to the official [documentation](https://huggingface.co/docs/transformers/v4.55.4/en/model_doc/internvl).444 445## Finetune446 447Many repositories now support fine-tuning of the InternVL series models, including [InternVL](https://github.com/OpenGVLab/InternVL), [SWIFT](https://github.com/modelscope/ms-swift), [XTuner](https://github.com/InternLM/xtuner), and others. Please refer to their documentation for more details on fine-tuning.448 449## Deployment450 451### LMDeploy452 453LMDeploy is a toolkit for compressing, deploying, and serving LLMs & VLMs.454 455```sh456pip install lmdeploy>=0.9.1457```458 459LMDeploy abstracts the complex inference process of multi-modal Vision-Language Models (VLM) into an easy-to-use pipeline, similar to the Large Language Model (LLM) inference pipeline.460 461#### A 'Hello, world' Example462 463```python464from lmdeploy import pipeline, PytorchEngineConfig465from lmdeploy.vl import load_image466 467image = load_image('https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg')468 469# Please set tp=2 for the 38B version and tp=8 for the 241B-A28B version.470model = 'OpenGVLab/InternVL3_5-8B'471pipe = pipeline(model, backend_config=PytorchEngineConfig(session_len=32768, tp=1))472 473response = pipe(('describe this image', image))474print(response.text)475```476 477#### Multi-images Inference478 479When dealing with multiple images, you can put them all in one list. Keep in mind that multiple images will lead to a higher number of input tokens, and as a result, the size of the context window typically needs to be increased.480 481```python482from lmdeploy import pipeline, PytorchEngineConfig483from lmdeploy.vl import load_image484from lmdeploy.vl.constants import IMAGE_TOKEN485 486# Please set tp=2 for the 38B version and tp=8 for the 241B-A28B version.487model = 'OpenGVLab/InternVL3_5-8B'488pipe = pipeline(model, backend_config=PytorchEngineConfig(session_len=32768, tp=1))489 490image_urls=[491    'https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/demo/resources/human-pose.jpg',492    'https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/demo/resources/det.jpg'493]494 495images = [load_image(img_url) for img_url in image_urls]496# Numbering images improves multi-image conversations497response = pipe((f'Image-1: {IMAGE_TOKEN}\nImage-2: {IMAGE_TOKEN}\ndescribe these two images', images))498print(response.text)499```500 501#### Batch Prompts Inference502 503Conducting inference with batch prompts is quite straightforward; just place them within a list structure:504 505```python506from lmdeploy import pipeline, PytorchEngineConfig507from lmdeploy.vl import load_image508 509# Please set tp=2 for the 38B version and tp=8 for the 241B-A28B version.510model = 'OpenGVLab/InternVL3_5-8B'511pipe = pipeline(model, backend_config=PytorchEngineConfig(session_len=32768, tp=1))512 513image_urls=[514    "https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/demo/resources/human-pose.jpg",515    "https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/demo/resources/det.jpg"516]517prompts = [('describe this image', load_image(img_url)) for img_url in image_urls]518response = pipe(prompts)519print(response)520```521 522#### Multi-turn Conversation523 524There are two ways to do the multi-turn conversations with the pipeline. One is to construct messages according to the format of OpenAI and use above introduced method, the other is to use the `pipeline.chat` interface.525 526```python527from lmdeploy import pipeline, PytorchEngineConfig, GenerationConfig528from lmdeploy.vl import load_image529 530# Please set tp=2 for the 38B version and tp=8 for the 241B-A28B version.531model = 'OpenGVLab/InternVL3_5-8B'532pipe = pipeline(model, backend_config=PytorchEngineConfig(session_len=32768, tp=1))533 534image = load_image('https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/demo/resources/human-pose.jpg')535gen_config = GenerationConfig(top_k=50, top_p=0.95, temperature=0.6, max_new_tokens=8192)536sess = pipe.chat(('describe this image', image), gen_config=gen_config)537print(sess.response.text)538sess = pipe.chat('What is the woman doing?', session=sess, gen_config=gen_config)539print(sess.response.text)540```541 542#### Service543 544LMDeploy's `api_server` enables models to be easily packed into services with a single command. The provided RESTful APIs are compatible with OpenAI's interfaces. Below are an example of service startup:545 546```shell547lmdeploy serve api_server OpenGVLab/InternVL3_5-8B --server-port 23333 --tp 1 --backend pytorch548```549 550To use the OpenAI-style interface, you need to install OpenAI:551 552```shell553pip install openai554```555 556Then, use the code below to make the API call:557 558```python559from openai import OpenAI560 561client = OpenAI(api_key='YOUR_API_KEY', base_url='http://0.0.0.0:23333/v1')562model_name = client.models.list().data[0].id563response = client.chat.completions.create(564    model=model_name,565    messages=[{566        'role':567        'user',568        'content': [{569            'type': 'text',570            'text': 'describe this image',571        }, {572            'type': 'image_url',573            'image_url': {574                'url':575                'https://modelscope.oss-cn-beijing.aliyuncs.com/resource/tiger.jpeg',576            },577        }],578    }],579    temperature=0.8,580    top_p=0.8)581print(response)582```583 584## License585 586This project is released under the apache-2.0 License. This project uses the pre-trained Qwen3 as a component, which is licensed under the apache-2.0 License.587 588## Citation589 590If you find this project useful in your research, please consider citing:591 592```BibTeX593@article{wang2025internvl3_5,594  title={InternVL3.5: Advancing Open-Source Multimodal Models in Versatility, Reasoning, and Efficiency},595  author={Wang, Weiyun and Gao, Zhangwei and Gu, Lixin and Pu, Hengjun and Cui, Long and Wei, Xingguang and Liu, Zhaoyang and Jing, Linglin and Ye, Shenglong and Shao, Jie and others},596  journal={arXiv preprint arXiv:2508.18265},597  year={2025}598}599```600