code: def vsplit(a, indices_or_sections):
      """
      Split a tensor into multiple sub-tensors vertically (row-wise).
  
      Please refer to the ``split`` documentation.  ``vsplit`` is equivalent
      to ``split`` with `axis=0` (default), the tensor is always split along the
      first axis regardless of the tensor dimension.
  
      See Also
      --------
      split : Split a tensor into multiple sub-tensors of equal size.
  
      Examples
      --------
      >>> import mars.tensor as mt
  
      >>> x = mt.arange(16.0).reshape(4, 4)
      >>> x.execute()
      array([[  0.,   1.,   2.,   3.],
             [  4.,   5.,   6.,   7.],
             [  8.,   9.,  10.,  11.],
             [ 12.,  13.,  14.,  15.]])
      >>> mt.vsplit(x, 2).execute()
      [array([[ 0.,  1.,  2.,  3.],
             [ 4.,  5.,  6.,  7.]]),
       array([[  8.,   9.,  10.,  11.],
             [ 12.,  13.,  14.,  15.]])]
      >>> mt.vsplit(x, mt.array([3, 6])).execute()
      [array([[  0.,   1.,   2.,   3.],
             [  4.,   5.,   6.,   7.],
             [  8.,   9.,  10.,  11.]]),
       array([[ 12.,  13.,  14.,  15.]]),
       array([], dtype=float64)]
  
      With a higher dimensional tensor the split is still along the first axis.
  
      >>> x = mt.arange(8.0).reshape(2, 2, 2)
      >>> x.execute()
      array([[[ 0.,  1.],
              [ 2.,  3.]],
             [[ 4.,  5.],
              [ 6.,  7.]]])
      >>> mt.vsplit(x, 2).execute()
      [array([[[ 0.,  1.],
              [ 2.,  3.]]]),
       array([[[ 4.,  5.],
              [ 6.,  7.]]])]
  
      """
      ary = a
      a = astensor(a)
  
      if a.ndim < 2:
          raise ValueError(
              "vsplit only works on tensors of 2 or more dimensions"
          )
      return split(ary, indices_or_sections, 0)
  
label_desc: Use image node_id 1 for calling a global function with example usage: vsplit(a, indices_or_sections) and returns: split