code: def get_deep_interface(value):
      """
      Given a deep data structure with interface-specific scalars at the bottom, return their
      interface name.
  
      Args:
          value (list, tuple): A deep list-of-lists, tuple-of-tuples, or combination with
              interface-specific data hidden within it
  
      Returns:
          str: The name of the interface deep within the value
  
      **Example**
  
      >>> x = [[jax.numpy.array(1), jax.numpy.array(2)], [jax.numpy.array(3), jax.numpy.array(4)]]
      >>> get_deep_interface(x)
      'jax'
  
      This can be especially useful when converting to the appropriate interface:
  
      >>> qml.math.asarray(x, like=qml.math.get_deep_interface(x))
      Array([[1, 2],
         [3, 4]], dtype=int64)
  
      """
      itr = value
      while isinstance(itr, (list, tuple)):
          if len(itr) == 0:
              return "builtins"
          itr = itr[0]
      return ar.infer_backend(itr)
  
file_path: pennylane/pennylane/math/utils.py
imports: import warnings
  import autoray
  import numpy
  from autograd.numpy.numpy_boxes import ArrayBox
  from autoray import numpy
  from .None import single_dispatch
label_desc: Use image node_id 8 for calling a global function with example usage: get_deep_interface(value) and returns: ar, str