code: def _quantize_static(
      model: Union[Module, GraphModule],
      input_data: List[Tuple[torch.Tensor, ...]],
      device: Device,
  ):
      assert (
          device is not DeviceType.GPU
      ), "Quantization for torch is only available on CPU"
  
      backend = (
          "fbgemm"
          if "fbgemm" in torch.backends.quantized.supported_engines
          else "qnnpack"
      )
  
      torch.backends.quantized.engine = backend
  
      if isinstance(model, GraphModule):
          return _quantize_static_torch_fx(model, input_data, backend)
      else:
          return _quantize_static_torch(model, input_data, backend)
  
file_path: nebuly/optimization/nebullvm/nebullvm/operations/optimizations/compilers/quantizations/pytorch.py
imports: import copy
  from typing import List, Tuple, Union
  from loguru import logger
  from nebullvm.core.models import DeviceType, Device, QuantizationType
  from nebullvm.optional_modules.torch import torch, Module, symbolic_trace, QuantStub, DeQuantStub, GraphModule, default_dynamic_qconfig, prepare_fx, convert_fx, ScriptModule
  from nebullvm.tools.transformations import MultiStageTransformation, HalfPrecisionTransformation
  from nebullvm.tools.utils import check_module_version
label_desc: Use image node_id 5 for calling a global function with example usage: _quantize_static(model, input_data, device) and returns: _quantize_static_torch_fx, _quantize_static_torch