def _load_data_in_thread(self): """Log (but not swallow) exceptions in thread to help debugging.""" try: self._load_data() except Exception as exc: logger.exception(exc) raise
def _load_single_file(self, file_handler): """ Load a log file data. Args: file_handler (FileHandler): A file handler. """ logger.debug("Load single summary file, file path: %s.", file_handler.file_path) while True: start_offset = file_handler.offset try: event_str = self._event_load(file_handler) if event_str is None: file_handler.reset_offset(start_offset) break event = summary_pb2.Event.FromString(event_str) self._event_parse(event) except exceptions.CRCFailedError: file_handler.reset_offset(start_offset) logger.warning("Check crc faild and ignore this file, file_path=%s, " "offset=%s.", file_handler.file_path, file_handler.offset) break except (OSError, DecodeError, exceptions.MindInsightException) as ex: logger.warning("Parse log file fail, and ignore this file, detail: %r," "file path: %s.", str(ex), file_handler.file_path) break except Exception as ex: logger.exception(ex) raise UnknownError(str(ex))
def phase_pb_file(file_path: str) -> Union[MSGraph, None]: """ Parse pb file to graph Args: file_path (str): The file path of pb file. Returns: MSGraph, if load pb file and build graph success, will return the graph, else return None. """ if not CONFIG.VERBOSE: logger.setLevel(logging.ERROR) logger.info("Start to load graph from pb file, file path: %s.", file_path) model_proto = anf_ir_pb2.ModelProto() try: model_proto.ParseFromString(FileHandler(file_path).read()) except ParseError: logger.warning("The given file is not a valid pb file, file path: %s.", file_path) return None graph = MSGraph() try: graph.build_graph(model_proto.graph) except Exception as ex: logger.error("Build graph failed, file path: %s.", file_path) logger.exception(ex) raise UnknownError(str(ex)) logger.info("Build graph success, file path: %s.", file_path) return graph
def _load_single_file(self, file_handler, executor): """ Load a log file data. Args: file_handler (FileHandler): A file handler. executor (Executor): The executor instance. Returns: bool, True if the summary file is finished loading. """ while True: start_offset = file_handler.offset try: event_str = self._event_load(file_handler) if event_str is None: file_handler.reset_offset(start_offset) return True if len(event_str) > MAX_EVENT_STRING: logger.warning("file_path: %s, event string: %d exceeds %d and drop it.", file_handler.file_path, len(event_str), MAX_EVENT_STRING) continue future = executor.submit(self._event_parse, event_str, self._latest_filename) def _add_tensor_event_callback(future_value): try: tensor_values = future_value.result() for tensor_value in tensor_values: if tensor_value.plugin_name == PluginNameEnum.GRAPH.value: try: graph_tags = self._events_data.list_tags_by_plugin(PluginNameEnum.GRAPH.value) except KeyError: graph_tags = [] summary_tags = self.filter_files(graph_tags) for tag in summary_tags: self._events_data.delete_tensor_event(tag) self._events_data.add_tensor_event(tensor_value) except Exception as exc: # Log exception for debugging. logger.exception(exc) raise future.add_done_callback(_add_tensor_event_callback) return False except exceptions.CRCFailedError: file_handler.reset_offset(start_offset) logger.warning("Check crc faild and ignore this file, file_path=%s, " "offset=%s.", file_handler.file_path, file_handler.offset) return True except (OSError, DecodeError, exceptions.MindInsightException) as ex: logger.warning("Parse log file fail, and ignore this file, detail: %r," "file path: %s.", str(ex), file_handler.file_path) return True except Exception as ex: logger.exception(ex) raise UnknownError(str(ex))
def wrapper(*args, **kwargs): try: return func(*args, **kwargs) except (PathNotDirectoryError, FileNotFoundError) as err: # except PathNotDirectoryError and FileNotFoundError as they are on warning level logger.warning(str(err)) except Exception as exc: logger.exception(exc) raise UnknownError(str(exc))
def _parse_pb_file(summary_dir, filename): """ Parse pb file and write content to `EventsData`. Args: filename (str): The file path of pb file. Returns: TensorEvent, if load pb file and build graph success, will return tensor event, else return None. """ file_path = FileHandler.join(summary_dir, filename) logger.info("Start to load graph from pb file, file path: %s.", file_path) filehandler = FileHandler(file_path) model_proto = anf_ir_pb2.ModelProto() try: model_proto.ParseFromString(filehandler.read()) except ParseError: logger.warning( "The given file is not a valid pb file, file path: %s.", file_path) return None graph = MSGraph() try: graph.build_graph(model_proto.graph) except Exception as ex: # Normally, there are no exceptions, and it is only possible for users on the MindSpore side # to dump other non-default graphs. logger.error("Build graph failed, file path: %s.", file_path) logger.exception(ex) raise UnknownError(str(ex)) tensor_event = TensorEvent( wall_time=FileHandler.file_stat(file_path).mtime, step=0, tag=filename, plugin_name=PluginNameEnum.GRAPH.value, value=graph, filename=filename) logger.info("Build graph success, file path: %s.", file_path) return tensor_event
def _add_tensor_event_callback(future_value): try: tensor_values = future_value.result() for tensor_value in tensor_values: if tensor_value.plugin_name == PluginNameEnum.GRAPH.value: try: graph_tags = self._events_data.list_tags_by_plugin(PluginNameEnum.GRAPH.value) except KeyError: graph_tags = [] summary_tags = self.filter_files(graph_tags) for tag in summary_tags: self._events_data.delete_tensor_event(tag) self._events_data.add_tensor_event(tensor_value) except Exception as exc: # Log exception for debugging. logger.exception(exc) raise
def wrapper(*args, **kwargs): try: func(*args, **kwargs) except Exception as exc: logger.exception(exc) raise UnknownError(str(exc))