sima_qat.sima_quantizer ======================= .. py:module:: sima_qat.sima_quantizer Classes ------- .. autoapisummary:: sima_qat.sima_quantizer.SimaQuantizer Functions --------- .. autoapisummary:: sima_qat.sima_quantizer.get_sima_quantization_config Module Contents --------------- .. py:function:: get_sima_quantization_config(is_qat: bool = False) .. py:class:: SimaQuantizer This quantizer definition uses XNNPACK implementation for the majority of ops. This is because the XNNPACK code simply looks for appropriate patterns, and applies the QuantizationAnnotation attributes accordingly. The quantization rules are defined separately, and specified here using Sima properties. .. py:attribute:: supported_config_and_operators .. py:attribute:: STATIC_QAT_ONLY_OPS :value: ['sima_conv_bn_hardtanh', 'conv_bn_relu', 'conv_bn'] .. py:attribute:: STATIC_OPS :value: ['linear_relu', 'linear', 'sima_conv_add_or_mul_const', 'sima_conv_hardtanh', 'conv_relu',... .. py:attribute:: global_config :type: Optional[torch.ao.quantization.quantizer.xnnpack_quantizer_utils.QuantizationConfig] :value: None .. py:attribute:: operator_type_config :type: Dict[torch._ops.OpOverloadPacket, Optional[torch.ao.quantization.quantizer.xnnpack_quantizer_utils.QuantizationConfig]] .. py:attribute:: module_type_config :type: Dict[Callable, Optional[torch.ao.quantization.quantizer.xnnpack_quantizer_utils.QuantizationConfig]] .. py:attribute:: module_name_config :type: Dict[str, Optional[torch.ao.quantization.quantizer.xnnpack_quantizer_utils.QuantizationConfig]] .. py:method:: get_supported_quantization_configs() -> List[torch.ao.quantization.quantizer.xnnpack_quantizer_utils.QuantizationConfig] :classmethod: .. py:method:: get_supported_operator_for_quantization_config(quantization_config: Optional[torch.ao.quantization.quantizer.xnnpack_quantizer_utils.QuantizationConfig]) -> List[torch.ao.quantization.quantizer.xnnpack_quantizer_utils.OperatorPatternType] :classmethod: .. py:method:: set_global(quantization_config: torch.ao.quantization.quantizer.xnnpack_quantizer_utils.QuantizationConfig) -> SimaQuantizer .. py:method:: set_operator_type(operator_type: torch._ops.OpOverloadPacket, quantization_config: torch.ao.quantization.quantizer.xnnpack_quantizer_utils.QuantizationConfig) -> SimaQuantizer .. py:method:: set_module_type(module_type: Callable, quantization_config: torch.ao.quantization.quantizer.xnnpack_quantizer_utils.QuantizationConfig) Set quantization_config for a submodule with type: `module_type`, for example: quantizer.set_module_name(Sub) or quantizer.set_module_name(nn.Linear), it will quantize all supported operator/operator patterns in the submodule with this module type with the given `quantization_config` .. py:method:: set_module_name(module_name: str, quantization_config: Optional[torch.ao.quantization.quantizer.xnnpack_quantizer_utils.QuantizationConfig]) Set quantization_config for a submodule with name: `module_name`, for example: quantizer.set_module_name("blocks.sub"), it will quantize all supported operator/operator patterns in the submodule with this module name with the given `quantization_config` .. py:method:: transform_for_annotation(model: torch.fx.GraphModule) -> torch.fx.GraphModule Transforms scalar values to tensor attributes .. py:method:: annotate(model: torch.fx.GraphModule) -> torch.fx.GraphModule just handling global spec for now .. py:method:: validate(model: torch.fx.GraphModule) -> None .. py:method:: get_supported_operators() -> List[torch.ao.quantization.quantizer.xnnpack_quantizer_utils.OperatorConfig] :classmethod: