def METHOD_NAME(self, inputs: Dict[str,
                               torch.Tensor]) -> Dict[str, torch.Tensor]:
    """Run forward inference.
    Args:
        inputs (Dict[str, torch.Tensor]): The input name and tensor pairs.
    Returns:
        Dict[str, torch.Tensor]: The output name and tensor pairs.
    """
    for name, input_tensor in inputs.items():
        # set io binding for inputs/outputs
        input_type = self._input_metas[name].type
        if 'float16' in input_type:
            input_tensor = input_tensor.to(torch.float16)
        input_tensor = input_tensor.contiguous()
        if self.device_type == 'cpu':
            input_tensor = input_tensor.cpu()
        # Avoid unnecessary data transfer between host and device
        element_type = input_tensor.new_zeros(
            1, device='cpu').numpy().dtype
        self.io_binding.bind_input(
            name=name,
            device_type=self.device_type,
            device_id=self.device_id,
            element_type=element_type,
            shape=input_tensor.shape,
            buffer_ptr=input_tensor.data_ptr())
    for name in self._output_names:
        self.io_binding.bind_output(name)
    # run session to get outputs
    if self.device_type == 'cuda':
        torch.cuda.synchronize()
    self.__ort_execute(self.io_binding)
    output_list = self.io_binding.copy_outputs_to_cpu()
    outputs = {}
    for output_name, numpy_tensor in zip(self._output_names, output_list):
        if numpy_tensor.dtype == np.float16:
            numpy_tensor = numpy_tensor.astype(np.float32)
        outputs[output_name] = torch.from_numpy(numpy_tensor)
    return outputs