code: def backward(ctx, grad_out):
      assert ctx.config.training
  
      (inputs, weight) = ctx.saved_tensors
      out_size, in_size = weight.size()
      grad_inputs = F.linear(grad_out, weight.T)
      grad_weight = F.linear(
          grad_out.reshape(-1, out_size).T,
          inputs.reshape(-1, in_size).T,
      )
  
      return (None, grad_inputs, grad_weight, None)
  
imports: from dataclasses import dataclass
  import math
  import torch
  from torch import nn
  from torch.autograd import Function
  from torch.nn import functional
  from lightseq.training.ops.pytorch.quantization import weight_quant_config, act_quant_config
  from lightseq.training.ops.pytorch.builder import TransformerBuilder
label_desc: Use image node_id 2 for calling the LSQuantLinearFunc obj's underlying member method code with example usage: obj.backward(ctx, grad_out) and returns: None,  grad_inputs,  grad_weight,  None