DeepSeek-R1: 오픈소스 추론 모델
OpenAI o1과 유사한 성능을 달성한 오픈소스 모델. 특히 R1-Zero는 순수 강화학습만으로 추론 능력이 자동 출현
2026년 2월 1일·5 min read·
ai
ai-agent
llm
deepseek
open-source
reasoning
오픈소스 추론 모델
개념
DeepSeek-R1은 OpenAI o1과 유사한 성능을 달성한 오픈소스 모델입니다. 특히 DeepSeek-R1-Zero는 순수 강화학습만으로 훈련되었습니다.
혁신적 발견: R1-Zero
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-R1 | o1-full |
|---|---|---|
| AIME 2024 | 71% | 85% |
| AIME 2024 (Majority 8) | 86.7% | 85% |
| GPQA Diamond | 90% | 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-Zero | R1 | |
|---|---|---|
| 훈련 방식 | 순수 RL | SFT + RL |
| 데이터 | 없음 | 추론 데이터 사용 |
| 성능 | 약간 낮음 | 더 높음 |
| 의의 | 연구적 가치 | 실용적 가치 |
R1-Zero는 **"추론 능력이 학습될 수 있다"**는 것을 증명한 연구적 의의가 있고, R1은 이를 바탕으로 실용적 성능을 높인 모델입니다.
사용 방법
# 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과의 차이점
| o1 | DeepSeek-R1 | |
|---|---|---|
| 라이선스 | 상용 API | 오픈소스 |
| 비용 | 높음 | 낮음 |
| 커스터마이징 | 불가 | 가능 |
| 투명성 | 블랙박스 | 공개 |
| 성능 | 약간 우위 | 비슷 |
한계
- 하드웨어 요구: 대형 모델은 고사양 GPU 필요
- 추론 속도: 내부 추론으로 시간 소요
- 영어 중심: 다국어 성능은 o1보다 낮을 수 있음
관련 개념
- OpenAI o1: 비교 대상
- Test-Time Compute Scaling: 추론 시간 최적화
- GRPO: DeepSeek의 학습 알고리즘