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",
    )

더 알아보기