| 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 |
|
|
|
|
| |
| |
|
|
|
|
| def _ll_fn(requests): |
| for ctx, cont in requests: |
| if len(ctx) == 0: |
| continue |
| |
| |
| 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) |
| |
| 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"] |
| |
| assert e1 == e2 |
|
|