jongkwan.dev
개발 · Essay №042

DeepSeek-R1: 오픈소스 추론 모델

OpenAI o1과 유사한 성능을 달성한 오픈소스 모델. 특히 R1-Zero는 순수 강화학습만으로 추론 능력이 자동 출현

이종관2026년 2월 1일7 min read
Contents

오픈소스 추론 모델

개념

OpenAI o1이 내부 추론 토큰의 가능성을 보여준 이후, 오픈소스 진영에서도 동등한 수준의 추론 모델을 구축할 수 있는지가 핵심 질문이었다. DeepSeek-R1은 이 질문에 대한 긍정적 답변으로, 특히 R1-Zero 변형이 별도의 지도학습 데이터 없이 순수 강화학습만으로 사고 과정, 자기 검증, 오류 수정 능력을 자발적으로 학습했다는 점에서 큰 주목을 받았다. 가중치와 학습 방법론이 공개되어 있어, 연구자와 개발자가 추론 메커니즘을 분석하고 도메인별로 파인튜닝할 수 있다는 점이 o1 대비 결정적 차별점이다.

DeepSeek-R1은 OpenAI o1과 유사한 성능을 달성한 오픈소스 모델이다. 특히 DeepSeek-R1-Zero는 순수 강화학습만으로 훈련되었다.

R1-Zero — 순수 RL의 가능성

DeepSeek-R1-Zero의 가장 놀라운 점:

  • SFT(Supervised Fine-Tuning) 없음

  • 순수 강화학습만으로 훈련

  • 사고 과정, 검증 능력, 오류 수정 자동 emergence

  • 기존 방식: 추론 데이터 → SFT → RL 미세조정 → 추론 모델

  • R1-Zero: 데이터 없음 → 순수 RL → 추론 능력 자동 출현!

Emergence의 의미

아무도 가르치지 않았는데, 순수 강화학습만으로:

능력설명
사고 과정단계별 추론 생성
자기 검증자신의 답 확인
오류 수정실수 발견 및 수정
반성"다시 생각해보면..."

이 모든 것이 자동으로 출현했다.

GRPO 알고리즘

DeepSeek이 개발한 GRPO(Group Relative Policy Optimization):

기존 PPO의 문제

  • 별도 Critic Network 필요
  • 추가 계산/메모리 비용
  • 학습 불안정성

GRPO 해결책

Critic 없이 그룹 내 상대 비교로 학습

같은 질문에 5가지 답변을 생성한다:

  • 답변 1: +5점 (정답)
  • 답변 2: 0점 (부분 정답)
  • 답변 3: 0점 (부분 정답)
  • 답변 4: +5점 (정답)
  • 답변 5: +3점 (거의 정답)

평균: 2.6점

상대 점수로 정책을 업데이트한다:

  • 답변 1: +5 - 2.6 = +2.4 (강화)
  • 답변 2: 0 - 2.6 = -2.6 (약화)
  • 답변 3: 0 - 2.6 = -2.6 (약화)
  • 답변 4: +5 - 2.6 = +2.4 (강화)
  • 답변 5: +3 - 2.6 = +0.4 (약간 강화)

GRPO의 장점

장점설명
효율성Critic Network 불필요
안정성상대 비교로 안정적 학습
확장성대규모 모델에 적용 용이

성능 비교

벤치마크DeepSeek-R1o1-full
AIME 202471%85%
AIME 2024 (Majority 8)86.7%85%
GPQA Diamond90%92%

Majority Voting

같은 문제를 8번 풀어본다:

  • 시도 1: 42 / 시도 2: 42 / 시도 3: 41 / 시도 4: 42
  • 시도 5: 42 / 시도 6: 43 / 시도 7: 42 / 시도 8: 42

다수결: 42 (6/8) → 최종 답변

Majority 8 사용 시 o1을 능가한다.

오픈소스의 의미

DeepSeek-R1은 오픈소스이다:

측면의미
연구추론 메커니즘 분석 가능
개발파인튜닝, 도메인 적용 가능
비용o1 대비 훨씬 저렴한 운영
접근성누구나 사용 가능
투명성내부 동작 확인 가능

R1 vs R1-Zero

R1-ZeroR1
훈련 방식순수 RLSFT + RL
데이터없음추론 데이터 사용
성능약간 낮음더 높음
의의연구적 가치실용적 가치

R1-Zero는 **"추론 능력이 학습될 수 있다"**는 것을 증명한 연구적 의의가 있고, R1은 이를 바탕으로 실용적 성능을 높인 모델이다.

사용 방법

아래 코드는 Hugging Face Transformers를 통해 DeepSeek-R1 모델을 로드하고 추론을 실행하는 기본 예제이다. torch_dtype=torch.bfloat16은 메모리 효율을 위해 16비트 부동소수점을 사용하는 설정이며, max_new_tokens=2048은 모델이 내부 추론 토큰을 충분히 생성할 수 있도록 최대 출력 길이를 지정하는 파라미터이다.

python
# Hugging Face에서 사용
from transformers import AutoModelForCausalLM, AutoTokenizer
 
model = AutoModelForCausalLM.from_pretrained(
    "deepseek-ai/DeepSeek-R1",
    torch_dtype=torch.bfloat16
)
tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/DeepSeek-R1")
 
# 추론
inputs = tokenizer("AIME 문제를 풀어주세요: ...", return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=2048)
print(tokenizer.decode(outputs[0]))

o1과의 차이점

o1DeepSeek-R1
라이선스상용 API오픈소스
비용높음낮음
커스터마이징불가가능
투명성블랙박스공개
성능약간 우위비슷

한계

  1. 하드웨어 요구: 대형 모델은 고사양 GPU 필요
  2. 추론 속도: 내부 추론으로 시간 소요
  3. 영어 중심: 다국어 성능은 o1보다 낮을 수 있음

관련 개념

  • OpenAI o1: 비교 대상
  • Test-Time Compute Scaling: 추론 시간 최적화
  • GRPO: DeepSeek의 학습 알고리즘