metadata.py 1.14 KB
Newer Older
1
# SPDX-License-Identifier: Apache-2.0
2
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3

4
from dataclasses import dataclass
5
from typing import Optional
6
7
8
9
10
11
12

import torch


@dataclass
class SamplingMetadata:

13
    temperature: Optional[torch.Tensor]
14
15
16
    all_greedy: bool
    all_random: bool

17
18
19
    top_p: Optional[torch.Tensor]
    top_k: Optional[torch.Tensor]
    min_p: Optional[torch.Tensor]
20

21
    generators: dict[int, torch.Generator]
22

23
24
    # None means no logprobs, 0 means sampled token logprobs only
    max_num_logprobs: Optional[int]
25
26
27
28
29
30
31

    no_penalties: bool
    prompt_token_ids: Optional[torch.Tensor]
    frequency_penalties: torch.Tensor
    presence_penalties: torch.Tensor
    repetition_penalties: torch.Tensor

32
    output_token_ids: list[list[int]]
33
34

    # req_index -> (min_tokens, stop_token_ids)
35
    min_tokens: dict[int, tuple[int, set[int]]]
36

37
    logit_bias: list[Optional[dict[int, float]]]
38
39
40
41

    # `allowed_token_ids_mask` is a 2D bool tensor of shape (max batch size,
    # vocab size).
    allowed_token_ids_mask: Optional[torch.Tensor]
42
43
44

    # req_index -> bad_words_token_ids
    bad_words_token_ids: dict[int, list[list[int]]]