DeepSeek-OCR
DeepSeek-OCR
이 문서는 DeepSeek의 고급 OCR(광학 문자 인식) 모델인 DeepSeek-OCR을 SGLang으로 배포하고 호출하는 방법을 설명해요. 이미지에서 높은 정확도로 텍스트를 추출하며, 다양한 문서 처리 및 이미지-텍스트 변환 작업에 최적화되어 있어요. 원문 페이지에는 하드웨어 플랫폼, 양자화 방법, 배포 전략을 골라 명령을 자동 생성해 주는 대화형 선택기(Interactive Command Generator)가 포함되어 있어요.
출처: 문서
본문
1. 모델 소개
DeepSeek-OCR은 이미지에서 높은 정확도로 텍스트를 추출하도록 설계된 DeepSeek의 고급 OCR(광학 문자 인식) 모델이에요. 다양한 문서 처리와 이미지-텍스트 변환 작업에 최적화되어 있어요.
주요 특징:
- 고급 OCR (Advanced OCR): 이미지와 문서에서 높은 정확도의 텍스트 인식
- 멀티 모달 (Multi-Modality): 다양한 이미지 형식과 문서 유형 지원
사용 가능한 모델:
- 베이스 모델 (Base Model): deepseek-ai/DeepSeek-OCR - OCR 작업에 권장
라이선스: DeepSeek-OCR을 사용하려면 DeepSeek 커뮤니티 라이선스에 동의해야 해요. 자세한 내용은 LICENSE를 참고하세요.
자세한 내용은 공식 DeepSeek-OCR 저장소를 참고하세요.
2. SGLang 설치
설치 지침은 공식 SGLang 설치 가이드를 참고하세요.
SGLang CPU 설치는 CPU 버전 설치 가이드를 참고하세요.
3. 모델 배포
이 섹션은 서로 다른 하드웨어 플랫폼과 사용 사례에 최적화된 배포 설정을 제공해요.
3.1 기본 설정
대화형 명령 생성기 (Interactive Command Generator): 아래 설정 선택기를 사용해 하드웨어 플랫폼, 양자화 방법, 배포 전략에 맞는 적절한 배포 명령을 자동으로 생성할 수 있어요. (대화형 위젯은 원문 페이지에서 동작하므로, 기본 설정 기준 명령은 다음과 같아요.)
python3 -m sglang.launch_server \
--model-path deepseek-ai/DeepSeek-OCR \
--dtype float16 \
--tp 1
4. 모델 호출
4.1 기본 사용법
기본 API 사용법과 요청 예시는 다음을 참고하세요:
4.2 OCR 전용 프롬프트
DeepSeek-OCR은 모델 카드에서 권장하는 프롬프트를 받아들여요:
<image>
<|grounding|>Convert the document to markdown.
<image>
Free OCR.
OpenAI 호환 이미지 요청 예시:
import requests
url = "http://localhost:30000/v1/chat/completions"
data = {
"model": "deepseek-ai/DeepSeek-OCR",
"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)
5. 벤치마크
5.1 속도 벤치마크
테스트 환경:
- 하드웨어: AMD MI300X GPU (1x)
- 모델: DeepSeek-OCR
- 텐서 병렬화(Tensor Parallelism): 1
- sglang 버전: 0.5.7
ShareGPT_Vicuna_unfiltered 데이터셋에 대해 성능 평가를 수행했어요. 이 데이터셋은 실제 대화 데이터를 포함해 실제 사용 시나리오의 성능을 더 잘 반영해요. 실제 사용 패턴을 시뮬레이션하기 위해 각 요청을 1024개의 입력 토큰과 1024개의 출력 토큰으로 구성했어요. 이는 상세한 응답을 가진 전형적인 중간 길이 대화를 나타내요.
5.1.1 지연 시간 민감 벤치마크
- 모델 배포 명령:
python3 -m sglang.launch_server \
--model-path deepseek-ai/DeepSeek-OCR \
--tp 1 \
--dtype float16 \
--trust-remote-code \
--host 0.0.0.0 \
--port 8000
- 벤치마크 명령:
python3 -m sglang.bench_serving \
--backend sglang \
--host 127.0.0.1 \
--port 8000 \
--model deepseek-ai/DeepSeek-OCR \
--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): 4.45
Total input tokens: 1972
Total input text tokens: 1972
Total input vision tokens: 0
Total generated tokens: 2784
Total generated tokens (retokenized): 2770
Request throughput (req/s): 2.25
Input token throughput (tok/s): 442.89
Output token throughput (tok/s): 625.26
Peak output token throughput (tok/s): 635.00
Peak concurrent requests: 4
Total token throughput (tok/s): 1068.16
Concurrency: 1.00
----------------End-to-End Latency----------------
Mean E2E Latency (ms): 443.32
Median E2E Latency (ms): 493.29
---------------Time to First Token----------------
Mean TTFT (ms): 21.59
Median TTFT (ms): 20.89
P99 TTFT (ms): 24.81
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 1.47
Median TPOT (ms): 1.52
P99 TPOT (ms): 1.53
---------------Inter-Token Latency----------------
Mean ITL (ms): 1.52
Median ITL (ms): 1.51
P95 ITL (ms): 1.76
P99 ITL (ms): 1.93
Max ITL (ms): 8.28
==================================================
5.1.2 처리량 민감 벤치마크
- 모델 배포 명령:
python3 -m sglang.launch_server \
--model-path deepseek-ai/DeepSeek-OCR \
--tp 1 \
--ep 1 \
--dp 1 \
--enable-dp-attention \
--dtype float16 \
--host 0.0.0.0 \
--port 8000
- 벤치마크 명령:
python3 -m sglang.bench_serving \
--backend sglang \
--host 127.0.0.1 \
--port 8000 \
--model deepseek-ai/DeepSeek-OCR \
--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): 16.24
Total input tokens: 301698
Total input text tokens: 301698
Total input vision tokens: 0
Total generated tokens: 188375
Total generated tokens (retokenized): 186927
Request throughput (req/s): 61.59
Input token throughput (tok/s): 18582.90
Output token throughput (tok/s): 11602.84
Peak output token throughput (tok/s): 15479.00
Peak concurrent requests: 179
Total token throughput (tok/s): 30185.75
Concurrency: 85.53
----------------End-to-End Latency----------------
Mean E2E Latency (ms): 1388.60
Median E2E Latency (ms): 901.43
---------------Time to First Token----------------
Mean TTFT (ms): 73.36
Median TTFT (ms): 50.21
P99 TTFT (ms): 349.53
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 7.42
Median TPOT (ms): 7.31
P99 TPOT (ms): 27.99
---------------Inter-Token Latency----------------
Mean ITL (ms): 7.04
Median ITL (ms): 4.62
P95 ITL (ms): 21.11
P99 ITL (ms): 36.92
Max ITL (ms): 172.15
==================================================