deepseek-ai/DeepSeek-OCR

Successful Practice of Using Docker+VLLM on 4090

Open

#270 geöffnet am 16. Nov. 2025

Auf GitHub ansehen
 (0 Kommentare) (2 Reaktionen) (0 zugewiesene Personen)Python (2.147 Forks)auto 404
good first issue

Repository-Metriken

Stars
 (23.235 Stars)
PR-Merge-Metriken
 (Keine gemergten PRs in 30 T)

Beschreibung

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

Contributor Guide