code: def quantize_onnx(
      model_path: str,
      input_data: List[Tuple[np.ndarray, ...]],
      quantization_type: QuantizationType,
      device: Device,
      input_tfms: MultiStageTransformation,
  ) -> str:
      if quantization_type == QuantizationType.DYNAMIC:
          return _quantize_dynamic(model_path)
      elif quantization_type == QuantizationType.STATIC:
          return _quantize_static(
              model_path, input_data, device.type is DeviceType.GPU
          )
      elif quantization_type == QuantizationType.HALF:
          return _convert_to_half_precision(model_path, input_tfms)
      else:
          raise ValueError(
              f"Quantization type {quantization_type} not supported"
          )
  
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 5 for calling a global function with example usage: quantize_onnx(model_path, input_data, quantization_type, device, input_tfms) and returns: _quantize_dynamic, _quantize_static, _convert_to_half_precision