From c1dccef18cd04a3edf0e177e09dcdfbba2188553 Mon Sep 17 00:00:00 2001 From: Daniel Cohen Date: Tue, 19 Nov 2024 07:21:44 -0800 Subject: [PATCH] Log experiment_created_time so we can backfill missed events (#3078) Summary: Log experiment creation time so we can backfill creation events if we ever miss any Differential Revision: D66022710 --- ax/telemetry/experiment.py | 3 +++ ax/telemetry/optimization.py | 7 +++++++ ax/telemetry/tests/test_experiment.py | 1 + 3 files changed, 11 insertions(+) diff --git a/ax/telemetry/experiment.py b/ax/telemetry/experiment.py index cddc2a0a002..5da3840fc7c 100644 --- a/ax/telemetry/experiment.py +++ b/ax/telemetry/experiment.py @@ -74,6 +74,8 @@ class ExperimentCreatedRecord: # Runner info runner_cls: str + experiment_created_time: int + @classmethod def from_experiment(cls, experiment: Experiment) -> ExperimentCreatedRecord: ( @@ -142,6 +144,7 @@ def from_experiment(cls, experiment: Experiment) -> ExperimentCreatedRecord: } }, runner_cls=experiment.runner.__class__.__name__, + experiment_created_time=int(experiment.time_created.timestamp()), ) @staticmethod diff --git a/ax/telemetry/optimization.py b/ax/telemetry/optimization.py index 95546caf4d9..26f40763d36 100644 --- a/ax/telemetry/optimization.py +++ b/ax/telemetry/optimization.py @@ -85,6 +85,10 @@ class OptimizationCreatedRecord: num_custom_trials: int support_tier: str + # Allows for backfilling of missed events + # instead of relying on event_time + experiment_created_time: int + @classmethod def from_scheduler( cls, @@ -148,6 +152,7 @@ def from_scheduler( num_map_metrics=experiment_created_record.num_map_metrics, metric_cls_to_quantity=experiment_created_record.metric_cls_to_quantity, runner_cls=experiment_created_record.runner_cls, + experiment_created_time=experiment_created_record.experiment_created_time, generation_strategy_name=( generation_strategy_created_record.generation_strategy_name ), @@ -251,6 +256,7 @@ def from_ax_client( num_map_metrics=experiment_created_record.num_map_metrics, metric_cls_to_quantity=experiment_created_record.metric_cls_to_quantity, runner_cls=experiment_created_record.runner_cls, + experiment_created_time=experiment_created_record.experiment_created_time, generation_strategy_name=( generation_strategy_created_record.generation_strategy_name ), @@ -368,6 +374,7 @@ def from_experiment( num_map_metrics=experiment_created_record.num_map_metrics, metric_cls_to_quantity=experiment_created_record.metric_cls_to_quantity, runner_cls=experiment_created_record.runner_cls, + experiment_created_time=experiment_created_record.experiment_created_time, generation_strategy_name=( None if generation_strategy_created_record is None diff --git a/ax/telemetry/tests/test_experiment.py b/ax/telemetry/tests/test_experiment.py index f67ddfa28d0..17919548c2d 100644 --- a/ax/telemetry/tests/test_experiment.py +++ b/ax/telemetry/tests/test_experiment.py @@ -45,6 +45,7 @@ def test_experiment_created_record_from_experiment(self) -> None: num_map_metrics=0, metric_cls_to_quantity={"Metric": 2, "CustomTestMetric": 1}, runner_cls="CustomTestRunner", + experiment_created_time=int(experiment.time_created.timestamp()), ) self.assertEqual(record, expected)