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_fx 或 prepare_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)