LLM 벤치마크 소개

LLM 벤치마크 소개

여러 LLM 중 어떤 모델이 우리 작업에 더 적합한지 정량적으로 비교하고 싶을 때가 있어요. LLM 벤치마크는 다양한 과업에서 LLM 성능을 표준화된 방식으로 수치화해 주는 테스트 묶음이에요. DeepEval은 연구 기반의 최신 벤치마크 여러 개를 제공해서, 원하는 커스텀 LLM을 그대로 벤치마킹할 수 있게 해줘요.

출처: Introduction to LLM Benchmarks

LLM 벤치마크란

LLM 벤치마크는 추론·이해 같은 다양한 스킬에서 LLM의 성능을 평가하도록 설계된 표준화된 테스트의 모음이에요. 벤치마크 하나는 보통 두 가지로 이루어져요.

  • 하나 이상의 과업(task) — 각 과업은 대상 라벨(또는 expected_output)을 가진 별도의 평가 데이터셋.
  • 스코러(scorer) — 대상 라벨을 참조해 LLM의 예측(출력)이 맞는지 판정하는 장치.

벤치마크를 돌리면 전체 점수뿐 아니라 과업별 점수, 각 예측의 세부 내역까지 분석할 수 있어요.

커스텀 LLM 벤치마킹하기

커스텀 LLM 만들기

먼저 벤치마킹할 모델을 DeepEvalBaseLLM 클래스를 상속해 커스텀 모델로 감싸요.

그다음 벤치마크 인스턴스를 만들어 evaluate() 메서드를 호출하면 끝이에요.

# When you set batch_size, outputs for benchmarks will be generated in batches
# if `batch_generate()` is implemented for your custom LLM
results = benchmark.evaluate(model=mistral_7b, batch_size=5)
print("Overall Score: ", results)

batch_size를 지정하면, 커스텀 LLM이 batch_generate()를 구현했을 때 벤치마크 출력이 배치 단위로 생성돼요. 이렇게 하면 DeepEval이 제공하는 모든 벤치마크에서 원하는 커스텀 LLM을 평가할 수 있어요.

평가가 끝나면 결과를 여러 방식으로 확인할 수 있어요. 전체 점수, 과업별 점수, 그리고 각 예측의 세부 정보들이에요.

LLM 벤치마크 구성하기

과업(Tasks)

LLM 벤치마크의 과업은 특정 영역에 대한 LLM의 능력을 평가하기 위해 설계된 문제예요. 예를 들어 MMLU 벤치마크의 일부만 평가하고 싶다면 MMLUTASK 목록을 제공하면 돼요.

from deepeval.benchmarks import MMLU
from deepeval.benchmarks.task import MMLUTask

tasks = [MMLUTask.HIGH_SCHOOL_COMPUTER_SCIENCE, MMLUTask.ASTRONOMY]
benchmark = MMLU(tasks=tasks)

이 예시는 Mistral 7B 모델을 MMLU의 HIGH_SCHOOL_COMPUTER_SCIENCEASTRONOMY 과업에 대해서만 평가해요.

벤치마크마다 고유한 Task enum이 있고, 각 벤치마크 문서 페이지에서 확인할 수 있어요. 이 과업들은 각 벤치마크의 원래 연구 논문에서 100% 가져온 것이며, Hugging Face에 있는 벤치마크 데이터셋과 일대일로 매핑돼요. 기본적으로 deepeval은 해당 벤치마크의 모든 과업에 대해 LLM을 평가해요.

결과 해석

evaluate()를 호출한 뒤에는 성능을 이렇게 나눠 읽을 수 있어요.

  • overall_score — 모든 과업에 걸친 전체 성능.
  • task_scores — 과업별 점수를 담은 pandas DataFrame.
  • predictions — 모델이 한 모든 예측의 상세 내역.

핵심 정리

커스텀 LLM을 DeepEvalBaseLLM 클래스로 감싸고, MMLU() 같은 벤치마크를 인스턴스화한 뒤 그 evaluate() 메서드에 모델을 넘기면 돼요. 이 방식은 어떤 LLM에도 적용할 수 있어요. 결과는 overall_score, task_scores, predictions로 나눠 분석하면 되죠.

더 알아보기