Skip to content

Commit 1ae390b

Browse files
authored
Add an example for getting a deployment's usage stats (#105)
1 parent f816fa7 commit 1ae390b

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

centml/sdk/api.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
CreateInferenceDeploymentRequest,
88
CreateComputeDeploymentRequest,
99
CreateCServeV2DeploymentRequest,
10+
Metric,
1011
)
1112

1213
from centml.sdk import auth
@@ -92,6 +93,18 @@ def get_user_vault(self, type):
9293

9394
return {i.key: i.value for i in items}
9495

96+
# pylint: disable=R0917
97+
def get_deployment_usage(
98+
self, id: int, metric: Metric, start_time_in_seconds: int, end_time_in_seconds: int, step: int
99+
):
100+
return self._api.get_usage_deployments_usage_deployment_id_get(
101+
deployment_id=id,
102+
metric=metric,
103+
start_time_in_seconds=start_time_in_seconds,
104+
end_time_in_seconds=end_time_in_seconds,
105+
step=step,
106+
).values
107+
95108

96109
@contextmanager
97110
def get_centml_client():
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import math
2+
3+
from centml.sdk.api import get_centml_client
4+
from centml.sdk import Metric
5+
6+
7+
HOUR_IN_SECONDS = 60 * 60
8+
DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS
9+
MAX_DATA_POINTS = 10_000
10+
11+
12+
def get_step_size(start_time_in_seconds: int, end_time_in_seconds: int) -> int:
13+
time_delta_in_seconds = end_time_in_seconds - start_time_in_seconds
14+
if time_delta_in_seconds <= 3 * HOUR_IN_SECONDS:
15+
return 15
16+
elif time_delta_in_seconds <= 6 * HOUR_IN_SECONDS:
17+
return 30
18+
elif time_delta_in_seconds <= 12 * HOUR_IN_SECONDS:
19+
return 60
20+
elif time_delta_in_seconds <= 24 * HOUR_IN_SECONDS:
21+
return 2 * 60
22+
elif time_delta_in_seconds <= 2 * DAY_IN_SECONDS:
23+
return 2 * 60
24+
elif time_delta_in_seconds <= 7 * DAY_IN_SECONDS:
25+
return 10 * 60
26+
elif time_delta_in_seconds <= 15 * DAY_IN_SECONDS:
27+
return 30 * 60
28+
elif time_delta_in_seconds <= 30 * DAY_IN_SECONDS:
29+
return 60 * 60
30+
return math.ceil(time_delta_in_seconds / MAX_DATA_POINTS)
31+
32+
33+
def main():
34+
with get_centml_client() as cclient:
35+
start_time = 1752084581
36+
end_time = 1752085181
37+
deployment_usage_values = cclient.get_deployment_usage(
38+
id=3801,
39+
metric=Metric.GPU,
40+
start_time_in_seconds=start_time,
41+
end_time_in_seconds=end_time,
42+
step=get_step_size(start_time, end_time),
43+
)
44+
print("Deployment usage values:", deployment_usage_values)
45+
46+
47+
if __name__ == "__main__":
48+
main()

0 commit comments

Comments
 (0)