(self, hidden_states: paddle.Tensor, num_running_requests: int)
| 2646 | ) |
| 2647 | |
| 2648 | def _pool(self, hidden_states: paddle.Tensor, num_running_requests: int) -> Optional[ModelRunnerOutput]: |
| 2649 | num_scheduled_tokens = int(self.share_inputs["seq_lens_this_time"][:num_running_requests].sum()) |
| 2650 | hidden_states = hidden_states[:num_scheduled_tokens] |
| 2651 | |
| 2652 | prompt_lens = self.share_inputs["prompt_lens"][:num_running_requests] |
| 2653 | prompt_token_ids = self.share_inputs["prompt_ids"] |
| 2654 | |
| 2655 | pooling_metadata = PoolingMetadata( |
| 2656 | prompt_lens=prompt_lens, |
| 2657 | prompt_token_ids=prompt_token_ids, |
| 2658 | pooling_params=self.pooling_params, |
| 2659 | ) |
| 2660 | |
| 2661 | num_scheduled_tokens_list = [ |
| 2662 | int(self.share_inputs["seq_lens_this_time"][i]) for i in range(num_running_requests) |
| 2663 | ] |
| 2664 | |
| 2665 | device_str = "gpu" if hidden_states.place.is_gpu_place() else "cpu" |
| 2666 | pooling_metadata.build_pooling_cursor(num_scheduled_tokens_list, device=device_str) |
| 2667 | |
| 2668 | raw_pooler_output = self.model.pooler(hidden_states=hidden_states, pooling_metadata=pooling_metadata) |
| 2669 | |
| 2670 | seq_lens_decoder = self.share_inputs["seq_lens_decoder"][:num_running_requests] |
| 2671 | seq_lens_encoder = self.share_inputs["seq_lens_encoder"][:num_running_requests] |
| 2672 | |
| 2673 | pooler_output: list[Optional[paddle.Tensor]] = [] |
| 2674 | pooler_output_idx = 0 |
| 2675 | |
| 2676 | for i, prompt_len in enumerate(pooling_metadata.prompt_lens): |
| 2677 | current_seq_len = num_scheduled_tokens_list[i] |
| 2678 | |
| 2679 | if current_seq_len == 0: |
| 2680 | pooler_output.append(None) |
| 2681 | continue |
| 2682 | |
| 2683 | total_processed = int(seq_lens_decoder[i]) + int(seq_lens_encoder[i]) |
| 2684 | |
| 2685 | if total_processed == int(prompt_len): |
| 2686 | output = raw_pooler_output[pooler_output_idx] |
| 2687 | else: |
| 2688 | output = None |
| 2689 | |
| 2690 | pooler_output.append(output) |
| 2691 | pooler_output_idx += 1 |
| 2692 | |
| 2693 | return PoolerOutput(outputs=pooler_output) |
| 2694 | |
| 2695 | def _execute_empty_input(self, forward_meta) -> None: |
| 2696 | """ |
no test coverage detected