BackendPatternConfig#
- class torch.ao.quantization.backend_config.BackendPatternConfig(pattern=None)[source]#
配置对象,用于为给定的算子模式指定量化行为。详细示例用法请参见
BackendConfig
。- classmethod from_dict(backend_pattern_config_dict)[source]#
从具有以下项目的字典创建
BackendPatternConfig
“pattern”: 要配置的模式 “observation_type”:
ObservationType
,指定如何为此模式插入观察器 “dtype_configs”: 一系列字典,表示DTypeConfig
“root_module”: 一个torch.nn.Module
,代表此模式的根 “qat_module”: 一个torch.nn.Module
,代表此模式的 QAT 实现 “reference_quantized_module”: 一个torch.nn.Module
,代表此模式根模块的参考量化实现 “fused_module”: 一个torch.nn.Module
,代表此模式的融合实现 “fuser_method”: 一个函数,指定如何融合此模式 “pattern_complex_format”: 以反向嵌套元组格式指定的模式(已弃用)- 返回类型
- set_fuser_method(fuser_method)[source]#
设置一个函数,该函数指定如何融合此 BackendPatternConfig 的模式。
此函数的第一个参数应为 is_qat,其余参数应为元组模式中的项。此函数的返回值应为由此产生的融合模块。
例如,模式 (torch.nn.Linear, torch.nn.ReLU) 的 fuser 方法可以是
- def fuse_linear_relu(is_qat, linear, relu)
return torch.ao.nn.intrinsic.LinearReLU(linear, relu)
有关更复杂的示例,请参阅 https://gist.github.com/jerryzh168/8bea7180a8ba3c279f2c9b050f2a69a6。
- 返回类型
- set_observation_type(observation_type)[source]#
设置在图表中如何为此模式插入观察器。
此处,“observation type” 指的是观察器(或量化-去量化算子)在图中如何放置。这用于生成后端理解的期望的参考模式。像 Linear 和 Conv 这样的加权算子需要不同的观察器(或传递给参考模型中量化算子的量化参数)来分别处理输入和输出。
有两种观察器类型
OUTPUT_USE_DIFFERENT_OBSERVER_AS_INPUT (默认): 输出观察器实例将与输入观察器不同。这是最常见的观察器类型。
OUTPUT_SHARE_OBSERVER_WITH_INPUT: 输出观察器实例将与输入观察器相同。这对于像 cat 这样的算子很有用。
注意: 此名称将在不久的将来重命名,因为我们将很快插入带有观察器(和伪量化)的 QuantDeQuantStubs,而不是观察器本身。
- 返回类型
- set_pattern(pattern)[source]#
设置要配置的模式。
模式可以是浮点模块、函数式算子、pytorch 算子,或它们的元组组合。元组模式被视为顺序模式,目前仅支持 2 个或 3 个元素的元组。
- 返回类型
- set_reference_quantized_module(reference_quantized_module)[source]#
设置表示此模式根模块的参考量化实现的模块。
有关更多详细信息,请参阅
set_root_module()
。- 返回类型