def tensor_comparisons(self, name, shape, detail='data', tolerance='0', rank_id=0, graph_name=None): """ Get tensor comparisons data for given name, detail, shape and tolerance. Args: name (str): The name of tensor for ui. shape (str): Specify concrete dimensions of shape. detail (str): Specify which data to query. Current available value is 'data' which means concrete tensor data. Histogram or unique count can be supported in the future. rank_id (int): The id of rank. Default: 0. tolerance (str): Specify tolerance of difference between current step tensor and previous step tensor. Default value is 0. graph_name (str): The graph name. Default: None. Returns: dict, the retrieved data. """ if self.cache_store.get_stream_handler( Streams.METADATA).state != ServerStatus.WAITING.value: log.error( "Failed to compare tensors as the MindSpore is not in waiting state." ) raise DebuggerCompareTensorError( "Failed to compare tensors as the MindSpore is not in waiting state." ) self.validate_tensor_param(name, detail) # Limit to query max two dimensions for tensor in table view. parsed_shape = TensorUtils.parse_shape(shape, limit=MAX_DIMENSIONS_FOR_TENSOR) node_type, tensor_name, graph_name = self._get_tensor_name_and_type_by_ui_name( name, graph_name, rank_id) tolerance = to_float(tolerance, 'tolerance') tensor_stream = self.cache_store.get_stream_handler( Streams.TENSOR).get_tensor_handler_by_rank_id(rank_id) cur_step = self.cache_store.get_stream_handler(Streams.METADATA).step if node_type == NodeTypeEnum.PARAMETER.value: reply = tensor_stream.get_tensors_diff(tensor_name, parsed_shape, tolerance, cur_step) else: raise DebuggerParamValueError( "The node type must be parameter, but got {}.".format( node_type)) if reply.pop('view_cmd', False): self._send_view_cmd(name, graph_name, rank_id, tensor_name, node_type) return reply
def tensor_comparisons(self, name, shape, detail='data', tolerance='0'): """ Get tensor comparisons data for given name, detail, shape and tolerance. Args: name (str): The name of tensor for ui. detail (str): Specify which data to query. Current available value is 'data' which means concrete tensor data. Histogram or unique count can be supported in the future. shape (str): Specify concrete dimensions of shape. tolerance (str): Specify tolerance of difference between current step tensor and previous step tensor. Default value is 0. Raises: DebuggerParamValueError, If node type is not parameter or value of detail is not support. DebuggerCompareTensorError, If MindSpore is not in waiting state. Returns: dict, the retrieved data. """ if self.cache_store.get_stream_handler( Streams.METADATA).state != ServerStatus.WAITING.value: log.error( "Failed to compare tensors as the MindSpore is not in waiting state." ) raise DebuggerCompareTensorError( "Failed to compare tensors as the MindSpore is not in waiting state." ) self.validate_tensor_param(name, detail) parsed_shape = self.parse_shape(shape) node_type, tensor_name = self._get_tensor_name_and_type_by_ui_name( name) tolerance = to_float(tolerance, 'tolerance') tensor_stream = self.cache_store.get_stream_handler(Streams.TENSOR) if detail == 'data': if node_type == NodeTypeEnum.PARAMETER.value: reply = tensor_stream.get_tensors_diff(tensor_name, parsed_shape, tolerance) else: raise DebuggerParamValueError( "The node type must be parameter, but got {}.".format( node_type)) else: raise DebuggerParamValueError( "The value of detail: {} is not support.".format(detail)) return reply