class_docstr: Traverse Relay expression and convert into PyXIR XGraph format
  
  Parameters
  ----------
  function : Function
      The Relay function
  dpu_target : str
      The Vitis AI DPU target identifier
docstr: "Convert the Relay expression to a PyXIR XGraph to instantiate
  the Vitis AI runtime
  
  Returns
  -------
  xgraph_str : str
      Serialized XGraph
code: def build(self):
      """ "Convert the Relay expression to a PyXIR XGraph to instantiate
      the Vitis AI runtime
  
      Returns
      -------
      xgraph_str : str
          Serialized XGraph
      """
      xgraph = pyxir.frontend.tvm.from_relay(
          self.function, params=self.params, postprocessing=None
      )
      xgraph = pyxir.partition(xgraph, targets=[self.dpu_target])
      output_relay_ids = self.get_output_names()
      layers = xgraph.get_layers()
  
      # Get the output tensor names using XGraph and output Relay ids
      out_tensor_names = ["unknown_name"] * len(output_relay_ids)
      for layer in layers:
          if not layer.internal:
              for relay_id in layer.attrs["relay_id"]:
                  if relay_id in output_relay_ids:
                      out_tensor_names[
                          output_relay_ids.index(relay_id)
                      ] = layer.name
                      break
      if any([name == "unkown_name" for name in out_tensor_names]):
          raise ValueError(
              "During codegeneration the loading of subexpression"
              " failed due to output tensor name mismatch in Relay PyXIR interface."
          )
      xgraph.meta_attrs["tvm_out_tensors"] = out_tensor_names
      xgraph_str = pyxir.get_xgraph_str(xgraph)
      return xgraph_str
  
file_path: tvm/python/tvm/contrib/target/vitis_ai.py
imports: import warnings
  import importlib
  from tvm.relay.expr import Tuple, Call, TupleGetItem
  import tvm._ffi
label_desc: Use image node_id 2 for calling the CodegenVitisAI obj's underlying member method code with example usage: obj.build() and returns: xgraph_str