Signed-off-by: <> Co-authored-by: William Lin <SolitaryThinker@users.noreply.github.com> Co-authored-by: Will Lin <wlsaidhi@gmail.com> Co-authored-by: Zhou, Wei <wzhou322@gatech.edu> Co-authored-by: Kevin Lin <42618777+kevin314@users.noreply.github.com> Co-authored-by: kevin314 <kevin.lin.cs1@gmail.com> Co-authored-by: JerryZhou54 <69577934+JerryZhou54@users.noreply.github.com> Co-authored-by: Yongqi Chen <144848849+BrianChen1129@users.noreply.github.com> Co-authored-by: Peiyuan Zhang <m2deng@ucsd.edu>
24 lines
763 B
Python
24 lines
763 B
Python
# SPDX-License-Identifier: Apache-2.0
|
|
# Adapted from vllm: https://github.com/vllm-project/vllm/blob/v0.7.3/vllm/model_executor/layers/utils.py
|
|
"""Utility methods for model layers."""
|
|
from typing import Tuple
|
|
|
|
import torch
|
|
|
|
|
|
def get_token_bin_counts_and_mask(
|
|
tokens: torch.Tensor,
|
|
vocab_size: int,
|
|
num_seqs: int,
|
|
) -> Tuple[torch.Tensor, torch.Tensor]:
|
|
# Compute the bin counts for the tokens.
|
|
# vocab_size + 1 for padding.
|
|
bin_counts = torch.zeros((num_seqs, vocab_size + 1),
|
|
dtype=torch.long,
|
|
device=tokens.device)
|
|
bin_counts.scatter_add_(1, tokens, torch.ones_like(tokens))
|
|
bin_counts = bin_counts[:, :vocab_size]
|
|
mask = bin_counts > 0
|
|
|
|
return bin_counts, mask
|