deepseek-ai/DeepSeek-OCR

Successful Practice of Using Docker+VLLM on 4090

Open

#270 ouverte le 16 nov. 2025

Voir sur GitHub
 (0 commentaires) (2 réactions) (0 assignés)Python (2 147 forks)auto 404
good first issue

Métriques du dépôt

Stars
 (23 235 stars)
Métriques de merge PR
 (Aucune PR mergée en 30 j)

Description

Dockerfile content:

FROM nvidia/cuda:12.6.3-cudnn-devel-ubuntu22.04
ENV TZ=Asia/Shanghai
ENV DEBIAN_FRONTEND=noninteractive

RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|https://mirrors.tuna.tsinghua.edu.cn/ubuntu/|g' /etc/apt/sources.list && \
    sed -i 's|http://security.ubuntu.com/ubuntu/|https://mirrors.tuna.tsinghua.edu.cn/ubuntu/|g' /etc/apt/sources.list


RUN mkdir -p /tmp/apt-key-gpghome && chmod 1777 /tmp

RUN apt update && apt install -y python3.10 python3.10-dev python3-pip vim curl wget git git-lfs
RUN python3.10 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple rawpy pillow requests
RUN python3.10 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U vllm --pre --extra-index-url https://wheels.vllm.ai/nightly

vllm_test.py content

from vllm import LLM, SamplingParams
from vllm.model_executor.models.deepseek_ocr import NGramPerReqLogitsProcessor
from PIL import Image

llm = LLM(
    model="DeepSeek-OCR",
    enable_prefix_caching=False,
    mm_processor_cache_gb=0,
    logits_processors=[NGramPerReqLogitsProcessor]
)

image_1 = Image.open("path/to/your/image_1.png").convert("RGB")
image_2 = Image.open("path/to/your/image_2.png").convert("RGB")
prompt = "<image>\nFree OCR."

model_input = [
    {
        "prompt": prompt,
        "multi_modal_data": {"image": image_1}
    },
    {
        "prompt": prompt,
        "multi_modal_data": {"image": image_2}
    }
]

sampling_param = SamplingParams(
            temperature=0.0,
            max_tokens=8192,
            # ngram logit processor args
            extra_args=dict(
                ngram_size=30,
                window_size=90,
                whitelist_token_ids={128821, 128822},  # whitelist: <td>, </td>
            ),
            skip_special_tokens=False,
        )
model_outputs = llm.generate(model_input, sampling_param)
for output in model_outputs:
    print(output.outputs[0].text)

success image

Guide contributeur