code: def backward(ctx, grad_output):
      input, offset, mask, weight, bias = ctx.saved_tensors
      grad_input = torch.zeros_like(input)
      grad_offset = torch.zeros_like(offset)
      grad_mask = torch.zeros_like(mask)
      grad_weight = torch.zeros_like(weight)
      grad_bias = torch.zeros_like(bias)
      grad_output = grad_output.contiguous()
      ext_module.modulated_deform_conv_backward(
          input,
          weight,
          bias,
          ctx._bufs[0],
          offset,
          mask,
          ctx._bufs[1],
          grad_input,
          grad_weight,
          grad_bias,
          grad_offset,
          grad_mask,
          grad_output,
          kernel_h=weight.size(2),
          kernel_w=weight.size(3),
          stride_h=ctx.stride[0],
          stride_w=ctx.stride[1],
          pad_h=ctx.padding[0],
          pad_w=ctx.padding[1],
          dilation_h=ctx.dilation[0],
          dilation_w=ctx.dilation[1],
          group=ctx.groups,
          deformable_group=ctx.deform_groups,
          with_bias=ctx.with_bias,
      )
      if not ctx.with_bias:
          grad_bias = None
  
      return (
          grad_input,
          grad_offset,
          grad_mask,
          grad_weight,
          grad_bias,
          None,
          None,
          None,
          None,
          None,
      )
  
imports: import math
  import torch
  import torch.nn
  from torch.autograd import Function
  from torch.autograd.function import once_differentiable
  from torch.nn.modules.utils import _pair, _single
  from annotator.uniformer.mmcv.utils import deprecated_api_warning
  from ..cnn import CONV_LAYERS
  from ..utils import ext_loader, print_log
label_desc: Use image node_id 3 for calling the ModulatedDeformConv2dFunction obj's underlying member method code with example usage: obj.backward(ctx, grad_output) and returns: grad_input,  grad_offset,  grad_mask,  grad_weight,  grad_bias,  None,  None,  None,  None,  None