code: def forward(self, x: torch.Tensor):
      # weights are cast automatically as Int8Params, but the bias has to be cast manually
      if self.bias is not None and self.bias.dtype != x.dtype:
          self.bias.data = self.bias.data.to(x.dtype)
  
      if getattr(self.weight, "quant_state", None) is None:
          print(
              "FP4 quantization state not initialized. Please call .cuda() or .to(device) on the LinearFP4 layer first."
          )
      inp_dtype = x.dtype
      if self.compute_dtype is not None:
          x = x.to(self.compute_dtype)
  
      bias = (
          None
          if self.bias is None
          else self.bias.to(self.compute_dtype)
      )
      out = bnb.matmul_4bit(
          x,
          self.weight.t(),
          bias=bias,
          quant_state=self.weight.quant_state,
      )
  
      out = out.to(inp_dtype)
  
      return out
  
imports: import os
  import torch
  import torch.distributed
  from torch import nn
  from torch.nn import functional
  from typing import List
  from loguru import logger
  from functools import lru_cache
  from accelerate import init_empty_weights
  from text_generation_server.utils.gptq.quant_linear import QuantLinear
  from text_generation_server.utils.import_utils import IS_CUDA_SYSTEM, IS_ROCM_SYSTEM
  from text_generation_server.utils.log import log_once
label_desc: Use image node_id 2 for calling the Linear4bit obj's underlying member method code with example usage: obj.forward(x) and returns: out