| from dataclasses import dataclass, field |
| from typing import Optional, Callable, Any |
|
|
|
|
| @dataclass |
| class SamplingParams: |
| temperature: float = 1.0 |
| max_tokens: int = 64 |
| ignore_eos: bool = False |
| cfg_scale: float = 1.0 |
| top_k: Optional[int] = None |
| top_p: Optional[float] = None |
| min_p: Optional[float] = None |
| repetition_penalty: float = 1.0 |
| |
| |
| logits_processor: Optional[Any] = field(default=None, repr=False) |
| |
| |
| logits_processor_update_state: Optional[Callable[[int], None]] = field(default=None, repr=False) |
| |
| logits_bias: Optional[Any] = field(default=None, repr=False) |
| |
| seed: Optional[int] = None |
|
|
| def __post_init__(self): |
| assert self.temperature > 1e-10, "greedy sampling is not permitted" |
| assert self.cfg_scale >= 1.0, "cfg_scale must be >= 1.0" |
| if self.top_k is not None: |
| assert self.top_k > 0, "top_k must be > 0" |
| if self.top_p is not None: |
| assert 0.0 < self.top_p <= 1.0, "top_p must be in (0.0, 1.0]" |
| if self.min_p is not None: |
| assert 0.0 < self.min_p <= 1.0, "min_p must be in (0.0, 1.0]" |
| assert self.repetition_penalty > 0.0, "repetition_penalty must be > 0.0" |
|
|