LM Evaluation Harness Python API — simple_evaluate로 평가하기
LM Evaluation Harness Python API — simple_evaluate로 평가하기
평가를 파이썬 스크립트나 애플리케이션에 넣고 싶다면 Python API를 쓰세요. 세 가지 진입점이 있는데, 대부분은 simple_evaluate()로 충분합니다.
출처: https://github.com/EleutherAI/lm-evaluation-harness/blob/main/docs/python-api.md
세 가지 진입점
| Function | Use Case |
|---|---|
simple_evaluate() |
Most common - accepts model name strings or LM objects |
EvaluatorConfig |
Config-based - load settings from YAML or dataclass |
evaluate() |
Low-level - full control over task dictionaries |
quick start
가장 간단한 형태예요. 모델 이름 문자열과 작업 목록만 넘기면 됩니다.
import lm_eval
results = lm_eval.simple_evaluate(
model="hf",
model_args="pretrained=gpt2",
tasks=["hellaswag"],
)
print(results["results"])
기본 사용법
추가 파라미터로 few-shot 수, 배치 크기, 디바이스를 지정할 수 있어요.
import lm_eval
results = lm_eval.simple_evaluate(
model="hf",
model_args="pretrained=gpt2,dtype=float32",
tasks=["hellaswag", "arc_easy"],
num_fewshot=5,
batch_size=8,
device="cuda:0",
)
주요 파라미터는 model(모델 이름 또는 LM 객체), model_args, tasks, batch_size("auto" 가능), device(cuda/cpu/mps), limit(작업당 예제 수 제한), log_samples(입출력 저장), task_manager(외부 작업용), gen_kwargs(생성 인자) 등이에요.
외부 작업과 커스텀 모델
외부 커스텀 작업을 쓰려면 TaskManager로 include path를 지정합니다.
import lm_eval
from lm_eval.tasks import TaskManager
task_manager = TaskManager(include_path="/path/to/custom/tasks")
results = lm_eval.simple_evaluate(
model="hf",
model_args="pretrained=gpt2",
tasks=["my_custom_task"],
task_manager=task_manager,
)
커스텀 모델은 lm_eval.api.model.LM을 상속해서 만들면 simple_evaluate에 그대로 넘길 수 있어요. 여러 모델을 반복 평가하려면 모델 이름 리스트를 돌면서 batch_size="auto"로 각각 평가하는 패턴을 씁니다.
import lm_eval
models = [
"gpt2",
"gpt2-medium",
"gpt2-large",
]
all_results = {}
for model_name in models:
results = lm_eval.simple_evaluate(
model="hf",
model_args=f"pretrained={model_name}",
tasks=["hellaswag"],
batch_size="auto",
)
더 알아보기
- CLI 사용법은 Quickstart 참고
- 커스텀 모델 확장은 New Model Guide 참고