code: def abort_seq_group(
      self, request_id: Union[str, Iterable[str]]
  ) -> None:
      if isinstance(request_id, str):
          request_id = (request_id,)
      request_ids = set(request_id)
      for state_queue in [self.waiting, self.running]:
          # We need to reverse the list as we are removing elements
          # from it as we iterate over it. If we don't do it,
          # indices will get messed up and we will skip over elements.
          for seq_group in reversed(state_queue):
              if seq_group.request_id in request_ids:
                  # Remove the sequence group from the state queue.
                  state_queue.remove(seq_group)
                  for seq in seq_group.get_seqs():
                      if seq.is_finished():
                          continue
                      seq.status = SequenceStatus.FINISHED_ABORTED
                      self.free_seq(seq)
                  request_ids.remove(seq_group.request_id)
                  if not request_ids:
                      return
  
imports: import enum
  import time
  from typing import Dict, Iterable, List, Optional, Tuple, Union
  from bigdl.llm.vllm.config import SchedulerConfig
  from bigdl.llm.vllm.core.policy import PolicyFactory
  from bigdl.llm.vllm.logger import init_logger
  from bigdl.llm.vllm.sequence import SequenceData, SequenceStatus
  from bigdl.llm.vllm.sequence import Sequence, SequenceGroup, SequenceGroupMetadata
  from bigdl.llm.utils.common import invalidInputError
label_desc: Use image node_id 3 for calling the FixedWindowScheduler obj's underlying member method code with example usage: obj.abort_seq_group(request_id) without return types