Shortcuts

convert_fx

class torch.ao.quantization.quantize_fx.convert_fx(graph_module, convert_custom_config=None, _remove_qconfig=True, qconfig_mapping=None, backend_config=None)[源代码]

将校准或训练后的模型转换为量化模型

Parameters
  • graph_module (*) – 一个准备好的并经过校准/训练的模型(GraphModule)

  • convert_custom_config (*) – 转换函数的自定义配置。 参见 ConvertCustomConfig 了解更多详情

  • _remove_qconfig (*) – 在转换后移除模型中的qconfig属性的选项。

  • qconfig_mapping (*) –

    用于指定如何将模型转换为量化的配置。

    键必须包括传递给 prepare_fxprepare_qat_fx 的 qconfig_mapping 中的键, 具有相同的值或 None。可以指定额外的键,其值设置为 None

    对于值设置为 None 的每个条目,我们在模型中跳过量化该条目:

    qconfig_mapping = QConfigMapping
        .set_global(qconfig_from_prepare)
        .set_object_type(torch.nn.functional.add, None)  # 跳过量化 torch.nn.functional.add
        .set_object_type(torch.nn.functional.linear, qconfig_from_prepare)
        .set_module_name("foo.bar", None)  # 跳过量化模块 "foo.bar"
    
    • backend_config (BackendConfig): 后端的配置,描述了如何在后端对

      操作符进行量化,这包括量化模式支持(静态/动态/仅权重)、数据类型支持(quint8/qint8 等)、 每个操作符和融合操作符的观察者放置。 参见 BackendConfig 了解更多详情

Returns

一个量化模型(torch.nn.Module)

Return type

图模块

示例:

# prepared_model: 经过prepare_fx/prepare_qat_fx和校准/训练后的模型
# convert_fx 将经过校准/训练的模型转换为目标硬件的量化模型,
# 这包括首先将模型转换为参考量化模型,然后将参考量化模型降低到后端
# 目前,支持的后端是fbgemm(onednn),qnnpack(xnnpack)和
# 它们共享相同的量化算子集,因此我们使用相同的
# 降低过程
#
# backend_config 定义了模型中加权模块对应的参考量化模块,
# 例如 nn.Linear
# TODO: 在我们为fbgemm和qnnpack拆分backend_config后添加backend_config
# 例如 backend_config = get_default_backend_config("fbgemm")
quantized_model = convert_fx(prepared_model)
优云智算