8B Baseline 모델 비교 분석: Llama 3.1 vs DeepSeek R1 Distill

날짜: 2026-03-05
모델: Llama 3.1 8B Instruct vs DeepSeek-R1-Distill-Llama-8B

이 문서는 8B 급 두 모델의 baseline(adapter 없는) 평가 결과를 비교 분석한다.
DeepSeek R1 Distill이 reasoning distillation 모델이라 더 우수할 것으로 기대했으나,
대부분의 태스크에서 크게 열세인 결과가 나왔고, 그 원인을 분석한다.


1. 실험 개요

비교 모델

항목Llama 3.1 8BDeepSeek R1 Distill 8B
model_idmeta-llama/Llama-3.1-8B-Instructdeepseek-ai/DeepSeek-R1-Distill-Llama-8B
파라미터 수8B8B
특성General instruction-tunedReasoning distillation (R1 → Llama)
응답 패턴답변 먼저<think> 추론 → 답변
Prediction 경로baseline-8b/20260304_185337/baseline-8b/20260304_170234/

평가 설정

태스크샘플 수max_tokens유형
ARC25964객관식 (과학 추론)
BoolQ94316Yes/No QA
CommonsenseQA97464객관식 (상식 추론)
ExploreToM1,33064Theory of Mind
GSM8K747256수학 추론
HumanEvalPlus16512코드 생성
MBPP+37512코드 생성
SelfAware33764자기인식 (IDK 판별)
TriviaQA69564상식 QA

2. Cross-Eval 정답률 비교

태스크Llama 3.1 8BDeepSeek R1 8BΔ
ARC9.3% (24/259)0.8% (2/259)-8.5pp
BoolQ65.3% (616/943)1.4% (13/943)-63.9pp
CommonsenseQA21.5% (209/974)6.9% (67/974)-14.6pp
ExploreToM34.1% (453/1330)24.6% (327/1330)-9.5pp
GSM8K77.0% (575/747)13.0% (97/747)-64.0pp
HumanEvalPlus62.5% (10/16)0.0% (0/16)-62.5pp
MBPP+70.3% (26/37)16.2% (6/37)-54.1pp
SelfAware24.9% (84/337)32.0% (108/337)+7.1pp
TriviaQA59.4% (413/695)14.4% (100/695)-45.0pp

요약

  • DeepSeek R1이 우세한 태스크는 SelfAware 단 1개 (+7.1pp)
  • 나머지 8개 태스크에서 모두 열세, 특히 BoolQ (-63.9pp), GSM8K (-64.0pp), HumanEvalPlus (-62.5pp)는 60pp 이상 차이
  • 이 격차가 모델 능력 부족이 아닌 평가 파이프라인 비호환성 때문임을 아래에서 분석

3. 핵심 분석: DeepSeek R1의 Reasoning Token 문제

3.1 근본 원인: <think> 토큰 소진

DeepSeek R1 Distill은 응답 시작부터 사고 과정을 먼저 생성하는 구조를 가진다:

(사고 과정 텍스트)...</think>

(실제 답변)

평가 코드의 max_tokens 한도가 이 사고 과정에서 대부분 소진되어, 실제 답변에 도달하지 못하거나 답변이 도중에 잘리는 문제가 발생한다.

GSM8K에서 확인: 747건 중 703건(94.0%)에 </think> 태그가 존재하지만, </think> 이후에 #### 패턴(최종 답 마커)이 있는 건은 0건 — 답변이 모두 도중에 잘렸다.

참고: 평가 코드에는 현재 R1-Distill 모델을 위한 _think_budget = 512 토큰 추가 메커니즘이 구현되어 있으나 (sctom/evaluation.py:738), 이 baseline 평가는 해당 코드 추가 이전에 수행되었다.

3.2 태스크별 영향 분석

태스크max_tokensLlama 응답 패턴DeepSeek 응답 패턴파싱 실패 유형
BoolQ16”Yes/No + 근거""Okay, so I need to figure out…“912/943 empty predicted
GSM8K256풀이 + ####사고과정 + </think> + 잘린 답#### 없음 → 중간 숫자 추출
HumanEval+512코드 블록 생성”Okay, I need to write…” 자연어코드 블록 없음
MBPP+512코드 블록 생성”Okay, I need to write…” 자연어코드 블록 없음
ExploreToM64직접 답변”Okay, so I’m trying to figure out…”미완성 문장에서 substring match
TriviaQA64직접 답변”Okay, so I need to figure out…”미완성 사고과정
ARC64선택지 답변사고과정 중 잘림선택지 파싱 실패
CommonsenseQA64선택지 답변사고과정 중 잘림선택지 파싱 실패

3.3 BoolQ 상세 — 가장 극적인 사례 (-63.9pp)

max_tokens=16이라 사고 시작 후 바로 잘림, “yes”/“no” 단어 자체가 없음.

응답 비교 예시 (동일 질문 — “Is Windows Movie Maker a part of Windows?“):

Llama: “Yes, Windows Movie Maker is a part of the Windows Essentials software suite.”
→ predicted=“yes” ✓

DeepSeek: “Okay, so I need to figure out if Windows Movie Maker is part of Windows”
→ predicted="" (빈 값) ✗

정량 분석:

  • 943건 중 **912건 (96.7%)**이 빈 predicted → 사실상 전수 실패
  • 맞은 13건 중 12건이 “no” 예측: 사고 과정에 우연히 “no”가 포함된 경우
    • 예: “Deal or No Deal” 질문에서 “No Deal”이 파싱됨
  • 1건만 “yes” 예측 (human eyes reflecting light 질문)

Llama 분포 (참고): 943건 중 616건 정답 (65.3%), “yes”/“no” 직접 답변 패턴

3.4 GSM8K 상세 — 답변 도달했으나 잘림 (-64.0pp)

GSM8K는 max_tokens=256으로 다른 QA 태스크보다 여유가 있어, 703건(94.0%)이 </think> 태그까지 도달했다.
그러나 </think> 이후 실제 답변이 시작되지만 답변 자체도 도중에 잘려 #### 패턴에 도달하지 못한다.

응답 비교 예시 (동일 질문 — 레스토랑 비용 계산, 정답: 108):

Llama: “To find the total amount spent at the restaurant, we need to calculate the cost of the appetizer and the entrees, then add the tip. The appetizer costs 20 each, so 4 x $20 = …”
→ 풀이 과정 포함, 정답 추출 ✓

DeepSeek (사고 과정 끝부분): “…Adding 90 results in a total of 108." **DeepSeek** (`</think>` 이후): "**Solution:** 1. **Calculate the cost of the appetizer and entrees:** - **Appetizer:** \10 - Entrees: 4 entrees × $20 each = $80 - Subtotal: $10 (appetizer) + $80 (ent”
→ 답변이 “ent” 에서 잘림, #### 패턴 없음 ✗

파싱 메커니즘:

  • extract_gsm8k_answer()#### 패턴 검색 → 실패
  • Fallback으로 첫 번째 숫자 추출 → 사고 과정의 중간 수식 숫자가 추출됨
  • 정답 97/747 (13.0%)은 우연히 정답 숫자가 먼저 나온 경우

3.5 코드 생성 태스크 — HumanEvalPlus (0/16), MBPP+ (6/37)

max_tokens=512로 가장 여유로운 태스크이지만, DeepSeek은 코드 대신 자연어로 설명을 생성한다.

응답 비교 예시 (correct_bracketing 함수):

Llama: ”## Correct Bracketing Function\n\nThe following Python function checks if every opening bracket in a given string has a corresponding closing bracket.\n\n```python …”
→ 코드 블록 포함 ✓

DeepSeek: “Okay, I need to write a Python function called correct_bracketing that takes a string of ’(’ and ’)’ and returns True if every opening bracket has a c…”
→ 코드 블록 없이 자연어 설명만 ✗

MBPP+에서 6건 정답: 사고 과정 내 코드 스니펫이 우연히 통과한 것으로 추정

3.6 ExploreToM (-9.5pp) & TriviaQA (-45.0pp) — Substring Match 효과

max_tokens=64로 사고 과정이 빠르게 잘리지만, substring match 방식의 평가에서는 사고 과정 내에 정답이 포함될 수 있다.

ExploreToM 예시 (정답: “leather satchel”):

Llama: “The script is now safely tucked into the worn leather satchel on a nearby table.”
→ “leather satchel” substring match ✓

DeepSeek: “Okay, so I’m trying to figure out where the script is in this story. Let me read through the story again to make sure I…”
→ 정답 단어 미포함 ✗

TriviaQA 예시 (정답: “WORCESTERSHIRE SAUCE”):

Llama: “The famous sauce you’re referring to is likely Worcestershire sauce.”
→ “Worcestershire” substring match ✓

DeepSeek: “Okay, so I need to figure out the secret recipe for a famous sauce that’s made by Lea and Perrins. I remember hearing th…”
→ 사고과정 중 잘림, 정답 단어 미포함 ✗

ExploreToM은 327/1330 (24.6%)이 정답으로, substring match 덕분에 사고 과정 내 정답 포함 사례가 일부 있어 다른 태스크보다 gap이 작다 (-9.5pp).


4. SelfAware: DeepSeek이 우세한 유일한 태스크 (+7.1pp)

SelfAware에서 DeepSeek이 32.0%로 Llama의 24.9%를 7.1pp 앞선다. 그러나 이는 SimCSE 기반 IDK 탐지의 오작동에 의한 것이다.

IDK Confusion Matrix 비교

지표Llama 3.1DeepSeek R1
TP (IDK→IDK)4691
FP (NOT→IDK)35166
FN (IDK→NOT)5712
TN (NOT→NOT)19968
IDK 생성 수81257
Accuracy24.9%32.0%
IDK Precision56.8%35.4%
IDK Recall44.7%88.3%
  • 기대 IDK 수: 103/337 (30.6%)

분석

DeepSeek의 IDK 과잉 탐지 메커니즘:

DeepSeek은 337건 중 **257건 (76.3%)**이 IDK로 분류된다. 이는 실제로 “모르겠다”고 답한 것이 아니라, 사고 과정의 텍스트가 SimCSE 기반 IDK 탐지를 트리거하기 때문이다.

DeepSeek의 전형적 응답 시작:

“Okay, so I need to figure out…” / “Okay, so I’m trying to figure out…”

이러한 표현이 SimCSE 유사도 기반 IDK 탐지에서 “I’m not sure”, “I don’t know” 등의 IDK 패턴과 높은 유사도를 보여 IDK로 분류된다.

결과:

  • 높은 Recall (88.3%): 실제 IDK 103건 중 91건을 맞춤 — 사고 과정이 대부분 IDK로 분류되므로 IDK 기대 건도 당연히 포함
  • 낮은 Precision (35.4%): IDK로 판별한 257건 중 166건(64.6%)이 오판 — 사실상 무분별 IDK 판정
  • Accuracy 우위의 원인: TP(91) + TN(68) = 159 > Llama의 TP(46) + TN(199) = 245… 아닌 것처럼 보이지만, SelfAware accuracy는 correct 필드 기준으로 계산되며, 이는 IDK 판별뿐 아니라 답변 가능 질문의 정답도 포함

핵심: DeepSeek의 SelfAware 우위는 모델의 실제 자기인식 능력이 아닌, 사고 과정 텍스트가 IDK 탐지를 우연히 트리거한 artifact이다.


5. 응답 길이 비교

태스크Llama 3.1 (chars)DeepSeek R1 (chars)DeepSeek/Llama
ARC293.7301.4×1.0
BoolQ71.566.0×0.9
CommonsenseQA253.0284.8×1.1
ExploreToM228.7312.1×1.4
GSM8K617.7942.9×1.5
HumanEvalPlus1,379.91,917.4×1.4
MBPP+771.12,021.0×2.6
SelfAware260.5286.8×1.1
TriviaQA139.8271.8×1.9

관찰:

  • DeepSeek은 모든 태스크에서 동일하거나 더 긴 응답을 생성
  • 코드/수학 태스크에서 특히 차이가 큼: MBPP+ ×2.6, TriviaQA ×1.9, GSM8K ×1.5
  • BoolQ는 유일하게 DeepSeek이 더 짧음 (66.0 vs 71.5) — max_tokens=16이라 둘 다 잘리지만, DeepSeek의 사고 시작 패턴이 약간 더 짧은 토큰으로 표현됨
  • 응답 길이가 길다는 것은 사고 과정이 포함되어 있다는 의미이며, 실제 답변 부분은 극히 짧거나 없음

6. 결론 및 시사점

6.1 핵심 결론

DeepSeek R1 Distill의 낮은 점수는 모델 능력 부족이 아닌 평가 파이프라인과의 비호환성이 주 원인이다.

  1. R1 계열 모델은 reasoning token(<think>...</think>)을 먼저 소진하여, 제한된 max_tokens 내에서 최종 답변에 도달 불가
  2. 현재 평가 코드는 Llama 스타일의 “답변 먼저” 패턴을 가정하고 설계됨
  3. SelfAware에서의 우위(+7.1pp)도 SimCSE IDK 탐지의 오작동에 의한 artifact

6.2 공정한 비교를 위한 제안

방법설명장단점
Option A: max_tokens 대폭 증가reasoning 포함하려면 2048+ 필요정확하지만 추론 시간·메모리 급증
Option B: </think> 후처리</think> 이후 텍스트만 파싱에 사용가장 깔끔, 기존 파싱 로직 재활용 가능
Option C: System prompt 지시”Answer directly without reasoning” 추가모델의 reasoning 능력을 인위적으로 억제

현재 상태: 평가 코드에 _think_budget = 512 토큰 추가 메커니즘이 이미 구현됨 (sctom/evaluation.py:738).
이후 baseline 재평가 시 이 메커니즘이 적용되어 차이가 줄어들 것으로 예상.

6.3 유효한 비교 가능 영역

신뢰도태스크이유
상대적 신뢰ExploreToM, SelfAwareSubstring match이므로 사고 과정 내에서도 정답 포함 가능
비교 불가BoolQ, GSM8K, HumanEval+, MBPP+파싱 메커니즘이 사고 과정 텍스트와 완전히 비호환
제한적ARC, CommonsenseQA, TriviaQA객관식/단답형 파싱이 사고 과정에서는 대부분 실패

6.4 SC-TOM 연구 관점

현재 결과로는 Llama 3.1 8B와 DeepSeek R1 Distill 8B의 공정한 능력 비교가 불가능하다.
8B 급 모델 비교를 위해서는:

  1. _think_budget 적용 후 DeepSeek baseline 재평가 수행
  2. 또는 Option B (</think> 후처리) 적용 후 재평가
  3. 재평가 후에도 SelfAware IDK 탐지의 SimCSE 오작동 문제는 별도 처리 필요

현 시점에서 SC-TOM 연구의 8B 실험은 Llama 3.1 8B Instruct 단일 모델 기준으로 진행하는 것이 타당하다.


부록

A. 태스크별 max_tokens 설정 (evaluation.py)

BoolQ:         16     # → DeepSeek 사고 시작 후 즉시 잘림
ExploreToM:    64     # → 사고 과정 중간에 잘림
SelfAware:     64     # → 사고 과정이 IDK로 오탐지
ARC:           64     # → 사고 과정 중간에 잘림
CommonsenseQA: 64     # → 사고 과정 중간에 잘림
TriviaQA:      64     # → 사고 과정 중간에 잘림
GSM8K:        256     # → </think> 도달하나 답변 잘림
MBPP+:        512     # → 자연어 설명 생성, 코드 없음
HumanEval+:   512     # → 자연어 설명 생성, 코드 없음

B. BoolQ DeepSeek 정답 13건 분석

13건 중 12건이 expected=“no”로, 사고 과정에 “no”가 우연히 포함된 사례:

[96]  "Deal or No Deal" → "No Deal" 파싱
[200] minor league baseball → "no" 포함
[214] carbon monoxide detector → "no" 포함
[246] Barney the Purple Dinosaur → "no" 포함
[671] drive from North America → "no" 포함
...

1건만 expected=“yes” (human eyes reflecting light).

C. GSM8K DeepSeek </think> 통계

  • </think> 태그 포함: 703/747 (94.0%)
  • </think> 이후 #### 포함: 0/703 (0.0%)
  • 전체 정답: 97/747 (13.0%)