diff --git a/centml/sdk/api.py b/centml/sdk/api.py index 5d0042f..da7d307 100644 --- a/centml/sdk/api.py +++ b/centml/sdk/api.py @@ -7,6 +7,7 @@ CreateInferenceDeploymentRequest, CreateComputeDeploymentRequest, CreateCServeV2DeploymentRequest, + Metric, ) from centml.sdk import auth @@ -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(): diff --git a/examples/sdk/get_deployment_usage.py b/examples/sdk/get_deployment_usage.py new file mode 100644 index 0000000..4972387 --- /dev/null +++ b/examples/sdk/get_deployment_usage.py @@ -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()