"...ColossalEval/examples/dataset_evaluation/inference.sh" did not exist on "74aa7d964a8fbb9a9a4865ecd9ac2bda817c3ef2"
base.py 1.03 KB
Newer Older
Fazzie-Maqianli's avatar
Fazzie-Maqianli committed
1
2
3
4
5
6
from abc import ABC, abstractmethod
from typing import Any

from coati.experience_maker.base import Experience


7
8
class ExperienceBuffer(ABC):
    """Experience buffer base class. It stores experience.
Fazzie-Maqianli's avatar
Fazzie-Maqianli committed
9

10
11
12
    Args:
        sample_batch_size (int): Batch size when sampling.
        limit (int, optional): Limit of number of experience samples. A number <= 0 means unlimited. Defaults to 0.
Fazzie-Maqianli's avatar
Fazzie-Maqianli committed
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
    """

    def __init__(self, sample_batch_size: int, limit: int = 0) -> None:
        super().__init__()
        self.sample_batch_size = sample_batch_size
        # limit <= 0 means unlimited
        self.limit = limit

    @abstractmethod
    def append(self, experience: Experience) -> None:
        pass

    @abstractmethod
    def clear(self) -> None:
        pass

    @abstractmethod
    def sample(self) -> Experience:
        pass

    @abstractmethod
    def __len__(self) -> int:
        pass

    @abstractmethod
    def __getitem__(self, idx: int) -> Any:
        pass

    @abstractmethod
    def collate_fn(self, batch: Any) -> Experience:
        pass