instance.py 1.08 KB
Newer Older
1
from dataclasses import dataclass, field
Baber's avatar
Baber committed
2
from typing import Literal, Optional, Tuple
Baber's avatar
Baber committed
3

Baber's avatar
Baber committed
4
5

# from lm_eval.api.schemas import GenerateInput, LoglikelihoodInput
6
7
8
9
10


OutputType = Literal[
    "loglikelihood", "loglikelihood_rolling", "generate_until", "multiple_choice"
]
11

Baber's avatar
Baber committed
12
# T = TypeVar("T", LoglikelihoodInput, GenerateInput)
Baber's avatar
Baber committed
13

lintangsutawika's avatar
lintangsutawika committed
14

15
@dataclass
Baber's avatar
Baber committed
16
class Instance:
17
    request_type: OutputType
haileyschoelkopf's avatar
haileyschoelkopf committed
18
    doc: dict
Baber's avatar
Baber committed
19
    arguments: tuple
haileyschoelkopf's avatar
haileyschoelkopf committed
20
    idx: int
21
    metadata: Tuple[Optional[str], Optional[int], Optional[int]] = field(
haileyschoelkopf's avatar
haileyschoelkopf committed
22
        default_factory=lambda: (None, None, None)
23
    )
Baber's avatar
Baber committed
24
    resps: list = field(default_factory=list)
25
26
    filtered_resps: dict = field(default_factory=dict)

27
    # initialized after init
28
29
30
    task_name: Optional[str] = None
    doc_id: Optional[int] = None
    repeats: Optional[int] = None
31

Ethan Smith's avatar
Ethan Smith committed
32
    def __post_init__(self) -> None:
haileyschoelkopf's avatar
haileyschoelkopf committed
33
        # unpack metadata field
34
        self.task_name, self.doc_id, self.repeats = self.metadata
lintangsutawika's avatar
lintangsutawika committed
35

36
    @property
Baber's avatar
Baber committed
37
    def args(self):
38
39
40
        """
        Returns (string,) where `string` is the string to calculate loglikelihood over
        """
Baber's avatar
Baber committed
41
        return self.arguments