code: def jac(func: Callable):
      def grad_fn(x_in):
          return ivy.to_native(
              func(ivy.to_ivy(x_in, nested=True)),
              nested=True,
              include_derived=True,
          )
  
      def callback_fn(x_in):
          return ivy.to_ivy(
              torch.func.jacfwd(grad_fn)(
                  ivy.to_native(x_in, nested=True)
              ),
              nested=True,
              include_derived=True,
          )
  
      return callback_fn
  
file_path: ivy/ivy/functional/backends/torch/gradients.py
imports: import torch
  from typing import Optional, Callable, Sequence, Union
  import ivy
  from ivy.func_wrapper import outputs_to_ivy_arrays, inputs_to_native_arrays
  from ivy.functional.ivy.gradients import _get_required_float_variables, _get_y_and_ret_idxs, _get_native_y, _set_duplicates, _process_func_ret_and_grads
label_desc: Use image node_id 8 for calling a global function with example usage: jac(func) and returns: callback_fn, ivy, ivy