2020 is_pipeline_last_stage ,
2121)
2222from megatron .core .inference .contexts .dynamic_context import MaxSequenceLengthOverflowError
23- from megatron .core .inference .inference_request import DynamicInferenceRequest , InferenceRequest , Status
23+ from megatron .core .inference .inference_request import InferenceRequest , Status
2424from megatron .core .inference .model_inference_wrappers .abstract_model_inference_wrapper import (
2525 AbstractModelInferenceWrapper ,
2626)
@@ -547,10 +547,7 @@ def _dynamic_step_context_init(
547547 if not on_gpu :
548548 # We need a D2H copy from the context to the pinned memory buffer.
549549 self ._request_metadata [label ].copy_ (
550- context .request_metadata [label ][
551- self ._active_request_slice
552- ],
553- non_blocking = True ,
550+ context .request_metadata [label ][self ._active_request_slice ], non_blocking = True
554551 )
555552
556553 # Get flat tokens, position ids.
@@ -604,7 +601,9 @@ def _dynamic_step_forward_logits(self, input_ids: Tensor, position_ids: Tensor)
604601 else :
605602 last_token_logits = context .last_token_logits (logits )
606603 # Copy last_token_logits to contiguous buffer.
607- self ._sampling_logits_cuda [:self ._active_request_count ].copy_ (last_token_logits , non_blocking = True )
604+ self ._sampling_logits_cuda [: self ._active_request_count ].copy_ (
605+ last_token_logits , non_blocking = True
606+ )
608607
609608 return logits
610609
@@ -631,8 +630,7 @@ def _dynamic_step_sample_bookkeeping(self):
631630
632631 # Store the buckets and their equivalence class representatives.
633632 self ._torch_sampling_buckets = (
634- (indices , temp [rep ], top_k [rep ], top_p [rep ])
635- for indices , rep in bucket_map .values ()
633+ (indices , temp [rep ], top_k [rep ], top_p [rep ]) for indices , rep in bucket_map .values ()
636634 )
637635
638636 def _dynamic_step_sample_logits (self ):
@@ -683,7 +681,7 @@ def _dynamic_step_calculate_log_probs(self, logits: Tensor) -> Optional[Tensor]:
683681
684682 return context .calculate_log_probs (
685683 logits ,
686- self ._sampled_tokens_cuda [:self ._active_request_count ],
684+ self ._sampled_tokens_cuda [: self ._active_request_count ],
687685 only_last_token_logits = self ._materialize_only_last ,
688686 )
689687
@@ -713,7 +711,7 @@ def _dynamic_step_calculate_top_n_logprobs(
713711 if self ._materialize_only_last or context .is_decode_only ():
714712 # In decode mode or when only last token logits are materialized,
715713 # logits already represent only the last tokens
716- log_probs = log_probs_tensor [:self ._active_request_count ]
714+ log_probs = log_probs_tensor [: self ._active_request_count ]
717715
718716 top_n_results = {}
719717 for req_idx in range (self ._active_request_count ):
@@ -731,9 +729,7 @@ def _dynamic_step_calculate_top_n_logprobs(
731729 # Note: logits may be padded, so we only take the first active_token_count tokens
732730 log_probs = log_probs_tensor [: context .active_token_count ]
733731
734- active_query_lengths = context .request_query_lengths [
735- self ._active_request_slice
736- ]
732+ active_query_lengths = context .request_query_lengths [self ._active_request_slice ]
737733
738734 # Split log_probs across request boundaries
739735 # log_probs has shape [active_token_count, vocab_size]
@@ -785,25 +781,24 @@ def _dynamic_step_context_bookkeeping(self) -> Dict[str, Tensor]:
785781 context = self .inference_wrapped_model .inference_context
786782
787783 # Active sequence lengths.
788- active_request_ids = context .request_ids [
789- self ._active_request_slice
790- ].long ()
784+ active_request_ids = context .request_ids [self ._active_request_slice ].long ()
791785 active_sequence_lengths = context .get_active_sequence_lengths ()
792786 active_sequence_lengths += 1 # Account for the token we just generated
793787 max_sequence_lengths = context .get_max_sequence_lengths ()
794788
795789 # Request finished if termination_id or length >= max_sequence_length.
796790 # Note: termination_id tensor has per-request termination IDs from mixed sampling
797791 active_request_mask = (
798- self ._sampled_tokens_cuda [:self ._active_request_count ] != self ._request_metadata ["termination_id" ]
792+ self ._sampled_tokens_cuda [: self ._active_request_count ]
793+ != self ._request_metadata ["termination_id" ]
799794 ).byte () & torch .less (active_sequence_lengths , max_sequence_lengths ).byte ()
800795 finished_idxs = (
801796 torch .nonzero (active_request_mask == 0 , as_tuple = True )[0 ] + context .paused_request_count
802797 )
803798 finished_request_ids = context .request_ids [finished_idxs ]
804799
805800 # New sample gets updated in update_requests, so we pass in a clone
806- new_sample_copy = self ._sampled_tokens_cuda [:self ._active_request_count ].clone ()
801+ new_sample_copy = self ._sampled_tokens_cuda [: self ._active_request_count ].clone ()
807802
808803 # Update requests.
809804 newly_paused_request_ids = context .update_requests (active_request_mask , new_sample_copy )
@@ -875,7 +870,7 @@ async def async_generate_output_tokens_dynamic_batch(
875870 request_bookkeeping = self ._dynamic_step_context_bookkeeping ()
876871
877872 ret = {
878- "sample" : self ._sampled_tokens_cuda [:self ._active_request_count ],
873+ "sample" : self ._sampled_tokens_cuda [: self ._active_request_count ],
879874 "log_probs" : log_probs ,
880875 "top_n_logprobs" : top_n_logprobs ,
881876 "cuda_graph_request_count" : cuda_graph_request_count ,
0 commit comments