alt.freeweights.granite / granite-docling-258M-mlx
From: ibm-granite <huggingface.co/ibm-granite>Newsgroups: alt.freeweights.graniteSubject:

granite-docling-258M-mlx

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

Image text to text model with 315M parameters. Safetensors weights, 640 MB in all. Published by ibm-granite under Apache-2.0.

315M params640MBgranite-docling-258M-mlxsafetensorspermissive
FactsParams315MSize640 MBFormatssafetensorsTaskimage text to textLicenseApache-2.0From sourcepermissive
$ fw get ibm-granite/granite-docling-258M-mlx
# manifest sha256 974909357658… · 640 MB · 15 files
$ fw verify ./granite-docling-258M-mlx ibm-granite/granite-docling-258M-mlx
From sourceHosted (signed)ibm-granite/granite-docling-258M-mlxLast check: 2026-11-15 03:21 UTC

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

Fine-tune of granite-docling-258M.

Works with

Overview

Size
640 MB
Weights
631 MB (safetensors)
Parameters
315M
Formats
safetensors
Task
image text to text
License
Apache-2.0 (permissive)
Files
15, 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-docling-258M

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:21 UTCpassed

Model card

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

granite-docling-258M-mlx#

Image: Granite Docling Logo

Granite Docling is a multimodal Image-Text-to-Text model engineered for efficient document conversion. It preserves the core features of Docling while maintaining seamless integration with DoclingDocuments to ensure full compatibility.

This model was converted to MLX format from ibm-granite/granite-docling-258M using mlx-vlm version 0.3.3. Refer to the original model card for more details on the model.

💡 This MLX model is optimized to run efficiently on Apple Silicon Macs.

How to use this model with Docling#

If you run through 🐥Docling, it will automatically choose the MLX version of the Granite-Docling model. You can select it with the CLI options shown below:

# Convert to HTML and Markdown:
docling --to html --to md --pipeline vlm --vlm-model granite_docling "https://arxiv.org/pdf/2501.17887" # accepts files, urls or directories

# Convert to HTML including layout visualization:
docling --to html_split_page --show-layout --pipeline vlm --vlm-model granite_docling "https://arxiv.org/pdf/2501.17887"

Image: GraniteDocling result in split page view

How to use this model with bare mlx-vlm#

You can also run plain mlx-vlm to generate predictions.

To run with the mlx-vlm CLI, use this command:

pip install mlx_vlm 
python -m mlx_vlm.generate --model ibm-granite/granite-docling-258M-mlx --max-tokens 4096 --temperature 0.0 --prompt "Convert this page to docling." --image <path_to_image>

To run with the mlx-vlm python SDK, parse the output as a DoclingDocument and export to various formats (e.g. Markdown, HTML), please refer to the code below.

# /// script
# requires-python = ">=3.12"
# dependencies = [
#     "docling-core",
#     "mlx-vlm", 
#     "pillow",
#     "transformers",
# ]
# ///

import webbrowser
from pathlib import Path

from docling_core.types.doc import ImageRefMode
from docling_core.types.doc.document import DocTagsDocument, DoclingDocument
from mlx_vlm import load, stream_generate
from mlx_vlm.prompt_utils import apply_chat_template
from mlx_vlm.utils import load_config
from transformers.image_utils import load_image

# Configuration
MODEL_PATH = "ibm-granite/granite-docling-258M-mlx"
PROMPT = "Convert this page to docling."
SHOW_IN_BROWSER = True

# Sample images (pick one...)
# SAMPLE_IMAGE = "https://huggingface.co/ibm-granite/granite-docling-258M/resolve/main/assets/new_arxiv.png"
# SAMPLE_IMAGE = "https://ibm.biz/docling-page-with-list"
SAMPLE_IMAGE = "https://ibm.biz/docling-page-with-table"

# Load model and processor
print("Loading model...")
model, processor = load(MODEL_PATH)
config = load_config(MODEL_PATH)

# Prepare input image and prompt
print("Preparing input...")
pil_image = load_image(SAMPLE_IMAGE)
formatted_prompt = apply_chat_template(processor, config, PROMPT, num_images=1)

# Generate DocTags output
print("Generating DocTags...\n")
output = ""
for token in stream_generate(
    model, processor, formatted_prompt, [pil_image], max_tokens=4096, verbose=False
):
    output += token.text
    print(token.text, end="")
    if "</doctag>" in token.text:
        break

print("\n\nProcessing output...")

# Create DoclingDocument from generated DocTags
doctags_doc = DocTagsDocument.from_doctags_and_image_pairs([output], [pil_image])
doc = DoclingDocument.load_from_doctags(doctags_doc, document_name="Sample Document")

# Export to different formats
print("\nMarkdown output:\n")
print(doc.export_to_markdown())

# Save as HTML with embedded images
output_path = Path("./output.html") 
doc.save_as_html(output_path, image_mode=ImageRefMode.EMBEDDED)
print(f"\nHTML saved to: {output_path}")

# Open in browser
if SHOW_IN_BROWSER:
    webbrowser.open(f"file:///{str(output_path.resolve())}")    

Files

15 files · 640 MBWeights 631 MB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 15 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
README.md4.59 KB1aeb67f19678696c7ec6649cc4150a73c06fc2c0f216907943003c4a8d765ddf
added_tokens.json35 B882e49757a3bea90e00df1d2dc8c18b2b526ff77380db20439feeb1f053a63cd
chat_template.jinja588 Ba4b0bf4348b014acca131da664d05b61e39d5dc8af980f1913846a57ccc6d289
config.json6.87 KBe5bfa734fb892953ee7eb69a378ad7cb52a66e046d46efc8987c450cfa122009
generation_config.json169 Be90fc149327adfa563401b852408345a7f8415e576878e016de778b38818cac0
merges.txt917 KBb6fe424e334903f7fb84d3a106d9730455f4744b9fe3c21ee136d97a00e72502
model.safetensors631 MBb0891fbbf7a634d3e778e2dadb9c972fa1a516eff88cb1b09452ed7f32c962ae
model.safetensors.index.json38.1 KB576c0aaed5b79fc9d6dda76a5388c42026c4e9176f196c6df68f512a84a42f7c
preprocessor_config.json486 B6cb6e36d6fcb88ca1502c4a26750715dc3e7dedddc9a8f17b27d8d167d1457e7
processor_config.json68 Be7bff42da73ae9eec9042ef20e066e11f1ee20f025358ff79131e3c0fb549b46
special_tokens_map.json1.08 KB3e1c6950fd5624d1e6d60eea7110882c9743e37fa643364e17094466331e1cb5
tokenizer.json7.15 MB43de7f0b77e8ac9d1d39f21780281e209f6d4c3b2b18ab4c5c8eba66827ce8cd
tokenizer_config.json18.0 KBef21bfa4e14b96b54e9358a4a8e48a0aa1e07256304c9f51a088ce13dfd3105b
vocab.json1.61 MBe2bad0ce74e6ddfece426ef99e18067f4a6c3d4e65bb6dd9cfd638450cca0142
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
e9939db25d pinned now2026-11-15 03:21 UTC15 files · 640 MB

Use it

$ fw get ibm-granite/granite-docling-258M-mlx
# manifest sha256 974909357658… · 640 MB · 15 files
$ fw verify ./granite-docling-258M-mlx ibm-granite/granite-docling-258M-mlx
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-docling-258M-mlx.json --dir ./granite-docling-258M-mlx $ python3 fw.py verify ./granite-docling-258M-mlx ./ibm-granite__granite-docling-258M-mlx.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ibm-granite/granite-docling-258M-mlx --revision e9939db25d2f296c8678d0491c4609a8c596c50a --local-dir ./granite-docling-258M-mlx
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-docling-258M-mlx", revision="e9939db25d2f296c8678d0491c4609a8c596c50a") model = AutoModelForImageTextToText.from_pretrained("ibm-granite/granite-docling-258M-mlx", revision="e9939db25d2f296c8678d0491c4609a8c596c50a", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve ibm-granite/granite-docling-258M-mlx --revision e9939db25d2f296c8678d0491c4609a8c596c50a

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
1aeb67f19678696c7ec6649cc4150a73c06fc2c0f216907943003c4a8d765ddf
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-docling-258M-mlxDate: 2026-11-15Commit: e9939dbSigned: 2DC28CC7B26A283B ✓
Upstream
ibm-granite/granite-docling-258M-mlx
Pinned commit
e9939db25d2f296c8678d0491c4609a8c596c50a
Manifest
granite-docling-258M-mlx.json · .minisig
Manifest sha256
974909357658c1fcb136005439f7783c1587ba0e452d501e2090d5db1ec3ee27
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 03:21 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/ibm-granite/granite-docling-258M-mlx.json $ curl -O https://freeweights.allternit.com/manifests/ibm-granite/granite-docling-258M-mlx.json.minisig $ minisign -Vm granite-docling-258M-mlx.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-docling-258M · 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-docling-258M-mlx
Open in Freeweights Studio

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

Signed manifest
minisign, key 2DC28CC7B26A283B. granite-docling-258M-mlx.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