code: def _quantize_static(
      model_path: str,
      input_data: List[Tuple[np.ndarray, ...]],
      use_gpu: bool,
  ) -> str:
      model_path = Path(model_path)
      model_quant = model_path.parent.parent / "int8_static"
      model_quant.mkdir(parents=True, exist_ok=True)
      model_quant = model_quant / (model_path.stem + ".quant.onnx")
      inputs = input_data
      input_names = get_input_names(str(model_path))
      cdr = _IterableCalibrationDataReader(
          input_names=input_names, iterable_dataset=inputs
      )
      activation_type, weight_type = _get_quantization_type_for_static(
          use_gpu
      )
      quantize_static(
          model_path,
          Path(model_quant),
          cdr,
          activation_type=activation_type,
          weight_type=weight_type,
          optimize_model=False,
      )
      return str(model_quant)
  
file_path: nebuly/optimization/nebullvm/nebullvm/operations/optimizations/compilers/quantizations/onnx.py
imports: from pathlib import Path
  from typing import Union, Iterable, Tuple, List
  import cpuinfo
  import numpy
  from nebullvm.core.models import QuantizationType, Device, DeviceType
  from nebullvm.optional_modules.onnx import onnx, convert_float_to_float16_model_path
  from nebullvm.optional_modules.onnxruntime import CalibrationDataReader, QuantType, quantize_dynamic, quantize_static
  from nebullvm.optional_modules.torch import DataLoader
  from nebullvm.tools.onnx import get_input_names
  from nebullvm.tools.transformations import MultiStageTransformation, HalfPrecisionTransformation
label_desc: Use image node_id 3 for calling a global function with example usage: _quantize_static(model_path, input_data, use_gpu) and returns: str