tliu's picture
Upload folder using huggingface_hub
c95c7b0 verified
Raw
History Blame Contribute Delete
1.88 kB
import os
import random
import pytest
import lm_eval
import lm_eval.tasks as tasks
import lm_eval.api.model as model
import lm_eval.models as models
import lm_eval.evaluator as evaluator
from lm_eval.api.utils import DEFAULT_SEED, set_seed
# TODO: More fine grained unit tests rather than this big honking integration
# test once we break evaluator into smaller, more manageable pieces
def _ll_fn(requests):
for ctx, cont in requests:
if len(ctx) == 0:
continue
# Check text-target-separator default spacing convention.
# ctx + (' ' + cont)
assert ctx[-1] != " "
assert cont[0] == " "
res = []
random.seed(DEFAULT_SEED)
for _ in requests:
res.append((-random.random(), False))
return res
def _ll_perp_fn(requests):
for (string,) in requests:
assert isinstance(string, str)
res = []
random.seed(DEFAULT_SEED)
for _ in requests:
res.append(-random.random())
return res
@pytest.mark.parametrize("task_name", lm_eval.list_tasks())
def test_evaluator(task_name):
set_seed()
template_names = tasks.list_templates(task_name)
# Only choose 1 promptsource template.
template_name = template_names[0] if template_names else None
task = tasks.get_task(task_name, template_name)
os.system("rm test_cache.db")
lm = model.CachingLM(models.get_model("dummy"), "test_cache.db")
lm.loglikelihood = _ll_fn
lm.loglikelihood_rolling = _ll_perp_fn
limit = 5
e1 = evaluator.evaluate(
model=lm,
tasks=[task],
num_fewshot=0,
bootstrap_iters=10,
limit=limit,
)["results"]
e2 = evaluator.evaluate(
model=lm,
tasks=[task],
num_fewshot=0,
bootstrap_iters=10,
limit=limit,
)["results"]
# Check that caching is working
assert e1 == e2