alt.freeweights.granite / granite-vision-3.1-2b-preview
From: ibm-granite <huggingface.co/ibm-granite>Newsgroups: alt.freeweights.graniteSubject:

granite-vision-3.1-2b-preview

Date: 2026-11-15Commit: bd1c154Signed: 2DC28CC7B26A283B ✓

Image text to text model with 3B parameters. Safetensors weights, 11.9 GB in all. Published by ibm-granite under Apache-2.0.

3B params11.9GBgranite-vision-3.1-2b-previewsafetensorspermissive
FactsParams3BSize11.9 GBFormatssafetensorsTaskimage text to textLicenseApache-2.0From sourcepermissive
$ fw get ibm-granite/granite-vision-3.1-2b-preview
# manifest sha256 82355d2801a3… · 11.9 GB · 17 files
$ fw verify ./granite-vision-3.1-2b-preview ibm-granite/granite-vision-3.1-2b-preview
From sourceHosted (signed)ibm-granite/granite-vision-3.1-2b-previewLast check: 2026-11-15 03:27 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Fine-tune of granite-3.1-2b-instruct.

Works with

Overview

Size
11.9 GB
Weights
11.9 GB (safetensors)
Parameters
3B
Formats
safetensors
Task
image text to text
License
Apache-2.0 (permissive)
Files
17, each with a sha256
Publisher
ibm-granite
Added
2026-11-15
Section
alt.freeweights.granite
Lineage

Original release from the publisher.

Base model: ibm-granite/granite-3.1-2b-instruct

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 03:27 UTCpassed

Model card

From the publisher at commit bd1c154. Shown as plain text with links; images open at the publisher.

granite-vision-3.1-2b-preview#

Model Summary: granite-vision-3.1-2b-preview is a compact and efficient vision-language model, specifically designed for visual document understanding, enabling automated content extraction from tables, charts, infographics, plots, diagrams, and more. The model was trained on a meticulously curated instruction-following dataset, comprising diverse public datasets and synthetic datasets tailored to support a wide range of document understanding and general image tasks. It was trained by fine-tuning a Granite large language model (https://huggingface.co/ibm-granite/granite-3.1-2b-instruct) with both image and text modalities.

Note:

We denote our model as Granite-Vision-3.1-2B-Preview, where the version 3.1 and size 2B of the base large language model are explicitly indicated. However, when considering the integrated vision encoder and projector, the total parameter count of our model increases to 3 billion parameters.

Evaluations:

We evaluated Granite Vision 3.1 alongside other vision-language models (VLMs) in the 1B-4B parameter range using the standard llms-eval benchmark. The evaluation spanned multiple public benchmarks, with particular emphasis on document understanding tasks while also including general visual question-answering benchmarks.

Molmo-EInternVL2Phi3vPhi3.5vGranite Vision
Document benchmarks
DocVQA0.660.870.870.880.88
ChartQA0.600.750.810.820.86
TextVQA0.620.720.690.70.76
AI2D0.630.740.790.790.78
InfoVQA0.440.580.550.610.63
OCRBench0.650.750.640.640.75
LiveXiv VQA0.470.510.61-0.61
LiveXiv TQA0.360.380.48-0.55
Other benchmarks
MMMU0.320.350.420.440.35
VQAv20.570.750.760.770.81
RealWorldQA0.550.340.600.580.65
VizWiz VQA0.490.460.570.570.64
OK VQA0.400.440.510.530.57

Supported Languages: English

Intended Use: The model is intended to be used in enterprise applications that involve processing visual and text data. In particular, the model is well-suited for a range of visual document understanding tasks, such as analyzing tables and charts, performing optical character recognition (OCR), and answering questions based on document content. Additionally, its capabilities extend to general image understanding, enabling it to be applied to a broader range of business applications. For tasks that exclusively involve text-based input, we suggest using our Granite large language models, which are optimized for text-only processing and offer superior performance compared to this model.

Generation:#

Granite Vision model is supported natively transformers from the main branch. Below is a simple example of how to use the granite-vision-3.1-2b-preview model.

Usage with transformers#

First, make sure to build the latest version of transformers:

pip install transformers>=4.49

Then run the code:

from transformers import AutoProcessor, AutoModelForVision2Seq
from huggingface_hub import hf_hub_download
import torch

device = "cuda" if torch.cuda.is_available() else "cpu"

model_path = "ibm-granite/granite-vision-3.1-2b-preview"
processor = AutoProcessor.from_pretrained(model_path)
model = AutoModelForVision2Seq.from_pretrained(model_path).to(device)

# prepare image and text prompt, using the appropriate prompt template

img_path = hf_hub_download(repo_id=model_path, filename='example.png')

conversation = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": img_path},
            {"type": "text", "text": "What is the highest scoring model on ChartQA and what is its score?"},
        ],
    },
]
inputs = processor.apply_chat_template(
    conversation,
    add_generation_prompt=True,
    tokenize=True,
    return_dict=True,
    return_tensors="pt"
).to(device)


# autoregressively complete prompt
output = model.generate(**inputs, max_new_tokens=100)
print(processor.decode(output[0], skip_special_tokens=True))
Usage with vLLM#

The model can also be loaded with vLLM. First make sure to install the following libraries:

pip install torch torchvision torchaudio
pip install vllm==0.6.6

Then, copy the snippet from the section that is relevant for your use case.

from vllm import LLM, SamplingParams
from vllm.assets.image import ImageAsset
from huggingface_hub import hf_hub_download
from PIL import Image

model_path = "ibm-granite/granite-vision-3.1-2b-preview"

model = LLM(
    model=model_path,
    limit_mm_per_prompt={"image": 1},
)

sampling_params = SamplingParams(
    temperature=0.2,
    max_tokens=64,
)

# Define the question we want to answer and format the prompt
image_token = "<image>"
system_prompt = "<|system|>\nA chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions.\n"

question = "What is the highest scoring model on ChartQA and what is its score?"
prompt = f"{system_prompt}<|user|>\n{image_token}\n{question}\n<|assistant|>\n"
img_path = hf_hub_download(repo_id=model_path, filename='example.png')
image = Image.open(img_path).convert("RGB")
print(image)

# Build the inputs to vLLM; the image is passed as `multi_modal_data`.
inputs = {
    "prompt": prompt,
    "multi_modal_data": {
        "image": image,
    }
}

outputs = model.generate(inputs, sampling_params=sampling_params)
print(f"Generated text: {outputs[0].outputs[0].text}")
Fine-tuning#

For an example of fine-tuning Granite Vision for new tasks refer to this notebook.

Model Architecture:

The architecture of granite-vision-3.1-2b-preview consists of the following components:

(1) Vision encoder: SigLIP (https://huggingface.co/docs/transformers/en/model_doc/siglip).

(2) Vision-language connector: two-layer MLP with gelu activation function.

(3) Large language model: granite-3.1-2b-instruct with 128k context length (https://huggingface.co/ibm-granite/granite-3.1-2b-instruct).

We built upon LLaVA (https://llava-vl.github.io) to train our model. We use multi-layer encoder features and a denser grid resolution in AnyRes to enhance the model's ability to understand nuanced visual content, which is essential for accurately interpreting document images.

Training Data:

Overall, our training data is largely comprised of two key sources: (1) publicly available datasets (2) internally created synthetic data targeting specific capabilities including document understanding tasks. A detailed attribution of datasets can be found in the technical report.

Infrastructure: We train Granite Vision using IBM's super computing cluster, Blue Vela, which is outfitted with NVIDIA H100 GPUs. This cluster provides a scalable and efficient infrastructure for training our models over thousands of GPUs.

Ethical Considerations and Limitations: The use of Large Vision and Language Models involves risks and ethical considerations people must be aware of, including but not limited to: bias and fairness, misinformation, and autonomous decision-making. granite-vision-3.1-2b-preview is not the exception in this regard. Although our alignment processes include safety considerations, the model may in some cases produce inaccurate, biased, or unsafe responses to user prompts. Additionally, it remains uncertain whether smaller models might exhibit increased susceptibility to hallucination in generation scenarios due to their reduced sizes, which could limit their ability to generate coherent and contextually accurate responses. This aspect is currently an active area of research, and we anticipate more rigorous exploration, comprehension, and mitigations in this domain. Regarding ethics, a latent risk associated with all Large Language Models is their malicious utilization. We urge the community to use granite-vision-3.1-2b-preview with ethical intentions and in a responsible way. We recommend using this model for document understanding tasks, and note that more general vision tasks may pose higher inherent risks of triggering biased or harmful output. To enhance safety, we recommend using granite-vision-3.1-2b-preview alongside Granite Guardian. Granite Guardian is a fine-tuned instruct model designed to detect and flag risks in prompts and responses across key dimensions outlined in the IBM AI Risk Atlas. Its training, which includes both human-annotated and synthetic data informed by internal red-teaming, enables it to outperform similar open-source models on standard benchmarks, providing an additional layer of safety.

Resources

Files

17 files · 11.9 GBWeights 11.9 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 17 files with their sha256
FileSizesha256
.gitattributes1.57 KB9cc0b3784b2bfd0bb14566f3bfc31da21fc5e50ea7b99097b816cd984edaa800
README.md9.87 KB961b8aa2adf5951b2fcdc647af99b477b9214d0fc957eeed08d2a29734d54150
added_tokens.json116 B33a5db111f0a91eb45348ffae43b0f6e835207eb6c91855403933a0f9be034f8
chat_template.json1.64 KB01722606d1ec94b94fd49473713c9e9fe515bbd8bd2781455cb33239860d65fb
config.json3.11 KB664868fe56c60c951877817f4a3609b8e30d5407a737ebe89f6970569772ddef
example.png361 KBa0c3f506c1e19910b0bf30ba14159f1f3f30f8702c7dc5d6000d338b5c6c66bd
generation_config.json137 B334741599c0d52b5034cf8aeab660ee1be9657bf9c1c9fc2e6a499b292920274
merges.txt442 KB303127a244b0078878156c17229f36d11b7a3a3f8e47b7cfdbb304ff46be5030
model-00001-of-00002.safetensors10.00 GB5061cf672feac4b339590159adaebaadce361265630b03c2f8da196fca04105a
model-00002-of-00002.safetensors1.90 GB688c97db6cb7494e3293ebaa45426c734e93fc12db2eac0129ee3f92618639f4
model.safetensors.index.json86.4 KBcc8282f68b926187ff683d560dd422d725900180a3f05f60e4439a807cdcd037
preprocessor_config.json1.99 KBa0359867bfde1e2806f2053d1de4c2536ce98afb237965bb13d1e9e0fadf045d
processor_config.json115 B858c688d0d0f53babcfc65ef75e1c2869e1ec6b2fca0b9842c7a1bff71f7de10
special_tokens_map.json701 B596d752bf46f5cace1f6826b52ed7d913347a4eea0ecce8ab2f869471ca40369
tokenizer.json2.06 MB38ddfe9691449c2d2396db6eaa3b9bb3f859b600584b628575c794af14b8a576
tokenizer_config.json6.97 KB711df3b3a390deb0b4d4cc266e7d67f0e6e4fef742a5dc4b85ba5501d0221527
vocab.json777 KB80ab859339a2525fdfbda14bc39df02dffb824aefdaf86426217bbb146d17e01
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
bd1c154ecb pinned now2026-11-15 03:27 UTC17 files · 11.9 GB

Use it

$ fw get ibm-granite/granite-vision-3.1-2b-preview
# manifest sha256 82355d2801a3… · 11.9 GB · 17 files
$ fw verify ./granite-vision-3.1-2b-preview ibm-granite/granite-vision-3.1-2b-preview
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/ibm-granite/granite-vision-3.1-2b-preview.json --dir ./granite-vision-3.1-2b-preview $ python3 fw.py verify ./granite-vision-3.1-2b-preview ./ibm-granite__granite-vision-3.1-2b-preview.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ibm-granite/granite-vision-3.1-2b-preview --revision bd1c154ecbfe454f9df6b7610cbb9102ac8637f6 --local-dir ./granite-vision-3.1-2b-preview
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForImageTextToText, AutoProcessor processor = AutoProcessor.from_pretrained("ibm-granite/granite-vision-3.1-2b-preview", revision="bd1c154ecbfe454f9df6b7610cbb9102ac8637f6") model = AutoModelForImageTextToText.from_pretrained("ibm-granite/granite-vision-3.1-2b-preview", revision="bd1c154ecbfe454f9df6b7610cbb9102ac8637f6", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve ibm-granite/granite-vision-3.1-2b-preview --revision bd1c154ecbfe454f9df6b7610cbb9102ac8637f6

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
961b8aa2adf5951b2fcdc647af99b477b9214d0fc957eeed08d2a29734d54150
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: ibm-granite <huggingface.co/ibm-granite>Newsgroups: alt.freeweights.graniteSubject: granite-vision-3.1-2b-previewDate: 2026-11-15Commit: bd1c154Signed: 2DC28CC7B26A283B ✓
Upstream
ibm-granite/granite-vision-3.1-2b-preview
Pinned commit
bd1c154ecbfe454f9df6b7610cbb9102ac8637f6
Manifest
granite-vision-3.1-2b-preview.json · .minisig
Manifest sha256
82355d2801a38b1728ccb99b16b7e12b7ad510024a969b9404887b39bcc0c62a
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 03:27 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/ibm-granite/granite-vision-3.1-2b-preview.json $ curl -O https://freeweights.allternit.com/manifests/ibm-granite/granite-vision-3.1-2b-preview.json.minisig $ minisign -Vm granite-vision-3.1-2b-preview.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

ibm-granite/granite-3.1-2b-instruct · this model is a finetune of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ibm-granite/granite-vision-3.1-2b-preview
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. granite-vision-3.1-2b-preview.json. Provenance. Takedown history: none.
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.Edu.seed1
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.Edu.seed2
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.Edu.seed3
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.seed1
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.seed2
From: ibm-granite <huggingface.co/ibm-granite>Subject: GneissWeb.7B_ablation_model_on_350B_FineWeb.seed3