def __init__( self, config: ExperimentConfig, output_dir: str, loaded_config_src_files: Optional[Dict[str, str]], seed: Optional[int] = None, mode: str = "train", deterministic_cudnn: bool = False, deterministic_agents: bool = False, mp_ctx: Optional[BaseContext] = None, multiprocessing_start_method: str = "default", extra_tag: str = "", disable_tensorboard: bool = False, disable_config_saving: bool = False, ): self.config = config self.output_dir = output_dir self.loaded_config_src_files = loaded_config_src_files self.seed = seed if seed is not None else random.randint(0, 2**31 - 1) self.deterministic_cudnn = deterministic_cudnn if multiprocessing_start_method == "default": if torch.cuda.is_available(): multiprocessing_start_method = "forkserver" else: # Spawn seems to play nicer with cpus and debugging multiprocessing_start_method = "spawn" self.mp_ctx = self.init_context(mp_ctx, multiprocessing_start_method) self.extra_tag = extra_tag self.mode = mode self.visualizer: Optional[VizSuite] = None self.deterministic_agents = deterministic_agents self.disable_tensorboard = disable_tensorboard self.disable_config_saving = disable_config_saving assert self.mode in [ "train", "test", ], "Only 'train' and 'test' modes supported in runner" if self.deterministic_cudnn: set_deterministic_cudnn() set_seed(self.seed) self.queues = { "results": self.mp_ctx.Queue(), "checkpoints": self.mp_ctx.Queue(), } self.processes: Dict[str, List[Union[BaseProcess, mp.Process]]] = defaultdict(list) self.current_checkpoint = None self.local_start_time_str = time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime(time.time())) self._is_closed: bool = False
def __init__( self, scenes: List[str], scene_directory: str, sensors: List[Sensor], max_steps: int, env_args: Dict[str, Any], action_space: gym.Space, rewards_config: Dict, seed: Optional[int] = None, deterministic_cudnn: bool = False, loop_dataset: bool = True, allow_flipping=False, env_class=RoboThorEnvironment, **kwargs, ) -> None: self.rewards_config = rewards_config self.env_args = env_args self.scenes = scenes self.scene_directory = scene_directory self.episodes = { scene: ObjectNavDatasetTaskSampler.load_dataset( scene, scene_directory + "/episodes") for scene in scenes } self.env_class = env_class self.object_types = [ ep["object_type"] for scene in self.episodes for ep in self.episodes[scene] ] self.env: Optional[RoboThorEnvironment] = None self.sensors = sensors self.max_steps = max_steps self._action_space = action_space self.allow_flipping = allow_flipping self.scene_counter: Optional[int] = None self.scene_order: Optional[List[str]] = None self.scene_id: Optional[int] = None # get the total number of tasks assigned to this process if loop_dataset: self.max_tasks = None else: self.max_tasks = sum( len(self.episodes[scene]) for scene in self.episodes) self.reset_tasks = self.max_tasks self.scene_index = 0 self.episode_index = 0 self._last_sampled_task: Optional[ObjectNavTask] = None self.seed: Optional[int] = None self.set_seed(seed) if deterministic_cudnn: set_deterministic_cudnn() self.reset()
def __init__( self, scenes: List[str], sensors: List[Sensor], max_steps: int, env_args: Dict[str, Any], action_space: gym.Space, rewards_config: Dict, objects: List[str], scene_period: Optional[Union[int, str]] = None, max_tasks: Optional[int] = None, seed: Optional[int] = None, deterministic_cudnn: bool = False, fixed_tasks: Optional[List[Dict[str, Any]]] = None, visualizers: List[LoggerVisualizer] = [], *args, **kwargs ) -> None: self.rewards_config = rewards_config self.env_args = env_args self.scenes = scenes self.grid_size = 0.25 self.env: Optional[ManipulaTHOREnvironment] = None self.sensors = sensors self.max_steps = max_steps self._action_space = action_space self.objects = objects self.scene_counter: Optional[int] = None self.scene_order: Optional[List[str]] = None self.scene_id: Optional[int] = None self.scene_period: Optional[ Union[str, int] ] = scene_period # default makes a random choice self.max_tasks: Optional[int] = None self.reset_tasks = max_tasks self._last_sampled_task: Optional[Task] = None self.seed: Optional[int] = None self.set_seed(seed) if deterministic_cudnn: set_deterministic_cudnn() self.reset() self.visualizers = visualizers self.sampler_mode = kwargs["sampler_mode"] self.cap_training = kwargs["cap_training"]
def __init__( self, scenes: List[str], # object_types: List[str], # scene_to_episodes: List[Dict[str, Any]], sensors: List[Sensor], max_steps: int, env_args: Dict[str, Any], action_space: gym.Space, rewards_config: Dict, scene_period: Optional[Union[int, str]] = None, max_tasks: Optional[int] = None, seed: Optional[int] = None, deterministic_cudnn: bool = False, **kwargs, ) -> None: self.rewards_config = rewards_config self.env_args = env_args self.scenes = scenes # self.object_types = object_types # self.scene_to_episodes = scene_to_episodes # self.scene_counters = {scene: -1 for scene in self.scene_to_episodes} # self.scenes = list(self.scene_to_episodes.keys()) self.env: Optional[RoboThorEnvironment] = None self.sensors = sensors self.max_steps = max_steps self._action_space = action_space self.scene_counter: Optional[int] = None self.scene_order: Optional[List[str]] = None self.scene_id: Optional[int] = None self.scene_period: Optional[Union[ str, int]] = scene_period # default makes a random choice self.max_tasks: Optional[int] = None self.reset_tasks = max_tasks self._last_sampled_task: Optional[PointNavTask] = None self.seed: Optional[int] = None self.set_seed(seed) if deterministic_cudnn: set_deterministic_cudnn() self.reset()
def __init__( self, scenes: List[str], object_types: str, sensors: List[Sensor], max_steps: int, env_args: Dict[str, Any], action_space: gym.Space, scene_period: Optional[Union[int, str]] = None, max_tasks: Optional[int] = None, seed: Optional[int] = None, deterministic_cudnn: bool = False, **kwargs, ) -> None: self.env_args = env_args self.scenes = scenes self.object_types = object_types self.grid_size = 0.25 self.env: Optional[IThorEnvironment] = None self.sensors = sensors self.max_steps = max_steps self._action_space = action_space self.scene_counter: Optional[int] = None self.scene_order: Optional[List[str]] = None self.scene_id: Optional[int] = None self.scene_period: Optional[Union[ str, int]] = scene_period # default makes a random choice self.max_tasks: Optional[int] = None self.reset_tasks = max_tasks self._last_sampled_task: Optional[ObjectNaviThorGridTask] = None self.seed: Optional[int] = None self.set_seed(seed) if deterministic_cudnn: set_deterministic_cudnn() self.reset()
def __init__( self, scenes: Union[List[str], str], object_types: List[str], sensors: List[Sensor], max_steps: int, env_args: Dict[str, Any], action_space: gym.Space, rewards_config: Dict, scene_period: Optional[Union[int, str]] = None, max_tasks: Optional[int] = None, seed: Optional[int] = None, deterministic_cudnn: bool = False, allow_flipping: bool = False, dataset_first: int = -1, dataset_last: int = -1, **kwargs, ) -> None: self.rewards_config = rewards_config self.env_args = env_args self.scenes = scenes self.object_types = object_types self.env: Optional[RoboThorEnvironment] = None self.sensors = sensors self.max_steps = max_steps self._action_space = action_space self.allow_flipping = allow_flipping self.scenes_is_dataset = (dataset_first >= 0) or (dataset_last >= 0) if not self.scenes_is_dataset: assert isinstance( self.scenes, List ), "When not using a dataset, scenes ({}) must be a list".format( self.scenes) self.scene_counter: Optional[int] = None self.scene_order: Optional[List[str]] = None self.scene_id: Optional[int] = None self.scene_period: Optional[Union[ str, int]] = scene_period # default makes a random choice self.max_tasks: Optional[int] = None self.reset_tasks = max_tasks else: assert isinstance( self.scenes, str ), "When using a dataset, scenes ({}) must be a json file name string".format( self.scenes) with open(self.scenes, "r") as f: self.dataset_episodes = json.load(f) # get_logger().debug("Loaded {} object nav episodes".format(len(self.dataset_episodes))) self.dataset_first = dataset_first if dataset_first >= 0 else 0 self.dataset_last = (dataset_last if dataset_last >= 0 else len(self.dataset_episodes) - 1) assert ( 0 <= self.dataset_first <= self.dataset_last ), "dataset_last {} must be >= dataset_first {} >= 0".format( dataset_last, dataset_first) self.reset_tasks = self.dataset_last - self.dataset_first + 1 # get_logger().debug("{} tasks ({}, {}) in sampler".format(self.reset_tasks, self.dataset_first, self.dataset_last)) self._last_sampled_task: Optional[ObjectNavTask] = None self.seed: Optional[int] = None self.set_seed(seed) if deterministic_cudnn: set_deterministic_cudnn() self.reset()