From 2453a6bff7cdff5f482bbb0d654a429c4752f7ba Mon Sep 17 00:00:00 2001 From: you-n-g Date: Fri, 24 Jan 2025 15:03:21 +0800 Subject: [PATCH] feat: add timeout settings and cleanup step in data science runner (#539) * feat: Add timeout settings and cleanup step in data science runner * lint --- rdagent/app/data_science/conf.py | 8 +++++++- rdagent/core/experiment.py | 3 +++ rdagent/scenarios/data_science/dev/runner.py | 6 +++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/rdagent/app/data_science/conf.py b/rdagent/app/data_science/conf.py index 1b72c247..1c56f3e6 100644 --- a/rdagent/app/data_science/conf.py +++ b/rdagent/app/data_science/conf.py @@ -30,8 +30,8 @@ class DataScienceBasePropSetting(KaggleBasePropSetting): # model_feature_selection_coder: str = "rdagent.scenarios.kaggle.developer.coder.KGModelFeatureSelectionCoder" # """Model Feature Selection Coder class""" - # model_coder: str = "rdagent.scenarios.kaggle.developer.coder.KGModelCoSTEER" + # """Model Coder class""" ## dev/runner @@ -45,7 +45,13 @@ class DataScienceBasePropSetting(KaggleBasePropSetting): summarizer: str = "rdagent.scenarios.kaggle.developer.feedback.KGExperiment2Feedback" """Summarizer class""" + ## Workflow Related consecutive_errors: int = 5 + debug_timeout: int = 600 + """The timeout limit for running on debugging data""" + full_timeout: int = 3600 + """The timeout limit for running on full data""" + DS_RD_SETTING = DataScienceBasePropSetting() diff --git a/rdagent/core/experiment.py b/rdagent/core/experiment.py index 231ac674..a2a8e1a7 100644 --- a/rdagent/core/experiment.py +++ b/rdagent/core/experiment.py @@ -271,6 +271,9 @@ class Experiment( # If we implement the whole workflow, we don't have to use it, then we remove it. self.based_experiments: Sequence[ASpecificWSForExperiment] = based_experiments + # NOTE: Assumption + # - only runner will assign this variable + # - We will always create a new Experiment without copying previous results when we goto the next new loop. self.result: object = None # The result of the experiment, can be different types in different scenarios. self.sub_results: dict[str, float] = ( {} diff --git a/rdagent/scenarios/data_science/dev/runner.py b/rdagent/scenarios/data_science/dev/runner.py index b9fc96cf..dd7713f5 100644 --- a/rdagent/scenarios/data_science/dev/runner.py +++ b/rdagent/scenarios/data_science/dev/runner.py @@ -16,10 +16,14 @@ class DSRunner(Developer[DSExperiment]): def develop(self, exp: DSExperiment) -> DSExperiment: ds_docker_conf = DSDockerConf() ds_docker_conf.extra_volumes = {f"{DS_RD_SETTING.local_data_path}/{self.scen.competition}": "/kaggle/input"} - ds_docker_conf.running_timeout_period = 60 * 60 # 1 hours + ds_docker_conf.running_timeout_period = DS_RD_SETTING.full_timeout de = DockerEnv(conf=ds_docker_conf) + stdout = exp.experiment_workspace.execute( + env=de, entry=f"rm submission.csv scores.csv" + ) # Remove previous submission and scores files generated by worklfow. + # execute workflow stdout = exp.experiment_workspace.execute(env=de, entry="coverage run main.py")