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

4
from typing import List
5
from typing import Sequence as GenericSequence
6
from typing import cast
7

8
from vllm.model_executor.layers.sampler import SamplerOutput
9
from vllm.sequence import CompletionSequenceGroupOutput, SequenceGroupOutput
10
11


12
def create_output_by_sequence_group(
13
        outputs: GenericSequence[SamplerOutput],
14
        num_seq_groups: int) -> List[List[SequenceGroupOutput]]:
15
16
17
    """Helper method which transforms a 2d list organized by
    [step][sequence group] into [sequence group][step].
    """
18
    output_by_sequence_group: List[List[CompletionSequenceGroupOutput]] = [
19
20
        [] for _ in range(num_seq_groups)
    ]
21
    for step in outputs:
22
        sequence_group_output: CompletionSequenceGroupOutput
23
24
25
        for i, sequence_group_output in enumerate(step):
            output_by_sequence_group[i].append(sequence_group_output)

26
27
28
    # Cast to the more generic type that CompletionSequenceGroupOutput
    # inherits from.
    return cast(List[List[SequenceGroupOutput]], output_by_sequence_group)