DeepSeek-OCR 파인튜닝 가이드 소개
DeepSeek-OCR 파인튜닝 가이드 문서는 30억 파라미터 규모의 비전 기반 OCR 모델인 DeepSeek-OCR을 로컬 환경에서 실행하고, 자신만의 데이터셋으로 효율적인 파인튜닝을 수행하는 방법에 대해 다룹니다. 특히 unsloth 프레임워크를 활용하여 더 적은 자원으로 더 빠르게 학습할 수 있도록 구성되어 있으며, 파인튜닝 이후에는 특정 언어, 손글씨, 도메인 특화 문서 등 다양한 상황에서 성능을 극대화할 수 있습니다.
예를 들어, 본 문서에서 다룰 페르시아어 데이터셋 기반의 실험에서는 60 스텝만으로 CER을 57% 이상 줄이는 성능 향상을 달성했습니다. 해당 방식은 사용자 데이터에 맞게 손쉽게 확장 가능하며, OCR 프로젝트를 실제 프로덕션에 적용하고자 하는 개발자들에게 큰 도움이 될 것으로 보여 소개합니다. ![]()
unsloth 프레임워크 소개
Unsloth AI가 개발 및 공개한 unsloth 프레임워크는 Hugging Face 기반의 LLM을 대상으로 학습 속도와 메모리 사용량을 크게 개선할 수 있도록 고안된 경량화/최적화 프레임워크입니다. unsloth 프레임워크의 주요 기능 및 장점은 다음과 같습니다:
- LoRA, QLoRA, 4bit/8bit 양자화 지원
- 2배 빠른 학습 속도
- 최대 50% 적은 VRAM 사용
- 긴 컨텍스트 입력(최대 128k tokens) 처리 지원
- 멀티모달 모델 지원 (OCR, 이미지 설명, 비전-텍스트 통합 등)
특히, DeepSeek-OCR과 같은 고용량 비전 모델을 학습하거나 추론할 때 유용하며, 최신 transformers 버전에서 호환되지 않는 기능도 직접 구현하여 안정적인 운영이 가능합니다.
DeepSeek-OCR 모델 소개
DeepSeek-OCR은 DeepSeek AI가 공개한, 긴 문서 처리의 문맥 길이 한계를 극복하기 위해 개발된 시각-언어 모델(VLM)입니다. DeepSeek-OCR 모델은 기존 텍스트 기반 LLM이 가진 토큰 비용 문제를 혁신적인 방식으로 해결합니다. 핵심 아이디어는 긴 문서를 직접 텍스트 토큰으로 넣는 대신 이미지로 변환하여 시각적으로 인식하고, 이를 다시 텍스트로 복원하는 구조를 채택한 것입니다. 이 접근 방식은 LLM이 직접 읽기엔 너무 길거나 복잡한 문서를 효과적으로 요약하고 압축하는 데 탁월한 효율성을 발휘합니다.
즉, DeepSeek-OCR의 가장 독창적인 점은 문맥 압축을 이미지 기반으로 해결한다는 접근입니다. 이는 단순 요약이나 요약 기반 스킵이 아니라, 오래된 정보를 이미지로 렌더링하고 이를 다시 필요할 때 불러오는 방식으로, LLM의 장기 기억 처리에도 새로운 해석을 가능하게 합니다. 연구진은 이를 일종의 인공적 망각(Artificial Forgetting) 으로 설명하며, 인간이 오래된 기억은 흐리게 간직하는 것과 유사하다고 설명합니다.
주요 아키텍처 구성: DeepEncoder + MoE Decoder
-
DeepEncoder (시각 인코더): DeepSeek-OCR 모델의 전반부는 DeepEncoder라 불리는 시각 인코더로, 이미지를 고도로 압축된 비전 토큰 시퀀스로 변환합니다. 내부적으로는 다음과 같은 세 가지 처리 단계로 구성됩니다:
- 세밀한 시각 정보 추출: Meta의 SAM(Segment Anything Model)에서 영감을 받은 비전 트랜스포머를 사용해 이미지의 디테일을 세분화합니다.
- 비전 토큰 압축: 기존의 4096개 비전 토큰을 약 1/16 수준인 256개로 다운샘플링합니다.
- 시각적 의미 통합: OpenAI의 CLIP 비전 트랜스포머를 활용해 압축된 정보를 문맥적으로 통합합니다.
이러한 구조를 통해 DeepEncoder는 고해상도 이미지를 매우 적은 토큰 수로 표현할 수 있으며, GPU 메모리 부담을 크게 줄입니다.
-
MoE Decoder (언어 디코더): DeepSeek-OCR의 후반부는 DeepSeek-3B-MoE라는 약 30억 파라미터 규모의 Mixture-of-Experts 구조의 언어 디코더입니다. MoE는 입력에 따라 소수의 전문가 네트워크만 활성화되므로 효율성이 뛰어나며, 비전 토큰으로 압축된 정보를 다시 자연어 텍스트로 재구성합니다. 이 디코더는 GPT 스타일의 언어 모델로 동작하므로, 프롬프트 추가 및 다양한 언어 생성 태스크에도 유연하게 대응 가능합니다.
DeepSeek-OCR 모델의 성능 특성 및 벤치마크 결과
-
시각 압축 기반 효율성: DeepSeek-OCR은 텍스트 대비 10배 이상의 압축률에서도 높은 정확도를 유지합니다. Fox 벤치마크에 따르면, 텍스트 토큰 수 대비 비전 토큰 수 비율이 10:1일 때 96% 이상의 OCR 정확도를 기록하며, 심지어 20:1까지 압축했을 때도 60% 수준의 유의미한 복원력을 보였습니다.
-
문서 이해 능력: OmniDocBench 기준으로, DeepSeek-OCR은 기존 SOTA 모델인 GOT-OCR 2.0보다 더 적은 토큰 수로 더 높은 정확도를 달성했습니다. 특히 MinerU 2.0처럼 수천 개의 토큰이 필요한 구조와 비교하면, DeepSeek-OCR은 800개 미만의 토큰으로도 더 나은 결과를 생성해냅니다. 이는 추론 속도, 비용, 메모리 효율성 면에서 실질적인 우위를 보여줍니다.
-
범용 인식 성능: 텍스트 외에도 표, 그래프, 수식, 로고 등 다양한 시각 요소를 정밀하게 인식할 수 있으며, PDF 논문에서 그래프의 숫자나 화학식, 금융 리포트의 도장이나 차트 텍스트까지 구조적으로 추출할 수 있습니다. 단순 OCR을 넘어서 복합 문서 이해(Multi-modal Document Understanding) 작업에도 적합합니다.
DeepSeek-OCR 모델에 대한 소개는 다음 링크를 참고해주세요:
DeepSeek-OCR 실행 방법
문서에서는 vLLM 및 Unsloth 프레임워크를 사용하여 실행하는 방법을 소개하고 있습니다.
먼저, DeepSeek AI가 제안하는 최적의 모델 실행 설정은 다음과 같습니다:
-
Temperature = 0.0
-
max_tokens = 8192 -
ngram_size = 30 -
window_size = 90
vLLM 환경에서 DeepSeek-OCR 모델 실행
최신 vLLM을 설치 또는 업그레이드합니다. 만약 v0.11.1 이전 버전이 설치된다면, 가장 최근 빌드한 vLLM Nightly 버전을 설치하여 사용합니다:
# 가상환경 생성 및 실행
uv venv
source .venv/bin/activate
# vLLM 설치 또는 업그레이드 - 버전이 v0.11.1 이상인지 확인
uv pip install -U vllm
# v0.11.1 이전 버전이 설치된다면 Nightly 버전을 직접 설치
uv pip install -U vllm --pre --extra-index-url https://wheels.vllm.ai/nightly
이후, 다음과 같은 방식으로 코드 내에서 호출하여 사용할 수 있습니다:
from vllm import LLM, SamplingParams
from vllm.model_executor.models.deepseek_ocr import NGramPerReqLogitsProcessor
from PIL import Image
llm = LLM(
model="unsloth/DeepSeek-OCR",
enable_prefix_caching=False,
mm_processor_cache_gb=0,
logits_processors=[NGramPerReqLogitsProcessor]
)
image = Image.open("your_image.png").convert("RGB")
prompt = "<image>\nFree OCR."
inputs = [{"prompt": prompt, "multi_modal_data": {"image": image}}]
sampling = SamplingParams(max_tokens=8192, temperature=0.0)
outputs = llm.generate(inputs, sampling)
print(outputs[0].outputs.text)
Unsloth 환경에서 실행
vLLM 외에도 Unsloth 환경에서 실행할 수 있습니다. vLLM과 마찬가지로 최신의 unsloth 버전을 설치 또는 업데이트합니다:
# unsloth를 새로 설치한다면:
pip install --upgrade unsloth
# 이미 사용 중인 unsloth를 업데이트 한다면:
pip install --upgrade --force-reinstall --no-deps --no-cache-dir unsloth unsloth_zoo
이후, 다음 코드과 같은 예시 코드로 DeepSeek-OCR 모델을 사용할 수 있습니다:
from unsloth import FastVisionModel
from transformers import AutoModel
from huggingface_hub import snapshot_download
import os
os.environ["UNSLOTH_WARN_UNINITIALIZED"] = '0'
snapshot_download("unsloth/DeepSeek-OCR", local_dir = "deepseek_ocr")
model, tokenizer = FastVisionModel.from_pretrained(
"./deepseek_ocr",
load_in_4bit = False,
auto_model = AutoModel,
trust_remote_code = True,
unsloth_force_compile = True,
use_gradient_checkpointing = "unsloth"
)
result = model.infer(
tokenizer,
prompt="<image>\nFree OCR.",
image_file="your_image.jpg",
output_path="your/output",
base_size=1024,
image_size=640,
crop_mode=True,
save_results=True
)
DeepSeek-OCR 파인튜닝 가이드
데이터셋 준비 및 예시 Colab 노트북 소개
먼저, DeepSeek-OCR 모델의 파인튜닝을 위한 데이터셋을 준비합니다. 이 때, 데이터셋은 image_file과 해당 이미지 파일의 정답 텍스트인 text_label로 구성되어야 합니다. 데이터셋이 준비되었다면 다음과 같은 csv 형태로 데이터셋을 정리합니다:
image_file,text_label
invoice_01.png,"Total amount: $4,240"
handwritten_note.jpg,"회의는 금요일 오후 3시에 시작합니다."
이제 다음과 같은 단계를 거쳐 DeepSeek-OCR 모델을 파인튜닝할 수 있습니다:
- 파인튜닝을 위한 학습용 데이터 불러오기
model.train()메서드를 사용하여 파인튜닝- 주요 하이퍼파라미터 조정:
- batch_size: 8~16
- learning_rate: 2e-5
- max_steps: 60~300
전체 코드는 Unsloth가 제공하는 예시 Google Colab 노트북 파일을 통해 확인할 수 있습니다:
앞에서 설명한 것과 같이, 위 파인튜닝 예시 노트북은 20만개 규모의 페르시아어 데이터셋을 사용하여 DeepSeek-OCR 모델을 파인튜닝합니다. 예시 노트북에는 상세한 주석 및 참고 링크 등이 포함되어 있으며, 가장 중요한 model.train() 부분의 예시를 다음과 같습니다:
model.train(
tokenizer=tokenizer,
dataset=train_dataset, # 이미지+텍스트 쌍으로 구성
eval_dataset=val_dataset,
output_dir="./finetuned_deepseek",
epochs=1,
per_device_train_batch_size=8,
gradient_accumulation_steps=2
)
파인튜닝의 성능 평가
파인튜닝의 결과를 Character Error Rate (CER) 기준으로 평가하며, 20만건의 페르시아어 데이터셋으로 파인튜닝한 성능 변화는 다음과 같습니다:
- DeepSeek-OCR 기본 모델의 성능: 149.07% CER
- 20만건의 데이터셋으로 파인튜닝 후: 60.43% CER
- 파인튜닝 전/후의 성능 향상 정도 : 약 89% CER 감소
즉, 20만건의 데이터셋을 60스텝만 학습한 것만으로도 모델이 57% 더 정확한 예측을 하게 되었으며, 이는 극소량의 학습만으로도 성능 향상이 가능함을 보여줍니다.
Unsloth 프레임워크를 활용한 DeepSeek-OCR 실행 및 파인튜닝 가이드 문서
Unsloth 프레임워크를 활용한 DeepSeek-OCR 파인튜닝 예시 Colab 노트북
DeepSeek-OCR 모델 더 알아보기
-
DeepSeek-OCR 모델 소개: DeepSeek-OCR: DeepSeek AI가 공개한 LLM 중심의 통합형 광학 문자 인식(OCR) 모델 -
DeepSeek-OCR 모델 논문: [2510.18234] DeepSeek-OCR: Contexts Optical Compression (논문/영문) -
DeepSeek-OCR 모델 GitHub 저장소: GitHub - deepseek-ai/DeepSeek-OCR: Contexts Optical Compression
-
DeepSeek-OCR 모델 다운로드: deepseek-ai/DeepSeek-OCR · Hugging Face
더 읽어보기
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()

