code: def convert(
      func,
      params,
      blocksize,
      sparsity_threshold,
      layout="NHWC",
      kernel_size=1,
  ):
      """Convert a conv2d func and according parameters to block sparse
  
      Parameters
      ----------
      func : relay.Expr
          Expr will be optimized to sparse operation
      params : Dict[Srting, tvm.nd.array]
          Parameters of the Expr
      blocksize : Tuple(int, int)
          Blocksize for BSR matrix
      sparsity_threshold : float
          Minimal sparsity requirement for converting.
          If weight sparsity is lower than this threshold,
          the dense operation will be kept.
      layout : str
          layout of network
  
      Returns
      -------
      new_func: relay.Expr
          Mutated Expr with sparse operations
  
      params: Dict[Srting, tvm.nd.array]
          New params with BSR matrix for mutated Expr
      """
      weight_info = process_params(
          func,
          params,
          blocksize,
          sparsity_threshold,
          layout,
          kernel_size,
      )
      new_func = _run_opt_pass(
          func,
          relay.transform.Conv2dToSparse(
              weight_info.weight_name,
              weight_info.weight_shape,
              layout,
              kernel_size,
          ),
      )
  
      return new_func, params
  
imports: from tvm import relay
  from tvm.relay.analysis.sparse_conv2d import process_params
  from .utils import _run_opt_pass
label_desc: Use image node_id 1 for calling a global function with example usage: convert(func, params, blocksize, sparsity_threshold, layout, kernel_size) and returns: new_func,  params