DeepSeek-OCR-2
DeepSeek-OCR-2
이 문서는 DeepSeek의 차세대 OCR(광학 문자 인식) 모델인 DeepSeek-OCR-2를 SGLang으로 배포하고 호출하는 방법을 설명해요. DeepSeek-OCR의 후속 모델로 정확도와 폭넓은 문서 이해 능력이 개선되었어요. 원문 페이지에는 하드웨어 플랫폼, 양자화 방법, 배포 전략을 골라 명령을 자동 생성해 주는 대화형 선택기(Interactive Command Generator)가 포함되어 있어요.
출처: 문서
본문
1. 모델 소개
DeepSeek-OCR-2는 DeepSeek의 차세대 OCR 모델로, DeepSeek-OCR을 기반으로 정확도와 더 폭넓은 문서 이해 능력을 개선했어요. 다양한 문서 유형과 형식에 걸쳐 이미지에서 높은 정확도로 텍스트를 추출하도록 최적화되어 있어요.
주요 특징:
- 의미 인지 시각 인코딩 (Semantic-Aware Visual Encoding, DeepEncoder V2): DeepSeek-OCR-2는 DeepEncoder V2를 도입해 고정된 래스터 스캔 방식 대신 더 인간답고 의미 중심적인 방식으로 문서 읽기 순서를 모델링해요. 이는 복잡한 레이아웃(예: 다중 컬럼 문서)에서 논리적 읽기 흐름을 크게 개선해요.
- 더 강력한 레이아웃·구조 이해 (Stronger Layout and Structural Understanding): 표, 양식, 밀집된 다중 컬럼 페이지 같은 구조화 문서에서 개선된 성능을 보여줘요. 읽기 순서 오류를 줄이고 전반적인 문서 파싱 견고성을 이전 버전보다 향상시켜요.
- 토큰 효율을 유지하며 정확도 향상 (Improved Accuracy While Maintaining Token Efficiency): 기존 DeepSeek-OCR은 공격적인 시각 토큰 압축을 강조했어요. OCR-2는 높은 토큰 효율을 유지하면서도 특히 문서 수준 이해 작업에서 더 높은 벤치마크 성능을 제공해요.
- 복잡한 문서 작업 전반의 더 나은 일반화 (Better Generalization Across Complex Document Tasks): DeepSeek-OCR-2는 다국어 문서, 구조화 데이터 추출, 시각적으로 복잡한 콘텐츠에서 더 일관된 성능을 보여줘, 단순 텍스트 OCR을 넘어선 실제 문서 인텔리전스 시나리오에 더 적합해요.
사용 가능한 모델:
- 베이스 모델 (Base Model): deepseek-ai/DeepSeek-OCR-2 - OCR 작업에 권장
라이선스: DeepSeek-OCR-2를 사용하려면 DeepSeek 커뮤니티 라이선스에 동의해야 해요. 자세한 내용은 LICENSE를 참고하세요.
자세한 내용은 공식 DeepSeek-OCR-2 저장소를 참고하세요.
2. SGLang 설치
설치 지침은 공식 SGLang 설치 가이드를 참고하세요.
3. 모델 배포
이 섹션은 서로 다른 하드웨어 플랫폼과 사용 사례에 최적화된 배포 설정을 제공해요.
3.1 기본 설정
DeepSeek-OCR-2 시리즈는 다양한 크기와 아키텍처의 모델을 제공하며, NVIDIA GPU, AMD GPU, Intel Arc Pro B-Series GPU(코드명: BMG (Battlemage)), Intel Xeon CPU 등 다양한 하드웨어 플랫폼에 최적화되어 있어요. 권장 실행 설정은 하드웨어와 모델 크기에 따라 달라져요.
대화형 명령 생성기 (Interactive Command Generator): 아래 설정 선택기를 사용해 하드웨어 플랫폼, 양자화 방법, 배포 전략에 맞는 배포 명령을 자동으로 생성할 수 있어요. SGLang은 NVIDIA H200과 B200, AMD MI300X, MI355X, MI325X GPU, Intel Arc Pro B-Series GPU, 그리고 Intel Xeon CPU에서 DeepSeek-OCR-2 서빙을 지원해요. (대화형 위젯은 원문 페이지에서 동작하므로, 기본 설정 기준 명령은 다음과 같아요.)
sglang serve \
--model-path deepseek-ai/DeepSeek-OCR-2 \
--enable-multimodal \
--host 0.0.0.0 \
--port 30000
참고: DeepSeek-OCR-2는 약 30억(3B) 개의 파라미터를 가져 최신 단일 GPU에 쉽게 들어가요. 저지연 서빙에는 모델 병렬화가 필요 없어요. 높은 처리량이 필요하면 SGLang Model Gateway와 함께 데이터 병렬화를 고려하세요 — 자세한 내용은 DP, DPA and SGLang DP Router를 참고하세요.
3.2 설정 팁
- 단일 GPU 배포 (Single GPU Deployment): DeepSeek-OCR-2 (약 30억 파라미터)는 최신 단일 GPU에 들어가요 — 저지연 서빙에는 텐서 병렬화가 필요 없어요.
- 높은 처리량 (High Throughput): 높은 처리량 시나리오에서는 SGLang Model Gateway와 함께 데이터 병렬화를 사용하세요. DP, DPA and SGLang DP Router를 참고하세요.
- NCCL 타임아웃: 모델 로딩이 느리면
--dist-timeout 3600을 늘리세요. - Xeon CPU 서비스 설정: SGLang CPU 서버 문서의 서빙 엔진 실행 부분에 있는
Notes항목을 참고해 인자, 특히 NUMA 바인딩 설정을 이해하세요.
4. 모델 호출
4.1 기본 사용법
OpenAI 호환 요청 예시
import requests
url = "http://localhost:30000/v1/chat/completions"
data = {
"model": "deepseek-ai/DeepSeek-OCR-2",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "<image>\n<|grounding|>Convert the document to markdown."},
{"type": "image_url", "image_url": {"url": "https://example.com/your_image.jpg"}},
],
}
],
"max_tokens": 512,
}
response = requests.post(url, json=data)
print(response.text)
참고 자료
4.2 권장 프롬프트
다음 프롬프트는 공식 모델 카드에서 권장하는 것이에요.
구조화 문서 변환 — 레이아웃을 보존하며 텍스트 추출:
<image>
<|grounding|>Convert the document to markdown.
자유 형식 OCR (Free-form OCR) — 레이아웃 없이 추출:
<image>
Free OCR.
5. 벤치마크
5.1 속도 벤치마크
테스트 환경:
- 하드웨어: NVIDIA H200 GPU (1x)
- 모델: DeepSeek-OCR-2
- 텐서 병렬화(Tensor Parallelism): 1
- sglang 버전: 0.0.0.dev1+g93fca0bbc
ShareGPT_Vicuna_unfiltered 데이터셋에 대해 성능 평가를 수행했어요. 이 데이터셋은 실제 대화 데이터를 포함해 실제 사용 시나리오의 성능을 더 잘 반영해요. 실제 사용 패턴을 시뮬레이션하기 위해 각 요청을 1024개의 입력 토큰과 1024개의 출력 토큰으로 구성했어요. 평가 수행 방법에 대한 자세한 내용은 Evaluating New Models with SGLang을 참고하세요.
5.1.1 지연 시간 민감 벤치마크
- 모델 배포 명령:
sglang serve \
--model-path deepseek-ai/DeepSeek-OCR-2 \
--enable-multimodal \
--host 0.0.0.0 \
--port 30000
- 벤치마크 명령:
python3 -m sglang.bench_serving \
--backend sglang \
--host 0.0.0.0 \
--port 30000 \
--model deepseek-ai/DeepSeek-OCR-2 \
--random-input-len 1024 \
--random-output-len 1024 \
--num-prompts 10 \
--max-concurrency 1
- 테스트 결과:
============ Serving Benchmark Result ============
Backend: sglang
Traffic request rate: inf
Max request concurrency: 1
Successful requests: 10
Benchmark duration (s): 3.54
Total input tokens: 1972
Total input text tokens: 1972
Total generated tokens: 2784
Total generated tokens (retokenized): 2710
Request throughput (req/s): 2.83
Input token throughput (tok/s): 557.53
Output token throughput (tok/s): 787.10
Peak output token throughput (tok/s): 818.00
Peak concurrent requests: 5
Total token throughput (tok/s): 1344.63
Concurrency: 1.00
----------------End-to-End Latency----------------
Mean E2E Latency (ms): 352.69
Median E2E Latency (ms): 392.34
P90 E2E Latency (ms): 540.64
P99 E2E Latency (ms): 639.01
---------------Time to First Token----------------
Mean TTFT (ms): 18.08
Median TTFT (ms): 16.57
P99 TTFT (ms): 25.67
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 1.18
Median TPOT (ms): 1.21
P99 TPOT (ms): 1.22
---------------Inter-Token Latency----------------
Mean ITL (ms): 1.21
Median ITL (ms): 1.21
P95 ITL (ms): 1.28
P99 ITL (ms): 1.44
Max ITL (ms): 4.32
==================================================
5.1.2 처리량 민감 벤치마크
- 모델 배포 명령:
sglang serve \
--model-path deepseek-ai/DeepSeek-OCR-2 \
--enable-multimodal \
--tp 1 \
--ep 1 \
--dp 1 \
--enable-dp-attention \
--host 0.0.0.0 \
--port 30000
- 벤치마크 명령:
python3 -m sglang.bench_serving \
--backend sglang \
--host 0.0.0.0 \
--port 30000 \
--model deepseek-ai/DeepSeek-OCR-2 \
--random-input-len 1024 \
--random-output-len 1024 \
--num-prompts 1000 \
--max-concurrency 100
- 테스트 결과:
============ Serving Benchmark Result ============
Backend: sglang
Traffic request rate: inf
Max request concurrency: 100
Successful requests: 1000
Benchmark duration (s): 14.79
Total input tokens: 301698
Total input text tokens: 301698
Total generated tokens: 188375
Total generated tokens (retokenized): 185236
Request throughput (req/s): 67.63
Input token throughput (tok/s): 20402.54
Output token throughput (tok/s): 12738.99
Peak output token throughput (tok/s): 17508.00
Peak concurrent requests: 187
Total token throughput (tok/s): 33141.53
Concurrency: 86.87
----------------End-to-End Latency----------------
Mean E2E Latency (ms): 1284.50
Median E2E Latency (ms): 866.07
P90 E2E Latency (ms): 3027.32
P99 E2E Latency (ms): 5490.63
---------------Time to First Token----------------
Mean TTFT (ms): 86.08
Median TTFT (ms): 50.09
P99 TTFT (ms): 613.92
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 7.79
Median TPOT (ms): 6.54
P99 TPOT (ms): 50.10
---------------Inter-Token Latency----------------
Mean ITL (ms): 6.42
Median ITL (ms): 4.64
P95 ITL (ms): 23.65
P99 ITL (ms): 39.62
Max ITL (ms): 452.65
==================================================