1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- from collections import deque
- from typing import Deque
- from aphrodite.common.sequence import SequenceGroup
- class Policy:
- def get_priority(
- self,
- now: float,
- seq_group: SequenceGroup,
- ) -> float:
- raise NotImplementedError
- def sort_by_priority(
- self,
- now: float,
- seq_groups: Deque[SequenceGroup],
- ) -> Deque[SequenceGroup]:
- return deque(
- sorted(
- seq_groups,
- key=lambda seq_group: self.get_priority(now, seq_group),
- reverse=True,
- ))
- class FCFS(Policy):
- def get_priority(
- self,
- now: float,
- seq_group: SequenceGroup,
- ) -> float:
- return now - seq_group.metrics.arrival_time
- class PolicyFactory:
- _POLICY_REGISTRY = {
- 'fcfs': FCFS,
- }
- @classmethod
- def get_policy(cls, policy_name: str, **kwargs) -> Policy:
- return cls._POLICY_REGISTRY[policy_name](**kwargs)
|