초간단 벤치마크로 본 OpenAI 모델 10종
OpenAI 모델을 고를 때 보통 이름을 보고 판단한다. o-시리즈는 추론 전문, GPT-5는 최신, mini는 가볍고 저렴한 것. 그런데 직접 실험해보면 이름과 실제 성능이 꽤 다를 때가 있다.
몇 가지 예를 들면:
- gpt-5-nano를 minimal 설정으로 돌리면 정확도가 4.4%다. 30번 중 1~2번만 맞는다. 무작위로 찍는 것(33%)보다 나쁘다.
- o1의 정확도는 47.8%였다. 추론 전문 모델인데 gpt-4o(66.7%)보다 낮았다.
- gpt-5-mini(high)는 7.72초가 걸린다. o4-mini는 2.45초에 100% 정확도를 낸다. 왜 high를 쓰겠는가.
이 글은 그 실험 기록이다.
왜 이 실험을 했나
실제 서비스에 모델을 붙일 때, 벤치마크 숫자만으로는 판단이 어렵다. 공식 벤치마크는 대부분 지식 기반 문제를 다루는데, 내가 진짜 궁금했던 건 달랐다. reasoning effort를 올리면 실제로 얼마나 좋아지는가. 그리고 o-시리즈가 GPT-5보다 정말 낫는가.
그래서 언어 모델이 구조적으로 어려워하는 문제 3종을 직접 설계하고, 10종 모델을 각각 30회씩 반복 측정했다.
실험 설계
문제 3종
단순 지식이 아닌 실제 추론을 요구하는 문제를 골랐다.
문자 카운팅: "영어 단어 'strawberry'에는 r이 몇 번 나오지?" (정답: 3) — 토큰 단위로 텍스트를 처리하는 언어 모델의 구조적 한계를 건드린다.
소수 비교: "9.11과 9.9 중에서 어떤 숫자가 더 커?" (정답: 9.9) — "11 > 9"라는 패턴을 따르면 틀린다. 실제 수 이해가 필요하다.
간단한 대수: "8.9 = x + 8.11 → x 값을 구해줘" (정답: 0.79) — 기본 산술이지만 소수점 처리에서 종종 실패한다.
평가 대상 (총 10종)
- GPT-4 시리즈: gpt-4o, gpt-4.1, gpt-4.1-mini
- GPT-5 시리즈: gpt-5, gpt-5-mini, gpt-5-nano (각 모델에 reasoning effort 4단계 적용: minimal/low/medium/high)
- o-시리즈: o1, o3, o3-mini, o4-mini
각 모델마다 30회 반복 측정, 총 90개 데이터 포인트(3문제 × 30회).
모델 불확실성 측정을 위해 Chat Completion API의 logprobs도 활용했다. 모델이 "3"을 72.9%, "4"를 26.8% 확률로 선택한다면 가중 평균 3.27로 정량화할 수 있다.
response = client.chat.completions.create(
model="gpt-4.1",
messages=[{"role":"user","content":"인생의 의미는 무엇이지? 반드시 1~5 사이 정수로 답해줘."}],
logprobs=True,
top_logprobs=10
)reasoning effort minimal은 함정이다
GPT-5 시리즈에서 가장 놀라운 결과는 minimal 설정에서 나왔다.
| 모델 | minimal 정확도 | low 정확도 |
|---|---|---|
| gpt-5 | 66.7% | 86.7% |
| gpt-5-mini | 33.3% | 98.9% |
| gpt-5-nano | 4.4% | 98.9% |
gpt-5-nano (minimal)는 30번 중 1~2번 정도만 맞췄다. 무작위 찍기(33%)보다도 낮다. 반면 같은 모델을 low로만 올려도 98.9%가 된다. minimal과 low 사이에 이렇게 큰 절벽이 있을 줄은 예상 못 했다.
결론: GPT-5 시리즈를 minimal로 쓸 이유가 없다. 특히 nano minimal은 사실상 사용 불가다.
o1, o3는 이름값을 못 한다
o-시리즈는 "추론 전문 모델"이라는 포지션을 갖고 있다. 그런데 결과는 이랬다.
| 모델 | 정확도 | 응답 시간 |
|---|---|---|
| o1 | 47.8% | 3.45초 |
| o3 | 61.1% | 2.67초 |
| o3-mini | 92.2% | 2.78초 |
| o4-mini | 100% | 2.45초 |
o1이 47.8%라는 건 실험에서 가장 충격적인 수치였다. gpt-4o(66.7%)보다 낮고, gpt-4.1(66.7%)과 같은 수준이다. o3도 61.1%로 기대에 못 미쳤다.
반면 경량 버전인 o3-mini와 o4-mini는 전혀 달랐다. o4-mini는 100% 정확도에 2.45초. o-시리즈 중 가장 좋은 모델이 가장 가볍고 빠른 버전이었다.
한 가지 유의할 점은, 이 세 문제가 토큰 수준의 지각과 소수 연산에 집중되어 있어 o1/o3에게 구조적으로 불리할 수 있다. 지식 기반이나 코드 추론 태스크에서는 결과가 다를 수 있다.
결론: o-시리즈를 쓴다면 o4-mini가 압도적이다. o1/o3는 비용 대비 성능이 좋지 않다.
가성비 승자는 gpt-5-nano (low)
정확도와 응답 시간을 함께 보면 몇 가지 구성이 두드러진다.
| 모델 | 정확도 | 응답 시간 | 평가 |
|---|---|---|---|
| gpt-5-nano (low) | 98.9% | 1.72초 | 최고 가성비 |
| o4-mini | 100% | 2.45초 | 최고 정확도 |
| gpt-5-mini (low) | 98.9% | 3.25초 | 균형 |
| gpt-4o | 66.7% | 0.67초 | 최고 속도 |
gpt-5-nano (low)는 98.9% 정확도를 1.72초에 낸다. 가격도 가장 저렴한 nano 모델이다. 대부분의 실용적인 태스크에서 이 설정이 최선의 시작점이다.
100% 정확도가 필요하다면 o4-mini. 빠른 응답이 최우선이라면 gpt-4o.
gpt-5-mini (high)는 7.72초가 걸리는데 o4-mini와 정확도가 같다(100%). 이 설정을 선택할 이유를 찾기 어렵다.
문제 유형별 분석
소수 비교 (9.11 vs 9.9)
세 문제 중 가장 변별력이 높았다. 많은 모델이 "11 > 9"라는 패턴을 따라 9.11을 더 크다고 답했다.
- GPT-4 시리즈: 0~30% 정확도
- o1, o3: 30~40%
- o4-mini, o3-mini: 100%
- gpt-5-mini/nano (low 이상): 95~100%
GPT-4 계열 전체가 이 문제에서 거의 틀렸다. 소수 비교가 핵심인 태스크라면 GPT-4는 피해야 한다.
문자 카운팅 (strawberry의 r)
토큰 수준 처리의 한계를 드러내는 문제다.
- o4-mini, o3-mini: 100%
- GPT-5 (low 이상): 90~100%
- gpt-5-nano (minimal): 30회 중 1회 정답
간단한 대수 (8.9 = x + 8.11)
세 문제 중 가장 쉬웠다. 대부분의 모델이 잘 풀었지만 minimal 설정과 o1에서 간헐적 실패가 있었다. o1은 가끔 -0.21이라는 부호 오류를 냈다.
실용 추천
태스크별 모델 선택
실시간 대화형 서비스 → gpt-4o (0.67초, 67%)
- 빠른 응답이 최우선일 때
일반 프로덕션 환경 → gpt-5-nano (low) (1.72초, 99%) — 최고 가성비
- 대부분의 실용적 태스크에 적합
- 가격이 가장 저렴한 nano 모델
높은 정확도가 필요한 태스크 → o4-mini (2.45초, 100%)
- 추론이 필요한 작업
- 코드 디버깅, 수학 문제
비용 최적화가 필요한 배치 처리 → gpt-5-nano (low) (1.72초, 99%)
- 대량 처리에서 가장 효율적
GPT-5 reasoning effort 가이드
minimal → 사용하지 마세요 (nano는 4.4%)
low → 대부분의 경우 추천 (98~99% 정확도)
medium → 정확도가 더 중요할 때
high → o4-mini가 더 빠르고 같은 정확도피해야 할 설정
- gpt-5-nano (minimal): 실질적으로 사용 불가 (4.4%)
- gpt-5-mini (high): 7.72초, o4-mini 대비 이점 없음
- o1, o3: 비용 대비 성능 부족
기술 상세
Responses API 파라미터
reasoning.effort (GPT-5 전용)
"minimal": 최소 추론 (빠르지만 부정확)"low": 낮은 추론 (권장 설정)"medium": 중간 추론 (높은 정확도)"high": 최대 추론 (최고 정확도, 느림)
text.verbosity
"low": 간결한 답변"medium": 표준 답변"high": 상세한 답변
logprobs 활용
logprobs를 사용하면 모델의 불확실성을 정량화할 수 있다.
probs = [math.exp(logprob) for logprob in logprobs]
# 불확실성을 가중 평균으로 측정
weighted_avg = sum(val * prob for val, prob in zip(values, probs)) / sum(probs)
# 엔트로피로 확신도 측정
entropy = -sum(p * math.log(p) for p in probs if p > 0)실험 조건
- 모델당 30회 반복 측정
- 3문제 × 30회 = 90 데이터 포인트
- 체크포인트 기능으로 재현성 확보
- 2025년 4월 14일 기준 모델 버전
참고
이름, 가격, 마케팅 포지션은 참고일 뿐이다. 유일하게 신뢰할 수 있는 방법은 실제 태스크로 직접 테스트하는 것이다. 이 실험이 그 출발점이 되길 바란다.
2025년 10월 기준 분석이다. OpenAI는 지속적으로 모델을 업데이트하므로 최신 정보는 공식 문서를 참고하라.