From ccd4a1f5fc77d8bfdac1a5b038961ebcae7f4272 Mon Sep 17 00:00:00 2001 From: Wonjeong Ryu <51734430+dXDb@users.noreply.github.com> Date: Thu, 4 Sep 2025 01:36:31 +0900 Subject: [PATCH 1/3] Update run_create_submission_pickle.py --- .../script/run_create_submission_pickle.py | 51 ++++++++++++------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/navsim/planning/script/run_create_submission_pickle.py b/navsim/planning/script/run_create_submission_pickle.py index 3b473d8..ab1a92b 100644 --- a/navsim/planning/script/run_create_submission_pickle.py +++ b/navsim/planning/script/run_create_submission_pickle.py @@ -20,6 +20,26 @@ CONFIG_NAME = "default_run_create_submission_pickle" +from navsim.planning.script.builders.worker_pool_builder import build_worker +from nuplan.planning.utils.multithreading.worker_utils import worker_map +def get_traj(args): + output = [] + for arg_dict in tqdm(args, desc="Running evaluation"): + input_loader = arg_dict['input_loader'] + token = arg_dict['token'] + agent = arg_dict['agent'] + + try: + agent_input = input_loader.get_agent_input_from_token(token) + trajectory = agent.compute_trajectory(agent_input, None, None) + output.append([token, trajectory]) + + except Exception: + logger.warning(f"----------- Agent failed for token {token}:") + traceback.print_exc() + + return output + def run_test_evaluation( cfg: DictConfig, agent: AbstractAgent, @@ -44,6 +64,7 @@ def run_test_evaluation( Thus, agent.requires_scene has to be False for the agent that is to be evaluated. """ ) + logger.info("Building Agent Input Loader") input_loader = SceneLoader( data_path=data_path, @@ -55,30 +76,24 @@ def run_test_evaluation( ) agent.initialize() - # first stage output + worker = build_worker(cfg) + data_points = [{"input_loader": input_loader, "agent": agent, "token": token,} for token in input_loader.tokens_stage_one] + first_traj = worker_map(worker, get_traj, data_points) first_stage_output: Dict[str, Trajectory] = {} - for token in tqdm(input_loader.tokens_stage_one, desc="Running first stage evaluation"): - try: - agent_input = input_loader.get_agent_input_from_token(token) - trajectory = agent.compute_trajectory(agent_input) - first_stage_output.update({token: trajectory}) - except Exception: - logger.warning(f"----------- Agent failed for token {token}:") - traceback.print_exc() - # second stage output + for first_dict_list in first_traj: + first_stage_output.update({first_dict_list[0]:first_dict_list[1]}) + scene_loader_tokens_stage_two = input_loader.reactive_tokens_stage_two second_stage_output: Dict[str, Trajectory] = {} - for token in tqdm(scene_loader_tokens_stage_two, desc="Running second stage evaluation"): - try: - agent_input = input_loader.get_agent_input_from_token(token) - trajectory = agent.compute_trajectory(agent_input) - second_stage_output.update({token: trajectory}) - except Exception: - logger.warning(f"----------- Agent failed for token {token}:") - traceback.print_exc() + + data_points = [{"input_loader": input_loader, "agent": agent, "token": token,} for token in scene_loader_tokens_stage_two] + sec_traj = worker_map(worker, get_traj, data_points) + + for sec_dict_list in sec_traj: + second_stage_output.update({sec_dict_list[0]:sec_dict_list[1]}) return first_stage_output, second_stage_output From 5f1b8ba0b93c6085b454d65f5b8c56b2c2b8d157 Mon Sep 17 00:00:00 2001 From: Wonjeong Ryu <51734430+dXDb@users.noreply.github.com> Date: Thu, 4 Sep 2025 01:40:54 +0900 Subject: [PATCH 2/3] Update run_create_submission_pickle_challenge.py --- .../run_create_submission_pickle_challenge.py | 49 ++++++++++++------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/navsim/planning/script/run_create_submission_pickle_challenge.py b/navsim/planning/script/run_create_submission_pickle_challenge.py index 311c933..98e83c8 100644 --- a/navsim/planning/script/run_create_submission_pickle_challenge.py +++ b/navsim/planning/script/run_create_submission_pickle_challenge.py @@ -19,6 +19,25 @@ CONFIG_PATH = "config/pdm_scoring" CONFIG_NAME = "default_run_create_submission_pickle" +from navsim.planning.script.builders.worker_pool_builder import build_worker +from nuplan.planning.utils.multithreading.worker_utils import worker_map +def get_traj(args): + output = [] + for arg_dict in tqdm(args, desc="Running evaluation"): + input_loader = arg_dict['input_loader'] + token = arg_dict['token'] + agent = arg_dict['agent'] + + try: + agent_input = input_loader.get_agent_input_from_token(token) + trajectory = agent.compute_trajectory(agent_input) + output.append([token, trajectory]) + + except Exception: + logger.warning(f"----------- Agent failed for token {token}:") + traceback.print_exc() + + return output def run_test_evaluation( cfg: DictConfig, @@ -56,32 +75,26 @@ def run_test_evaluation( agent.initialize() # first stage output + worker = build_worker(cfg) + data_points = [{"input_loader": input_loader, "agent": agent, "token": token,} for token in input_loader.tokens_stage_one] + first_traj = worker_map(worker, get_traj, data_points) first_stage_output: Dict[str, Trajectory] = {} - for token in tqdm(input_loader.tokens_stage_one, desc="Running first stage evaluation"): - try: - agent_input = input_loader.get_agent_input_from_token(token) - trajectory = agent.compute_trajectory(agent_input) - first_stage_output.update({token: trajectory}) - except Exception: - logger.warning(f"----------- Agent failed for token {token}:") - traceback.print_exc() - # second stage output + for first_dict_list in first_traj: + first_stage_output.update({first_dict_list[0]:first_dict_list[1]}) + # second stage output scene_loader_tokens_stage_two = input_loader.reactive_tokens_stage_two second_stage_output: Dict[str, Trajectory] = {} - for token in tqdm(scene_loader_tokens_stage_two, desc="Running second stage evaluation"): - try: - agent_input = input_loader.get_agent_input_from_token(token) - trajectory = agent.compute_trajectory(agent_input) - second_stage_output.update({token: trajectory}) - except Exception: - logger.warning(f"----------- Agent failed for token {token}:") - traceback.print_exc() - return first_stage_output, second_stage_output + data_points = [{"input_loader": input_loader, "agent": agent, "token": token,} for token in scene_loader_tokens_stage_two] + sec_traj = worker_map(worker, get_traj, data_points) + + for sec_dict_list in sec_traj: + second_stage_output.update({sec_dict_list[0]:sec_dict_list[1]}) + return first_stage_output, second_stage_output @hydra.main(config_path=CONFIG_PATH, config_name=CONFIG_NAME, version_base=None) def main(cfg: DictConfig) -> None: From 77542387ae67ae42375114c2773e9ff5411d8577 Mon Sep 17 00:00:00 2001 From: Wonjeong Ryu <51734430+dXDb@users.noreply.github.com> Date: Thu, 4 Sep 2025 01:41:09 +0900 Subject: [PATCH 3/3] Update run_create_submission_pickle.py --- navsim/planning/script/run_create_submission_pickle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/navsim/planning/script/run_create_submission_pickle.py b/navsim/planning/script/run_create_submission_pickle.py index ab1a92b..0d488aa 100644 --- a/navsim/planning/script/run_create_submission_pickle.py +++ b/navsim/planning/script/run_create_submission_pickle.py @@ -31,7 +31,7 @@ def get_traj(args): try: agent_input = input_loader.get_agent_input_from_token(token) - trajectory = agent.compute_trajectory(agent_input, None, None) + trajectory = agent.compute_trajectory(agent_input) output.append([token, trajectory]) except Exception: