diff --git a/src/sagemaker/hyperpod/cli/commands/inference.py b/src/sagemaker/hyperpod/cli/commands/inference.py index a3674ac0..7314432e 100644 --- a/src/sagemaker/hyperpod/cli/commands/inference.py +++ b/src/sagemaker/hyperpod/cli/commands/inference.py @@ -10,6 +10,10 @@ from sagemaker.hyperpod.inference.hp_jumpstart_endpoint import HPJumpStartEndpoint from sagemaker.hyperpod.inference.hp_endpoint import HPEndpoint from sagemaker_core.resources import Endpoint +from sagemaker.hyperpod.common.telemetry.telemetry_logging import ( + _hyperpod_telemetry_emitter, +) +from sagemaker.hyperpod.common.telemetry.constants import Feature # CREATE @@ -26,6 +30,7 @@ schema_pkg="hyperpod_jumpstart_inference_template", registry=JS_REG, ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "create_js_endpoint_cli") def js_create(namespace, version, js_endpoint): """ Create a jumpstart model endpoint. @@ -47,6 +52,7 @@ def js_create(namespace, version, js_endpoint): schema_pkg="hyperpod_custom_inference_template", registry=C_REG, ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "create_custom_endpoint_cli") def custom_create(namespace, version, custom_endpoint): """ Create a custom model endpoint. @@ -76,6 +82,7 @@ def custom_create(namespace, version, custom_endpoint): default="application/json", help="Optional. The content type of the request to invoke. Default set to 'application/json'", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "invoke_custom_endpoint_cli") def custom_invoke( endpoint_name: str, body: str, @@ -128,6 +135,7 @@ def custom_invoke( default="default", help="Optional. The namespace of the jumpstart model endpoint to list. Default set to 'default'", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "list_js_endpoints_cli") def js_list( namespace: Optional[str], ): @@ -170,6 +178,7 @@ def js_list( default="default", help="Optional. The namespace of the custom model endpoint to list. Default set to 'default'", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "list_custom_endpoints_cli") def custom_list( namespace: Optional[str], ): @@ -226,6 +235,7 @@ def custom_list( required=False, help="Optional. If set to `True`, the full json will be displayed", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "get_js_endpoint_cli") def js_describe( name: str, namespace: Optional[str], @@ -374,6 +384,7 @@ def js_describe( required=False, help="Optional. If set to `True`, the full json will be displayed", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "get_custom_endpoint_cli") def custom_describe( name: str, namespace: Optional[str], @@ -548,6 +559,7 @@ def custom_describe( default="default", help="Optional. The namespace of the jumpstart model endpoint to delete. Default set to 'default'.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "delete_js_endpoint_cli") def js_delete( name: str, namespace: Optional[str], @@ -573,6 +585,7 @@ def js_delete( default="default", help="Optional. The namespace of the custom model endpoint to delete. Default set to 'default'.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "delete_custom_endpoint_cli") def custom_delete( name: str, namespace: Optional[str], @@ -592,6 +605,7 @@ def custom_delete( default="default", help="Optional. The namespace of the jumpstart model to list pods for. Default set to 'default'.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "list_pods_js_endpoint_cli") def js_list_pods( namespace: Optional[str], ): @@ -611,6 +625,7 @@ def js_list_pods( default="default", help="Optional. The namespace of the custom model to list pods for. Default set to 'default'.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "list_pods_custom_endpoint_cli") def custom_list_pods( namespace: Optional[str], ): @@ -642,6 +657,7 @@ def custom_list_pods( default="default", help="Optional. The namespace of the jumpstart model to get logs for. Default set to 'default'.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "get_logs_js_endpoint") def js_get_logs( pod_name: str, container: Optional[str], @@ -675,6 +691,7 @@ def js_get_logs( default="default", help="Optional. The namespace of the custom model to get logs for. Default set to 'default'.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "get_logs_custom_endpoint") def custom_get_logs( pod_name: str, container: Optional[str], @@ -695,6 +712,7 @@ def custom_get_logs( required=True, help="Required. The time frame to get logs for.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "get_js_operator_logs") def js_get_operator_logs( since_hours: float, ): @@ -713,6 +731,7 @@ def js_get_operator_logs( required=True, help="Required. The time frame get logs for.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "get_custom_operator_logs") def custom_get_operator_logs( since_hours: float, ): diff --git a/src/sagemaker/hyperpod/cli/commands/training.py b/src/sagemaker/hyperpod/cli/commands/training.py index 709e695b..25688902 100644 --- a/src/sagemaker/hyperpod/cli/commands/training.py +++ b/src/sagemaker/hyperpod/cli/commands/training.py @@ -12,6 +12,10 @@ from sagemaker.hyperpod.cli.training_utils import generate_click_command from importlib.metadata import entry_points from hyperpod_pytorch_job_template.registry import SCHEMA_REGISTRY +from sagemaker.hyperpod.common.telemetry.telemetry_logging import ( + _hyperpod_telemetry_emitter, +) +from sagemaker.hyperpod.common.telemetry.constants import Feature @click.command("hyp-pytorch-job") @@ -21,6 +25,7 @@ schema_pkg="hyperpod_pytorch_job_template", registry=SCHEMA_REGISTRY, ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "create_pytorchjob_cli") def pytorch_create(version, debug, config): """Create a PyTorch job.""" try: @@ -63,6 +68,7 @@ def pytorch_create(version, debug, config): default="default", help="Optional. The namespace to list jobs from. Defaults to 'default' namespace.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "list_pytorchjobs_cli") def list_jobs(namespace: str): """List all HyperPod PyTorch jobs.""" try: @@ -143,6 +149,7 @@ def list_jobs(namespace: str): default="default", help="Optional. The namespace of the job. Defaults to 'default' namespace.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "get_pytorchjob_cli") def pytorch_describe(job_name: str, namespace: str): """Describe a HyperPod PyTorch job.""" try: @@ -244,6 +251,7 @@ def pytorch_describe(job_name: str, namespace: str): default="default", help="Optional. The namespace of the job. Defaults to 'default' namespace.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "delete_pytorchjob_cli") def pytorch_delete(job_name: str, namespace: str): """Delete a HyperPod PyTorch job.""" try: @@ -269,6 +277,7 @@ def pytorch_delete(job_name: str, namespace: str): default="default", help="Optional. The namespace of the job. Defaults to 'default' namespace.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "list_pods_pytorchjob_cli") def pytorch_list_pods(job_name: str, namespace: str): """List all HyperPod PyTorch pods related to the job.""" try: @@ -315,6 +324,7 @@ def pytorch_list_pods(job_name: str, namespace: str): default="default", help="Optional. The namespace of the job. Defaults to 'default' namespace.", ) +@_hyperpod_telemetry_emitter(Feature.HYPERPOD_CLI, "get_pytorchjob_logs_from_pod_cli") def pytorch_get_logs(job_name: str, pod_name: str, namespace: str): """Get specific pod log for Hyperpod Pytorch job.""" try: diff --git a/src/sagemaker/hyperpod/common/telemetry/constants.py b/src/sagemaker/hyperpod/common/telemetry/constants.py index fc7a7579..6a5fd0b3 100644 --- a/src/sagemaker/hyperpod/common/telemetry/constants.py +++ b/src/sagemaker/hyperpod/common/telemetry/constants.py @@ -6,6 +6,7 @@ class Feature(Enum): """Enumeration of feature names used in telemetry.""" HYPERPOD = 6 # Added to support telemetry in sagemaker-hyperpod-cli + HYPERPOD_CLI = 7 def __str__(self): # pylint: disable=E0307 """Return the feature name.""" diff --git a/src/sagemaker/hyperpod/common/telemetry/telemetry_logging.py b/src/sagemaker/hyperpod/common/telemetry/telemetry_logging.py index e4891fb2..32fa90b7 100644 --- a/src/sagemaker/hyperpod/common/telemetry/telemetry_logging.py +++ b/src/sagemaker/hyperpod/common/telemetry/telemetry_logging.py @@ -24,6 +24,7 @@ FEATURE_TO_CODE = { str(Feature.HYPERPOD): 6, # Added to support telemetry in sagemaker-hyperpod-cli + str(Feature.HYPERPOD_CLI): 7, } STATUS_TO_CODE = {