This is a randomly initialized tiny model based on openbmb/MiniCPM-OCR-1.0 for testing and debugging.

Feature Source This repo
Checkpoint tensor elements 1.30B BF16 7.58M BF16
Safetensors weight files 2.60 GB (model.safetensors) 15.18 MB (model.safetensors)
Architecture / input MiniCPM-OCR; text and document image Same
Vocabulary rows / tied embeddings 248,100 / tied Same
Backbone layers / layer cadence 24 / six 3-linear + 1-full cycles 8 / two complete cycles
Hidden width / MLP width 1,024 / 3,584 16 / 32
Q heads / KV heads / head dimension 8 / 2 / 256 Same
Linear-attention key/value heads and dimensions 16/16, 128/128 Same
Vision layers / width / insert merger 27 / 1,152 / after layer 6 4 / 128 / after layer 2
Visual downsampling 4x Same
M-RoPE sections 11/11/10; partial 0.25 sections 11/11/10; partial 0.25
MTP disabled Same
Checkpoint precision BF16 Same

The tokenizer embedding and output head stay tied, so the checkpoint contains one BF16 token table. Two complete linear/linear/linear/full cycles are retained. The Qwen3.5 linear-attention path requires CUDA and Triton. The exact public snippet was verified on an NVIDIA A800-SXM4-80GB.

File path Size
model.safetensors 15.2MB

Example usage

Transformers (โœ… verified)

The Qwen3.5 linear-attention path requires CUDA and Triton. Install transformers[torch]>=5.21.0 and Pillow.

def run_transformers(model_id: str):
    import torch
    from PIL import Image, ImageDraw
    from transformers import AutoModelForImageTextToText, AutoProcessor

    model_id = str(model_id)
    processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
    model = AutoModelForImageTextToText.from_pretrained(
        model_id,
        dtype=torch.bfloat16,
        device_map="cuda",
        attn_implementation="sdpa",
    )
    image = Image.new("RGB", (448, 448), "white")
    ImageDraw.Draw(image).text((20, 20), "Hello OCR", fill="black")
    messages = [
        {
            "role": "user",
            "content": [
                {"type": "image", "image": image},
                {"type": "text", "text": "Read this document."},
            ],
        }
    ]
    inputs = processor.apply_chat_template(
        messages,
        tokenize=True,
        add_generation_prompt=True,
        return_dict=True,
        return_tensors="pt",
        downsample_mode="4x",
        max_slice_nums=1,
        use_image_id=False,
    ).to(model.device)
    with torch.no_grad():
        logits = model(**inputs).logits
        assert torch.isfinite(logits).all()
        output = model.generate(**inputs, downsample_mode="4x", do_sample=False, max_new_tokens=10)
    print(processor.decode(output[0, inputs["input_ids"].shape[1] :], skip_special_tokens=True))


if __name__ == "__main__":
    run_transformers(model_id="tiny-random/minicpm-ocr-1.0")

Creating this repo

Change log

  • 2026-11-01: Initial tiny MiniCPM-OCR 1.0 checkpoint.

This repo is generated by DeepSeek-V4.1-Flash.

Downloads last month
19
Safetensors
Model size
7.58M params
Tensor type
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for tiny-random/minicpm-ocr-1.0

Finetuned
(5)
this model

Collection including tiny-random/minicpm-ocr-1.0