MMLU
Massive Multitask Language Understanding
57개 과목의 객관식 문제로 LLM 지식을 평가하는 벤치마크.
Massive Multitask Language Understanding
57개 과목의 객관식 문제로 LLM 지식을 평가하는 벤치마크.
MMLU(Massive Multitask Language Understanding)는 LLM의 지식과 추론 능력을 평가하는 대표적인 벤치마크입니다. 57개 학문 분야에 걸쳐 약 15,000개의 4지선다 객관식 문제로 구성되어 있으며, 초등학교부터 전문가 수준까지 다양한 난이도를 포함합니다.
2020년 UC Berkeley의 Dan Hendrycks 연구팀이 발표했습니다. 당시 GPT-3조차 43.9% 정확도로 인간 전문가(89.8%)에 크게 뒤쳐졌습니다. 이후 LLM 발전의 주요 지표로 활용되어, 2024년 GPT-4o는 87.2%, Claude 3.5 Sonnet은 88.7%를 달성했습니다.
MMLU는 STEM(수학, 물리, 컴퓨터과학), 인문학(역사, 철학, 법학), 사회과학(경제, 심리, 정치), 기타(의료, 비즈니스) 4개 대분류로 구성됩니다. few-shot 설정(5-shot이 표준)에서 모델에 예시를 제공한 후 정답을 맞추도록 평가합니다.
실무에서 MMLU 점수는 LLM 선택의 핵심 기준입니다. 법률 AI에는 법학 세부 점수를, 의료 AI에는 의학 세부 점수를 참고합니다. 다만 MMLU만으로 모든 능력을 평가할 수 없어, HumanEval(코딩), MT-Bench(대화) 등과 함께 종합적으로 판단해야 합니다.
from datasets import load_dataset
from openai import OpenAI
import re
# MMLU 데이터셋 로드 (HuggingFace)
dataset = load_dataset("cais/mmlu", "all", split="test")
# 특정 과목 필터링 (예: computer_science)
cs_questions = [q for q in dataset if q["subject"] == "high_school_computer_science"]
client = OpenAI()
def evaluate_mmlu_question(question, choices, answer_idx):
"""MMLU 문제 평가 함수"""
# 5-shot 프롬프트 구성 (실제로는 few-shot 예시 추가)
prompt = f"""Answer the following multiple choice question. Only output A, B, C, or D.
Question: {question}
A) {choices[0]}
B) {choices[1]}
C) {choices[2]}
D) {choices[3]}
Answer:"""
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
max_tokens=1,
temperature=0
)
predicted = response.choices[0].message.content.strip().upper()
correct_answer = ["A", "B", "C", "D"][answer_idx]
return predicted == correct_answer
# 샘플 평가 실행
correct = 0
total = min(50, len(cs_questions)) # 샘플 50문제
for i, q in enumerate(cs_questions[:total]):
is_correct = evaluate_mmlu_question(
q["question"],
q["choices"],
q["answer"]
)
correct += int(is_correct)
if (i + 1) % 10 == 0:
print(f"Progress: {i+1}/{total}, Accuracy: {correct/(i+1)*100:.1f}%")
print(f"\nFinal Accuracy: {correct/total*100:.1f}%")
print(f"Subject: high_school_computer_science")
# lm-evaluation-harness 사용 (더 정확한 평가)
# pip install lm-eval
# lm_eval --model openai --model_args model=gpt-4o-mini --tasks mmlu --batch_size 8
"우리 파인튜닝 모델의 MMLU 점수가 베이스 모델 대비 법률 분야에서 12% 향상됐습니다. 전체 점수는 72%에서 68%로 약간 떨어졌지만, 타겟 도메인에서 성능이 올랐으니 트레이드오프로 볼 수 있습니다."
"MMLU는 57개 과목의 지식을 테스트하는 벤치마크입니다. GPT-4는 86%, Claude 3 Opus는 86.8%로 인간 전문가 수준에 근접했습니다. 다만 MMLU는 추론보다 지식 위주라서, 코딩은 HumanEval, 수학은 GSM8K로 별도 평가합니다."
"MMLU 점수만 보면 안 됩니다. 최근 모델들이 MMLU에 오버핏되었다는 비판이 있어서, MMLU-Pro나 GPQA 같은 더 어려운 벤치마크가 나왔습니다. 실제 업무 성능은 도메인별 테스트셋으로 따로 평가해야 합니다."
MMLU는 지식 테스트일 뿐입니다. 코딩 능력, 긴 문맥 이해, 지시 따르기 등은 별도 벤치마크로 평가해야 합니다.
MMLU와 함께 HumanEval(코딩), MT-Bench(대화), TruthfulQA(정확성) 등을 함께 확인하세요. 가장 중요한 것은 실제 사용 케이스에 맞는 자체 평가셋입니다.