Model reference · open weights

InternVL-5

LLMs OpenGVLab Vision + text 2 builds Open weights 10k dl/mo

InternVL-5 is an open-weight language model from OpenGVLab. InternVL-Chat-V1-5-AWQ (AWQ) weighs 23.3 GB; the smallest configuration that runs it is 2× RTX 4060 Ti 16 GB.

  • InternVL-5 is an open-source multimodal large language model developed by OpenGVLab for image-text-to-text tasks.
  • The model features 25.5B parameters and supports multilingual inputs, including English and Chinese.
  • It is released under the MIT license and utilizes a dynamic high-resolution architecture that processes images up to 4K resolution.

Summary of the OpenGVLab/InternVL-Chat-V1-5 model card, 2026-10-01. The estimate below is for another build of the family.

What it is

Released byOpenGVLab
Released2024-04-18
Parameters25.5B
VRAM23.3 GB for the weights

What it runs on

Memory and cards for InternVL-Chat-V1-5-AWQ (AWQ)

23.3 GBweights, file size
197 MBcache per 1K tokens
2.0 GBruntime overhead, at least
32,768 tokenscontext max
CardRequests at onceContext maxMemory
8K each32K each
RTX 3060 12 GB … RTX 4090 24 GB
4 smaller cards
———
RTX 5090 32 GB3—28K31.0 GB
L40S 48 GB112all 32K44.0 GB
A100 80 GB328all 32K78.2 GB
H100 80 GB307all 32K78.1 GB
RTX PRO 6000 Blackwell 96 GB4010all 32K93.8 GB
DGX Spark (GB10) 128 GB unified4812all 32K107 GB
H200 141 GB6716all 32K138 GB
B200 180 GB9022all 32K176 GB
2× RTX 4060 Ti 16 GB
tensor parallel
2—16K15.4 GB a card
2× RTX 4090 24 GB
tensor parallel
112all 32K23.4 GB a card
2× RTX 3090 24 GB
tensor parallel
123all 32K23.4 GB a card
2× RTX 5090 32 GB
tensor parallel
215all 32K31.0 GB a card
Memory needed at each load
Requests at once8K tokens each32K tokens each
127.0 GB31.8 GB
533.4 GB57.6 GB
838.2 GB76.9 GB
1651.1 GB128 GB
3276.9 GB232 GB
64128 GB438 GB

One card, with vLLM's small-card settings.

Builds

Sizes, precisions & builds

BuildParamsPrecisionWeightsSmallest setup
InternVL-Chat-V1-5 ↗ 25.5BBF16 51.0 GBH100 80 GB
InternVL-Chat-V1-5-AWQ (above) ↗ 9.3BAWQ 23.3 GB2× RTX 4060 Ti 16 GB

From the model card

What OpenGVLab says about InternVL-5

Read the model card

[📂 GitHub] [📜 InternVL 1.0] [📜 InternVL 1.5] [📜 Mini-InternVL] [📜 InternVL 2.5]

[🆕 Blog] [🗨️ Chat Demo] [🤗 HF Demo] [🚀 Quick Start] [📖 Documents]

Introduction

Two interns holding hands, symbolizing the integration of InternViT and InternLM.

We introduce InternVL 1.5, an open-source multimodal large language model (MLLM) to bridge the capability gap between open-source and proprietary commercial models in multimodal understanding.

We introduce three simple designs:

  1. Strong Vision Encoder: we explored a continuous learning strategy for the large-scale vision foundation model---InternViT-6B, boosting its visual understanding capabilities, and making it can be transferred and reused in different LLMs.
  2. Dynamic High-Resolution: we divide images into tiles ranging from 1 to 40 of 448 × 448 pixels according to the aspect ratio and resolution of the input images, which supports up to 4K resolution input during inference.
  3. High-Quality Bilingual Dataset: we carefully collected a high-quality bilingual dataset that covers common scenes, document images, and annotated them with English and Chinese question-answer pairs, significantly enhancing performance in OCR- and Chinese-related tasks.

Model Details

  • Model Type: multimodal large language model (MLLM)

  • Model Stats:

  • Training Strategy:

    • Learnable component in the pre-training stage: ViT + MLP
    • Learnable component in the fine-tuning stage: ViT + MLP + LLM
    • For more details on training hyperparameters, please see our blog.

Architecture

Performance

  • We simultaneously use InternVL and VLMEvalKit repositories for model evaluation. Specifically, the results reported for DocVQA, ChartQA, InfoVQA, TextVQA, MME, AI2D, MMBench, CCBench, MMVet, and SEED-Image were tested using the InternVL repository. OCRBench, RealWorldQA, HallBench, and MathVista were evaluated using the VLMEvalKit.

Limitations: Although we have made efforts to ensure the safety of the model during the training process and to encourage the model to generate text that complies with ethical and legal requirements, the model may still produce unexpected outputs due to its size and probabilistic generation paradigm. For example, the generated responses may contain biases, discrimination, or other harmful content. Please do not propagate such content. We are not responsible for any consequences resulting from the dissemination of harmful information.

Examples

Quick Start

We provide an example code to run InternVL-Chat-V1-5 using transformers.

Please use transformers>=4.37.2 to ensure the model works normally.

Model Loading

16-bit (bf16 / fp16)
import torch
from transformers import AutoTokenizer, AutoModel
path = "OpenGVLab/InternVL-Chat-V1-5"
model = AutoModel.from_pretrained(
    path,
    torch_dtype=torch.bfloat16,
    low_cpu_mem_usage=True,
    use_flash_attn=True,
    trust_remote_code=True).eval().cuda()
BNB 8-bit Quantization
import torch
from transformers import AutoTokenizer, AutoModel
path = "OpenGVLab/InternVL-Chat-V1-5"
model = AutoModel.from_pretrained(
    path,
    torch_dtype=torch.bfloat16,
    load_in_8bit=True,
    low_cpu_mem_usage=True,
    use_flash_attn=True,
    trust_remote_code=True).eval()
BNB 4-bit Quantization

⚠️ Warning: Due to significant quantization errors with BNB 4-bit quantization on InternViT-6B, the model may produce nonsensical outputs and fail to understand images. Therefore, please avoid using BNB 4-bit quantization.

Multiple GPUs

The reason for writing the code this way is to avoid errors that occur during multi-GPU inference due to tensors not being on the same device. By ensuring that the first and last layers of the large language model (LLM) are on the same device, we prevent such errors.

import math
import torch
from transformers import AutoTokenizer, AutoModel

def split_model(model_name):
    device_map = {}
    world_size = torch.cuda.device_count()
    num_layers = {'Mini-InternVL-2B-V1-5': 24, 'Mini-InternVL-4B-V1-5': 32, 'InternVL-Chat-V1-5': 48}[model_name]
    # Since the first GPU will be used for ViT, treat it as half a GPU.
    num_layers_per_gpu = math.ceil(num_layers / (world_size - 0.5))
    num_layers_per_gpu = [num_layers_per_gpu] * world_size
    num_layers_per_gpu[0] = math.ceil(num_layers_per_gpu[0] * 0.5)
    layer_cnt = 0
    for i, num_layer in enumerate(num_layers_per_gpu):
        for j in range(num_layer):
            device_map[f'language_model.model.layers.{layer_cnt}'] = i
            layer_cnt += 1
    device_map['vision_model'] = 0
    device_map['mlp1'] = 0
    device_map['language_model.model.tok_embeddings'] = 0
    device_map['language_model.model.embed_tokens'] = 0
    device_map['language_model.output'] = 0
    device_map['language_model.model.norm'] = 0
    device_map['language_model.model.rotary_emb'] = 0
    device_map['language_model.lm_head'] = 0
    device_map[f'language_model.model.layers.{num_layers - 1}'] = 0

    return device_map

path = "OpenGVLab/InternVL-Chat-V1-5"
device_map = split_model('InternV

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms