Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions centml/sdk/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
CreateInferenceDeploymentRequest,
CreateComputeDeploymentRequest,
CreateCServeV2DeploymentRequest,
Metric,
)

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

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

# pylint: disable=R0917
def get_deployment_usage(
self, id: int, metric: Metric, start_time_in_seconds: int, end_time_in_seconds: int, step: int
):
return self._api.get_usage_deployments_usage_deployment_id_get(
deployment_id=id,
metric=metric,
start_time_in_seconds=start_time_in_seconds,
end_time_in_seconds=end_time_in_seconds,
step=step,
).values


@contextmanager
def get_centml_client():
Expand Down
48 changes: 48 additions & 0 deletions examples/sdk/get_deployment_usage.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import math

from centml.sdk.api import get_centml_client
from centml.sdk import Metric


HOUR_IN_SECONDS = 60 * 60
DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS
MAX_DATA_POINTS = 10_000


def get_step_size(start_time_in_seconds: int, end_time_in_seconds: int) -> int:
time_delta_in_seconds = end_time_in_seconds - start_time_in_seconds
if time_delta_in_seconds <= 3 * HOUR_IN_SECONDS:
return 15
elif time_delta_in_seconds <= 6 * HOUR_IN_SECONDS:
return 30
elif time_delta_in_seconds <= 12 * HOUR_IN_SECONDS:
return 60
elif time_delta_in_seconds <= 24 * HOUR_IN_SECONDS:
return 2 * 60
elif time_delta_in_seconds <= 2 * DAY_IN_SECONDS:
return 2 * 60
elif time_delta_in_seconds <= 7 * DAY_IN_SECONDS:
return 10 * 60
elif time_delta_in_seconds <= 15 * DAY_IN_SECONDS:
return 30 * 60
elif time_delta_in_seconds <= 30 * DAY_IN_SECONDS:
return 60 * 60
return math.ceil(time_delta_in_seconds / MAX_DATA_POINTS)


def main():
with get_centml_client() as cclient:
start_time = 1752084581
end_time = 1752085181
deployment_usage_values = cclient.get_deployment_usage(
id=3801,
metric=Metric.GPU,
start_time_in_seconds=start_time,
end_time_in_seconds=end_time,
step=get_step_size(start_time, end_time),
)
print("Deployment usage values:", deployment_usage_values)


if __name__ == "__main__":
main()
Loading