Skip to content

Commit 62d6d5d

Browse files
committed
lint
1 parent 219f5fd commit 62d6d5d

3 files changed

Lines changed: 21 additions & 24 deletions

File tree

megatron/core/inference/contexts/dynamic_context.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,9 @@ def allocate_all_tensors(self, *, is_init: bool) -> None:
538538

539539
# Track request metadata.
540540
self.request_metadata = {
541-
label: torch.empty((self.max_total_requests,), dtype=dtype, device=torch.cuda.current_device())
541+
label: torch.empty(
542+
(self.max_total_requests,), dtype=dtype, device=torch.cuda.current_device()
543+
)
542544
for label, dtype, _ in self.request_metadata_types
543545
}
544546

@@ -1052,9 +1054,7 @@ def add_dummy_requests_parallel(
10521054
self.request_kv_block_counts[request_slice] = block_counts
10531055
for i, (label, dtype, _) in enumerate(self.request_metadata_types):
10541056
self.request_metadata[label][request_slice] = torch.tensor(
1055-
metadata_cols[i],
1056-
dtype=dtype,
1057-
device=torch.cuda.current_device(),
1057+
metadata_cols[i], dtype=dtype, device=torch.cuda.current_device()
10581058
)
10591059

10601060
dummy_block_idx = self.block_allocator.dummy_block_idx

megatron/core/inference/inference_request.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
from megatron.core.inference.sampling_params import SamplingParams
1414
from megatron.core.tokenizers import MegatronTokenizer
15+
from megatron.core.utils import internal_api
1516

1617

1718
def serialize_tensor(tensor: torch.Tensor) -> bytes:
@@ -228,6 +229,7 @@ def deserialize(cls, obj: dict) -> "DynamicInferenceEvent":
228229
return event
229230

230231

232+
@internal_api
231233
@dataclass(kw_only=True)
232234
class DynamicInferenceRequest(InferenceRequest):
233235
"""Class for one inference request
@@ -332,7 +334,7 @@ def get_metadata_types() -> List[Tuple[str, torch.dtype, bool]]:
332334
("termination_id", torch.int64, True),
333335
("return_log_probs", torch.bool, False), # CPU for non-selective logprobs
334336
("skip_prompt_log_probs", torch.bool, False), # CPU for non-selective logprobs
335-
("top_n_logprobs", torch.int32, False), # CPU for torch sampling
337+
("top_n_logprobs", torch.int32, False), # CPU for torch sampling
336338
]
337339

338340
def add_event(self, type: DynamicInferenceEventType, payload: Optional[Any] = None) -> None:

megatron/core/inference/text_generation_controllers/text_generation_controller.py

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
is_pipeline_last_stage,
2121
)
2222
from 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
2424
from 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

Comments
 (0)