MCPcopy Create free account
hub / github.com/PaddlePaddle/FastDeploy / LogprobsTensors

Class LogprobsTensors

fastdeploy/worker/output.py:72–126  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

70
71
72class LogprobsTensors(NamedTuple):
73 """ """
74
75 # [num_reqs, max_num_logprobs + 1]
76 logprob_token_ids: paddle.Tensor
77 # [num_reqs, max_num_logprobs + 1]
78 logprobs: paddle.Tensor
79 # [num_reqs]
80 selected_token_ranks: paddle.Tensor
81
82 def tolists(self):
83 """Convert to lists."""
84 return LogprobsLists(
85 self.logprob_token_ids.tolist(),
86 self.logprobs.tolist(),
87 self.selected_token_ranks.tolist(),
88 )
89
90 @staticmethod
91 def empty_cpu(num_positions: int, num_tokens_per_position: int) -> "LogprobsTensors":
92 """Create empty LogprobsTensors on CPU."""
93
94 logprob_token_ids = paddle.empty([num_positions, num_tokens_per_position], device="cpu", dtype=paddle.int64)
95 logprobs = paddle.empty_like(logprob_token_ids, device="cpu", dtype=paddle.float32)
96 selected_token_ranks = paddle.empty([num_positions], device="cpu", dtype=paddle.int64)
97 return LogprobsTensors(
98 logprob_token_ids=logprob_token_ids,
99 logprobs=logprobs,
100 selected_token_ranks=selected_token_ranks,
101 )
102
103 @staticmethod
104 def empty(num_positions: int, num_tokens_per_position: int) -> "LogprobsTensors":
105 """Create empty LogprobsTensors on default device."""
106
107 logprob_token_ids = paddle.empty([num_positions, num_tokens_per_position], dtype=paddle.int64)
108 logprobs = paddle.empty_like(logprob_token_ids, dtype=paddle.float32)
109 selected_token_ranks = paddle.empty([num_positions], dtype=paddle.int64)
110 return LogprobsTensors(
111 logprob_token_ids=logprob_token_ids,
112 logprobs=logprobs,
113 selected_token_ranks=selected_token_ranks,
114 )
115
116 def slice_rows(self, start: int, end: int):
117 """
118 Slice rows.
119 Keeps the number of max_num_logprobs unchanged.
120 """
121 with paddle.no_grad():
122 return LogprobsTensors(
123 paddle.to_tensor(self.logprob_token_ids.cpu()[start:end], place="cpu"),
124 paddle.to_tensor(self.logprobs.cpu()[start:end], place="cpu"),
125 paddle.to_tensor(self.selected_token_ranks.cpu()[start:end], place="cpu"),
126 )
127
128
129PromptLogprobs = LogprobsTensors | list[dict[int, Logprob] | None]

Calls

no outgoing calls