def create_graph(self, task_parameters: TaskParameters): self.task_parameters = task_parameters if isinstance(task_parameters, DistributedTaskParameters): screen.log_title("Creating graph - name: {} task id: {} type: {}".format(self.__class__.__name__, task_parameters.task_index, task_parameters.job_type)) else: screen.log_title("Creating graph - name: {}".format(self.__class__.__name__)) # "hide" the gpu if necessary if task_parameters.use_cpu: set_cpu() # create a target server for the worker and a device if isinstance(task_parameters, DistributedTaskParameters): task_parameters.worker_target, task_parameters.device = \ self.create_worker_or_parameters_server(task_parameters=task_parameters) # create the graph modules self.level_managers, self.environments = self._create_graph(task_parameters) # set self as the parent of all the level managers self.top_level_manager = self.level_managers[0] for level_manager in self.level_managers: level_manager.parent_graph_manager = self # create a session (it needs to be created after all the graph ops were created) self.sess = None self.create_session(task_parameters=task_parameters) self._phase = self.phase = RunPhase.UNDEFINED self.setup_logger()
def create_graph(self, task_parameters=TaskParameters(), stop_physics=None, start_physics=None, empty_service_call=None): self.graph_creation_time = time.time() self.task_parameters = task_parameters if isinstance(task_parameters, DistributedTaskParameters): screen.log_title( "Creating graph - name: {} task id: {} type: {}".format( self.__class__.__name__, task_parameters.task_index, task_parameters.job_type)) else: screen.log_title("Creating graph - name: {}".format( self.__class__.__name__)) # "hide" the gpu if necessary if task_parameters.use_cpu: set_cpu() # create a target server for the worker and a device if isinstance(task_parameters, DistributedTaskParameters): task_parameters.worker_target, task_parameters.device = \ self.create_worker_or_parameters_server(task_parameters=task_parameters) # If necessary start the physics and then stop it after agent creation screen.log_title("Start physics before creating graph") if start_physics and empty_service_call: start_physics(empty_service_call()) # create the graph modules screen.log_title("Create graph") self.level_managers, self.environments = self._create_graph( task_parameters) screen.log_title("Stop physics after creating graph") if stop_physics and empty_service_call: stop_physics(empty_service_call()) # set self as the parent of all the level managers self.top_level_manager = self.level_managers[0] for level_manager in self.level_managers: level_manager.parent_graph_manager = self import smdebug.tensorflow as smd self.smdebug_hook = smd.SessionHook.create_from_json_file() self.smdebug_hook.set_mode(smd.modes.TRAIN) # create a session (it needs to be created after all the graph ops were created) self.sess = { agent_params.name: None for agent_params in self.agents_params } screen.log_title("Creating session") self.create_session(task_parameters=task_parameters) self._phase = self.phase = RunPhase.UNDEFINED self.setup_logger() return self