BackendPatternConfig¶
- class torch.ao.quantization.backend_config.BackendPatternConfig(pattern=None)[source][source]¶
配置对象,指定给定算子模式的量化行为。有关详细用法示例,请参见
BackendConfig
。- classmethod from_dict(backend_pattern_config_dict)[source][source]¶
从一个字典创建
BackendPatternConfig
,字典包含以下项“pattern”: 正在配置的模式 “observation_type”: 指定如何为该模式插入观察者的
ObservationType
“dtype_configs”: 表示DTypeConfig
列表的字典列表 “root_module”: 表示该模式根部的torch.nn.Module
“qat_module”: 表示该模式 QAT 实现的torch.nn.Module
“reference_quantized_module”: 表示该模式根模块的参考量化实现的torch.nn.Module
“fused_module”: 表示该模式融合实现的torch.nn.Module
“fuser_method”: 指定如何融合该模式的函数 “pattern_complex_format”: 以反向嵌套元组格式指定的模式 (已弃用)- 返回类型
- set_fuser_method(fuser_method)[source][source]¶
设置指定如何融合此 BackendPatternConfig 模式的函数。
该函数的第一个参数应为 is_qat,其余参数应为元组模式中的项。该函数的返回值应为融合后的模块。
例如,模式 (torch.nn.Linear, torch.nn.ReLU) 的融合函数可以是
- 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][source]¶
设置如何将观察者插入到此模式的图中。
此处观察类型指的是如何在图中放置观察者(或量化-反量化操作)。这用于生成后端理解的所需参考模式。加权操作(例如线性层和卷积层)对于输入和输出需要不同的观察者(或传递给参考模型中量化操作的量化参数)。
有两种观察类型
OUTPUT_USE_DIFFERENT_OBSERVER_AS_INPUT (默认): 输出观察者实例将与输入不同。这是最常见的观察类型。
OUTPUT_SHARE_OBSERVER_WITH_INPUT: 输出观察者实例将与输入相同。这对于像 cat 这样的算子很有用。
注意:这将在不久的将来重命名,因为我们很快将插入带有观察者(和伪量化)的 QuantDeQuantStubs,而不是直接插入观察者本身。
- 返回类型
- set_pattern(pattern)[source][source]¶
设置要配置的模式。
模式可以是浮点模块、函数式算子、PyTorch 算子或以上各项的元组组合。元组模式被视为序列模式,目前仅支持由 2 或 3 个元素组成的元组。
- 返回类型
- set_reference_quantized_module(reference_quantized_module)[source][source]¶
设置表示此模式根模块的参考量化实现的模块。
有关更多详细信息,请参见
set_root_module()
。- 返回类型