Skip to content

Commit 45f6a1b

Browse files
committed
refactor setting of profile mode, load_gen_mode
1 parent bfcc329 commit 45f6a1b

File tree

4 files changed

+27
-21
lines changed

4 files changed

+27
-21
lines changed

src/guidellm/executor/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Profile,
44
ProfileGenerationModes,
55
ProfileGenerator,
6-
MultiProfileGenerator,
6+
FixedRateProfileGenerator,
77
SweepProfileGenerator,
88
)
99

@@ -12,6 +12,6 @@
1212
"ProfileGenerationModes",
1313
"Profile",
1414
"ProfileGenerator",
15-
"MultiProfileGenerator",
15+
"FixedRateProfileGenerator",
1616
"SweepProfileGenerator",
1717
]

src/guidellm/executor/executor.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,16 @@ def __init__(
1414
self,
1515
request_generator: RequestGenerator,
1616
backend: Backend,
17-
profile_mode: Union[str, ProfileGenerationModes] = "multi",
17+
rate_type: str = "sweep",
1818
profile_args: Optional[Dict[str, Any]] = None,
1919
max_requests: Optional[int] = None,
2020
max_duration: Optional[float] = None,
2121
):
2222
self.request_generator = request_generator
2323
self.backend = backend
24+
profile_mode = "sweep"
25+
if rate_type in {"synchronous", "constant", "poisson"}:
26+
profile_mode = "fixed_rate"
2427
self.profile = ProfileGenerator.create_generator(
2528
profile_mode, **(profile_args or {})
2629
)

src/guidellm/executor/profile_generator.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
"ProfileGenerationModes",
1313
"Profile",
1414
"ProfileGenerator",
15-
"MultiProfileGenerator",
15+
"FixedRateProfileGenerator",
1616
"SweepProfileGenerator",
1717
]
1818

1919

2020
class ProfileGenerationModes(Enum):
21-
MULTI = "multi"
21+
FIXED_RATE = "fixed_rate"
2222
SWEEP = "sweep"
2323

2424

@@ -27,6 +27,12 @@ class Profile:
2727
load_gen_mode: LoadGenerationModes
2828
load_gen_rate: Optional[float]
2929

30+
RateTypeLoadGenModeMap = {
31+
"constant": LoadGenerationModes.CONSTANT,
32+
"synchronous": LoadGenerationModes.SYNCHRONOUS,
33+
"poisson": LoadGenerationModes.POISSON,
34+
}
35+
3036

3137
class ProfileGenerator(ABC):
3238
_registry = {}
@@ -61,10 +67,12 @@ def next_profile(
6167
pass
6268

6369

64-
@ProfileGenerator.register_generator(ProfileGenerationModes.MULTI)
65-
class MultiProfileGenerator(ProfileGenerator):
66-
def __init__(self, rate: List[float], rate_type: str, **kwargs):
67-
super().__init__(ProfileGenerationModes.MULTI)
70+
@ProfileGenerator.register_generator(ProfileGenerationModes.FIXED_RATE)
71+
class FixedRateProfileGenerator(ProfileGenerator):
72+
def __init__(self, rate: List[float], rate_type: LoadGenerationModes, **kwargs):
73+
super().__init__(ProfileGenerationModes.FIXED_RATE)
74+
if rate_type == "synchronous" and rate.length > 0:
75+
raise ValueError("custom rates are not supported in synchronous mode")
6876
self._rates = rate
6977
self._rate_index = 0
7078
self._rate_type = rate_type
@@ -75,22 +83,18 @@ def next_profile(
7583
) -> Optional[Profile]:
7684
if self._rate_index >= len(self._rates):
7785
return None
78-
79-
if self._rate_type == "constant":
80-
return Profile(
81-
load_gen_mode=LoadGenerationModes.CONSTANT, load_gen_rate=self._rates[self._rate_index]
82-
)
83-
86+
current_rate = self._rates[self._rate_index]
87+
self._rate_index += 1
88+
8489
if self._rate_type == "synchronous":
8590
return Profile(
8691
load_gen_mode=LoadGenerationModes.SYNCHRONOUS, load_gen_rate=None
8792
)
88-
89-
if self._rate_type == "poisson":
93+
if self._rate_type in {"constant", "poisson"}:
94+
load_gen_mode = RateTypeLoadGenModeMap[self._rate_type]
9095
return Profile(
91-
load_gen_mode=LoadGenerationModes.POISSON, load_gen_rate=self._rates[self._rate_index]
96+
load_gen_mode=load_gen_mode, load_gen_rate=current_rate
9297
)
93-
9498
raise ValueError(f"Invalid rate type: {self._rate_type}")
9599

96100

src/guidellm/main.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,10 @@ def main(
107107
raise ValueError(f"Unknown data type: {data_type}")
108108

109109
# Create executor
110-
profile_mode = rate_type if rate_type == "sweep" else "multi"
111110
executor = Executor(
112111
request_generator=request_generator,
113112
backend=backend,
114-
profile_mode=profile_mode,
113+
rate_type=rate_type,
115114
profile_args={"rate_type": rate_type, "rate": rate},
116115
max_requests=num_requests,
117116
max_duration=num_seconds,

0 commit comments

Comments
 (0)