GraySoft
Projects Models Compare Cloud benchmarks FAQ Download guIDE →
Model Intelligence Sheet

cstr/internvl2.5-2b-crispembed-GGUF overview

InternVL2.5 2B — CrispEmbed GGUF GGUF conversions of OpenGVLab/InternVL2 5 2B https://huggingface.co/OpenGVLab/InternVL2 5 2B for use with CrispEmbed https://g…

ggufocrdocument-understandingvision-language-modelcrispembedimage-text-to-textendezhjakofresptbase_model:OpenGVLab/InternVL2_5-2Bbase_model:quantized:OpenGVLab/InternVL2_5-2Blicense:mitregion:us

Runs locally from ~1.40 GB disk (4 GB VRAM class GPUs with llama.cpp / guIDE).

Downloads
67
Likes
0
Pipeline
image-text-to-text
Author

Repository Files & Downloads

3 GGUF files detected
Direct downloads for local inference
FileTypeQuantizationSizeLink
internvl2.5-2b-f16.ggufGGUFF164.82 GBDownload
internvl2.5-2b-q4_k.ggufGGUFQ4_K1.40 GBDownload
internvl2.5-2b-q8_0.ggufGGUFQ8_02.19 GBDownload

Model Details

Model IDcstr/internvl2.5-2b-crispembed-GGUF
Authorcstr
Pipelineimage-text-to-text
Licensemit
Base modelOpenGVLab/InternVL2_5-2B
Last modified2026-08-02T15:26:31.000Z

Model README

---

license: mit

language:

- en

- de

- zh

- ja

- ko

- fr

- es

- pt

tags:

- ocr

- document-understanding

- vision-language-model

- gguf

- crispembed

base_model: OpenGVLab/InternVL2_5-2B

library_name: gguf

pipeline_tag: image-text-to-text

---

InternVL2.5-2B — CrispEmbed GGUF

GGUF conversions of OpenGVLab/InternVL2_5-2B for use with CrispEmbed.

Model Details

| Property | Value |

|----------|-------|

| Architecture | InternVL2.5 (InternViT-300M + InternLM2.5-1.8B) |

| Total Parameters | ~2.1B |

| Vision Encoder | InternViT-300M-448px (24L, 1024d, 16H, LayerNorm + GELU + LayerScale) |

| Projector | Pixel unshuffle (4:1) + LayerNorm + Linear + GELU + Linear |

| LLM Decoder | InternLM2.5-1.8B-chat (24L, 2048d, GQA 16/8, SwiGLU, RMSNorm) |

| Input Resolution | 448x448 per tile, dynamic tiling (1-12 tiles) |

| License | MIT |

| OCRBench | ~830 (top tier for <3B models) |

Available Quantizations

| File | Size | Compression | Notes |

|------|------|-------------|-------|

| internvl2.5-2b-f16.gguf | 4.9 GB | 1x | Full precision (F16 weights, F32 norms/embeds) |

| internvl2.5-2b-q8_0.gguf | 2.2 GB | 2.2x | Good quality, vision weights at Q8_0 floor |

| internvl2.5-2b-q4_k.gguf | 880 MB | 5.6x | Smallest, vision weights kept at Q8_0 minimum |

Note: Vision encoder weights are kept at Q8_0 minimum even in Q4_K to preserve OCR accuracy. The Q4_K savings come primarily from the LLM decoder.

Usage with CrispEmbed

#include "crispembed.h"

// Auto-detects InternVL2 architecture from GGUF metadata
void *ctx = crispembed_math_ocr_init("internvl2.5-2b-q4_k.gguf", 4);

int len;
const char *text = crispembed_math_ocr_recognize(ctx, pixels, w, h, channels, &len);
printf("%s\n", text);

crispembed_math_ocr_free(ctx);
from crispembed import CrispMathOcr

ocr = CrispMathOcr("internvl2.5-2b-q4_k.gguf")
text = ocr.recognize("document.png")

Parity Verification

All components verified against the Python reference implementation:

| Stage | cos_sim | max_abs_diff |

|-------|---------|--------------|

| vis_patch_embed | 1.000000 | 0.000003 |

| vis_layer_0..3 | 1.000000 | <0.001 |

| vis_proj_output | 1.000000 | 0.000909 |

| llm_embed | 1.000000 | 0.000000 |

| llm_layer_0..1 | 1.000000 | <0.000005 |

Conversion

Converted using models/convert-internvl2-to-gguf.py from CrispEmbed:

python models/convert-internvl2-to-gguf.py \
    --model OpenGVLab/InternVL2_5-2B \
    --output internvl2.5-2b-f16.gguf --dtype f16

# Then quantize with the C++ quantizer:
./crispembed-quantize internvl2.5-2b-f16.gguf internvl2.5-2b-q8_0.gguf q8_0
./crispembed-quantize internvl2.5-2b-f16.gguf internvl2.5-2b-q4_k.gguf q4_k

Architecture

Image (448x448 per tile, 1-12 tiles)
  → Conv2D patch embed (14x14, stride 14) → 1024 patches
  → Prepend CLS + position embedding
  → 24x InternViT blocks (LayerNorm → MHSA → LayerScale → residual
                           LayerNorm → GELU MLP → LayerScale → residual)
  → Remove CLS → pixel unshuffle (4:1, 1024→256 tokens, dim 1024→4096)
  → LayerNorm → Linear(4096→2048) → GELU → Linear(2048→2048)
  → Splice into text token sequence
  → 24x InternLM2.5 blocks (RMSNorm → GQA(16/8) + RoPE → residual
                              RMSNorm → SwiGLU FFN → residual)
  → RMSNorm → LM head → logits → greedy decode

Credits

Provenance and EU AI Act Art. 53 note

  • Upstream model: OpenGVLab/InternVL2_5-2B — published by OpenGVLab.
  • Upstream licence: mit. This repository redistributes under the same terms; it grants no rights the upstream licence does not.
  • What was done here: format conversion and/or quantisation only (GGUF). No training, no fine-tuning, no merging, no distillation, no change to architecture, vocabulary or capability. Only the numeric representation of the upstream weights differs.
  • Training data: documented — where it is documented at all — by the upstream provider; see the upstream model card. No training data was used, added or selected by this repository.
  • Provider status: under Regulation (EU) 2024/1689 the upstream authors remain the provider of this model. Converting the serialisation format does not make this repository the provider of a new general-purpose AI model, and no such claim is made. Questions about training content, copyright policy or model capability belong upstream.

Run cstr/internvl2.5-2b-crispembed-GGUF with guIDE

Download guIDE — the AI-native code editor with local LLM inference and 69 built-in tools.

Download guIDE → · Browse 524k+ models · Compare models

Source: Hugging Face · Compare models