捷徑

BackendConfig

class torch.ao.quantization.backend_config.BackendConfig(name='')[原始碼][原始碼]

定義可在給定後端上量化的模式集合,以及如何從這些模式產生參考量化模型的配置。

在此上下文中,模式指的是模組、函式、運算子或上述項目的有向無環圖。目標後端上支援的每個模式都可以透過 BackendPatternConfig 單獨配置,具體包括:

  1. 支援的輸入/輸出激活、權重和偏差資料類型

  2. 為了構建參考模式,如何插入 observers 和 quant/dequant 運算

  3. (可選)融合、QAT 和參考模組映射。

模式的格式描述於:https://github.com/pytorch/pytorch/blob/master/torch/ao/quantization/backend_config/README.md

使用範例

import torch
from torch.ao.quantization.backend_config import (
    BackendConfig,
    BackendPatternConfig,
    DTypeConfig,
    ObservationType,
)

weighted_int8_dtype_config = DTypeConfig(
    input_dtype=torch.quint8,
    output_dtype=torch.quint8,
    weight_dtype=torch.qint8,
    bias_dtype=torch.float)

def fuse_conv2d_relu(is_qat, conv, relu):
    return torch.ao.nn.intrinsic.ConvReLU2d(conv, relu)

# For quantizing Linear
linear_config = BackendPatternConfig(torch.nn.Linear)             .set_observation_type(ObservationType.OUTPUT_USE_DIFFERENT_OBSERVER_AS_INPUT)             .add_dtype_config(weighted_int8_dtype_config)             .set_root_module(torch.nn.Linear)             .set_qat_module(torch.ao.nn.qat.Linear)             .set_reference_quantized_module(torch.ao.nn.quantized.reference.Linear)

# For fusing Conv2d + ReLU into ConvReLU2d
conv_relu_config = BackendPatternConfig((torch.nn.Conv2d, torch.nn.ReLU))             .set_observation_type(ObservationType.OUTPUT_USE_DIFFERENT_OBSERVER_AS_INPUT)             .add_dtype_config(weighted_int8_dtype_config)             .set_fused_module(torch.ao.nn.intrinsic.ConvReLU2d)             .set_fuser_method(fuse_conv2d_relu)

# For quantizing ConvReLU2d
fused_conv_relu_config = BackendPatternConfig(torch.ao.nn.intrinsic.ConvReLU2d)             .set_observation_type(ObservationType.OUTPUT_USE_DIFFERENT_OBSERVER_AS_INPUT)             .add_dtype_config(weighted_int8_dtype_config)             .set_root_module(torch.nn.Conv2d)             .set_qat_module(torch.ao.nn.intrinsic.qat.ConvReLU2d)             .set_reference_quantized_module(torch.ao.nn.quantized.reference.Conv2d)

backend_config = BackendConfig("my_backend")             .set_backend_pattern_config(linear_config)             .set_backend_pattern_config(conv_relu_config)             .set_backend_pattern_config(fused_conv_relu_config)
property configs: List[BackendPatternConfig]

傳回此 BackendConfig 中設定的配置清單的副本。

classmethod from_dict(backend_config_dict)[原始碼][原始碼]

從具有以下項目的字典建立 BackendConfig

“name”: 目標後端的名稱

“configs”: 代表每個 BackendPatternConfig 的字典清單

回傳類型

BackendConfig

set_backend_pattern_config(config)[原始碼][原始碼]

為可以在目標後端上執行的模式設定配置。 這會覆寫給定模式的任何現有配置。

回傳類型

BackendConfig

set_backend_pattern_configs(configs)[原始碼][原始碼]

為可以在目標後端上運行的模式設定配置。 如果先前已註冊,則會覆寫給定模式的任何現有配置。

回傳類型

BackendConfig

set_name(name)[原始碼][原始碼]

設定目標後端的名稱。

回傳類型

BackendConfig

to_dict()[原始碼][原始碼]

將此 BackendConfig 轉換為具有 from_dict() 中描述的項目的字典。

回傳類型

Dict[str, Any]

文件

存取 PyTorch 的全面開發者文件

檢視文件

教學

取得針對初學者和進階開發者的深入教學

檢視教學

資源

尋找開發資源並獲得問題解答

檢視資源