CoolFace
Modelpublic

mingyi456/DeepSeek-OCR-DF11

sourceHugging Facemitupdated 10mo agoView on Hugging Face
1likes18downloads
Model Card

Note: I made a mistake with the initial upload, and some tensors were initially not compressed, so I temporarily made the model private while I regenerated and uploaded the fixed version. If you downloaded the earlier version of the weights, please redownload them. The fixed version of the weights is ~200 MB smaller than before.

Update: Found and fixed another minor error, which saves a further ~0.16 MB in disk space.

For more information (including how to compress models yourself), check out https://huggingface.co/DFloat11 and https://github.com/LeanModels/DFloat11

Feel free to request for other models for compression as well (for either the diffusers library, ComfyUI, or any other model), although models that use architectures which are unfamiliar to me might be more difficult.

How to Use

transformers
  1. 1.Install the DFloat11 pip package (installs the CUDA kernel automatically; requires a CUDA-compatible GPU and PyTorch installed):
bash
    pip install dfloat11[cuda12]
    # or if you have CUDA version 11:
    # pip install dfloat11[cuda11]
    pip install transformers==4.46.3
    
2. To use the DFloat11 model, run the following example code in Python:

from transformers import AutoModel, AutoTokenizer from dfloat11 import DFloat11Model import torch import os os.environ["CUDAVISIBLEDEVICES"] = '0' model_name = 'deepseek-ai/DeepSeek-OCR'

tokenizer = AutoTokenizer.frompretrained(modelname, trustremotecode=True) model = AutoModel.frompretrained(modelname, attnimplementation='flashattention2', trustremotecode=True, usesafetensors=True) model = model.eval().to(torch.bfloat16) # Casting the model to BF16 before calling `.eval()` appears to cause slightly different bounding box results DFloat11Model.frompretrained("mingyi456/DeepSeek-OCR-DF11", device = "cpu", bfloat16_model = model) model = model.cuda()

# prompt = "<image>\nFree OCR. " prompt = "<image>\n<|grounding|>Convert the document to markdown. " imagefile = 'yourimage.jpg' output_path = 'your/output/dir'

# infer(self, tokenizer, prompt='', imagefile='', outputpath = ' ', basesize = 1024, imagesize = 640, cropmode = True, testcompress = False, save_results = False):

# Tiny: basesize = 512, imagesize = 512, cropmode = False # Small: basesize = 640, imagesize = 640, cropmode = False # Base: basesize = 1024, imagesize = 1024, cropmode = False # Large: basesize = 1280, imagesize = 1280, cropmode = False

# Gundam: basesize = 1024, imagesize = 640, crop_mode = True

res = model.infer(tokenizer, prompt=prompt, imagefile=imagefile, outputpath = outputpath, basesize = 1024, imagesize = 640, cropmode=True, saveresults = True, test_compress = True)


### Compression Details

This is the `pattern_dict` for compression:

patterndict={ r"lmhead": [], r"model\.embedtokens": [], r"model\.layers\.0": [ "selfattn.qproj", "selfattn.kproj", "selfattn.vproj", "selfattn.oproj", "mlp.gateproj", "mlp.upproj", "mlp.downproj" ],

r"model\.layers\.[1-9]\d*": [ "selfattn.qproj", "selfattn.kproj", "selfattn.vproj", "selfattn.oproj",

"mlp.experts.0.gateproj", "mlp.experts.0.upproj", "mlp.experts.0.downproj", "mlp.experts.1.gateproj", "mlp.experts.1.upproj", "mlp.experts.1.downproj", "mlp.experts.2.gateproj", "mlp.experts.2.upproj", "mlp.experts.2.downproj", "mlp.experts.3.gateproj", "mlp.experts.3.upproj", "mlp.experts.3.downproj", "mlp.experts.4.gateproj", "mlp.experts.4.upproj", "mlp.experts.4.downproj", "mlp.experts.5.gateproj", "mlp.experts.5.upproj", "mlp.experts.5.downproj", "mlp.experts.6.gateproj", "mlp.experts.6.upproj", "mlp.experts.6.downproj", "mlp.experts.7.gateproj", "mlp.experts.7.upproj", "mlp.experts.7.downproj", "mlp.experts.8.gateproj", "mlp.experts.8.upproj", "mlp.experts.8.downproj", "mlp.experts.9.gateproj", "mlp.experts.9.upproj", "mlp.experts.9.downproj", "mlp.experts.10.gateproj", "mlp.experts.10.upproj", "mlp.experts.10.downproj", "mlp.experts.11.gateproj", "mlp.experts.11.upproj", "mlp.experts.11.downproj", "mlp.experts.12.gateproj", "mlp.experts.12.upproj", "mlp.experts.12.downproj", "mlp.experts.13.gateproj", "mlp.experts.13.upproj", "mlp.experts.13.downproj", "mlp.experts.14.gateproj", "mlp.experts.14.upproj", "mlp.experts.14.downproj", "mlp.experts.15.gateproj", "mlp.experts.15.upproj", "mlp.experts.15.downproj", "mlp.experts.16.gateproj", "mlp.experts.16.upproj", "mlp.experts.16.downproj", "mlp.experts.17.gateproj", "mlp.experts.17.upproj", "mlp.experts.17.downproj", "mlp.experts.18.gateproj", "mlp.experts.18.upproj", "mlp.experts.18.downproj", "mlp.experts.19.gateproj", "mlp.experts.19.upproj", "mlp.experts.19.downproj", "mlp.experts.20.gateproj", "mlp.experts.20.upproj", "mlp.experts.20.downproj", "mlp.experts.21.gateproj", "mlp.experts.21.upproj", "mlp.experts.21.downproj", "mlp.experts.22.gateproj", "mlp.experts.22.upproj", "mlp.experts.22.downproj", "mlp.experts.23.gateproj", "mlp.experts.23.upproj", "mlp.experts.23.downproj", "mlp.experts.24.gateproj", "mlp.experts.24.upproj", "mlp.experts.24.downproj", "mlp.experts.25.gateproj", "mlp.experts.25.upproj", "mlp.experts.25.downproj", "mlp.experts.26.gateproj", "mlp.experts.26.upproj", "mlp.experts.26.downproj", "mlp.experts.27.gateproj", "mlp.experts.27.upproj", "mlp.experts.27.downproj", "mlp.experts.28.gateproj", "mlp.experts.28.upproj", "mlp.experts.28.downproj", "mlp.experts.29.gateproj", "mlp.experts.29.upproj", "mlp.experts.29.downproj", "mlp.experts.30.gateproj", "mlp.experts.30.upproj", "mlp.experts.30.downproj", "mlp.experts.31.gateproj", "mlp.experts.31.upproj", "mlp.experts.31.downproj", "mlp.experts.32.gateproj", "mlp.experts.32.upproj", "mlp.experts.32.downproj", "mlp.experts.33.gateproj", "mlp.experts.33.upproj", "mlp.experts.33.downproj", "mlp.experts.34.gateproj", "mlp.experts.34.upproj", "mlp.experts.34.downproj", "mlp.experts.35.gateproj", "mlp.experts.35.upproj", "mlp.experts.35.downproj", "mlp.experts.36.gateproj", "mlp.experts.36.upproj", "mlp.experts.36.downproj", "mlp.experts.37.gateproj", "mlp.experts.37.upproj", "mlp.experts.37.downproj", "mlp.experts.38.gateproj", "mlp.experts.38.upproj", "mlp.experts.38.downproj", "mlp.experts.39.gateproj", "mlp.experts.39.upproj", "mlp.experts.39.downproj", "mlp.experts.40.gateproj", "mlp.experts.40.upproj", "mlp.experts.40.downproj", "mlp.experts.41.gateproj", "mlp.experts.41.upproj", "mlp.experts.41.downproj", "mlp.experts.42.gateproj", "mlp.experts.42.upproj", "mlp.experts.42.downproj", "mlp.experts.43.gateproj", "mlp.experts.43.upproj", "mlp.experts.43.downproj", "mlp.experts.44.gateproj", "mlp.experts.44.upproj", "mlp.experts.44.downproj", "mlp.experts.45.gateproj", "mlp.experts.45.upproj", "mlp.experts.45.downproj", "mlp.experts.46.gateproj", "mlp.experts.46.upproj", "mlp.experts.46.downproj", "mlp.experts.47.gateproj", "mlp.experts.47.upproj", "mlp.experts.47.downproj", "mlp.experts.48.gateproj", "mlp.experts.48.upproj", "mlp.experts.48.downproj", "mlp.experts.49.gateproj", "mlp.experts.49.upproj", "mlp.experts.49.downproj", "mlp.experts.50.gateproj", "mlp.experts.50.upproj", "mlp.experts.50.downproj", "mlp.experts.51.gateproj", "mlp.experts.51.upproj", "mlp.experts.51.downproj", "mlp.experts.52.gateproj", "mlp.experts.52.upproj", "mlp.experts.52.downproj", "mlp.experts.53.gateproj", "mlp.experts.53.upproj", "mlp.experts.53.downproj", "mlp.experts.54.gateproj", "mlp.experts.54.upproj", "mlp.experts.54.downproj", "mlp.experts.55.gateproj", "mlp.experts.55.upproj", "mlp.experts.55.downproj", "mlp.experts.56.gateproj", "mlp.experts.56.upproj", "mlp.experts.56.downproj", "mlp.experts.57.gateproj", "mlp.experts.57.upproj", "mlp.experts.57.downproj", "mlp.experts.58.gateproj", "mlp.experts.58.upproj", "mlp.experts.58.downproj", "mlp.experts.59.gateproj", "mlp.experts.59.upproj", "mlp.experts.59.downproj", "mlp.experts.60.gateproj", "mlp.experts.60.upproj", "mlp.experts.60.downproj", "mlp.experts.61.gateproj", "mlp.experts.61.upproj", "mlp.experts.61.downproj", "mlp.experts.62.gateproj", "mlp.experts.62.upproj", "mlp.experts.62.downproj", "mlp.experts.63.gateproj", "mlp.experts.63.upproj", "mlp.experts.63.downproj",

"mlp.sharedexperts.gateproj", "mlp.sharedexperts.upproj", "mlp.sharedexperts.downproj", ],

r"model\.sam_model\.blocks\.\d+": ( "attn.qkv", "attn.proj", "mlp.lin1", "mlp.lin2", ),

r"model\.visionmodel\.embeddings\.positionembedding": [],

r"model\.visionmodel\.transformer\.layers\.\d+": ( "selfattn.qkvproj", "selfattn.out_proj", "mlp.fc1", "mlp.fc2", ),

r"model\.projector\.layers": [] }