mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-21 05:34:18 +08:00
Summary: The ModelReport class in model_report.py combines the functionality of the detectors and the ModelReportObserver. It creates an end-to-end system where a user can pass in a prepared Graph Model to insert the ModelReportObservers, then after the user callibrates their model, the callibrated model can then be used by the ModelReport class to generate reports based on what the user wished to gather information on. This contains the init method and the signatures and docs for each of the proposed helper functions. Test Plan: python test/test_quantization.py TestFxModelReportClass Reviewers: Subscribers: Tasks: Tags: Pull Request resolved: https://github.com/pytorch/pytorch/pull/79595 Approved by: https://github.com/andrewor14
133 lines
6.8 KiB
Python
133 lines
6.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Owner(s): ["oncall: quantization"]
|
|
|
|
from torch.testing._internal.common_utils import run_tests
|
|
|
|
# Quantization core tests. These include tests for
|
|
# - quantized kernels
|
|
# - quantized functional operators
|
|
# - quantized workflow modules
|
|
# - quantized workflow operators
|
|
# - quantized tensor
|
|
|
|
# 1. Quantized Kernels
|
|
# TODO: merge the different quantized op tests into one test class
|
|
from quantization.core.test_quantized_op import TestQuantizedOps # noqa: F401
|
|
from quantization.core.test_quantized_op import TestQNNPackOps # noqa: F401
|
|
from quantization.core.test_quantized_op import TestQuantizedLinear # noqa: F401
|
|
from quantization.core.test_quantized_op import TestQuantizedConv # noqa: F401
|
|
from quantization.core.test_quantized_op import TestDynamicQuantizedOps # noqa: F401
|
|
from quantization.core.test_quantized_op import TestComparatorOps # noqa: F401
|
|
from quantization.core.test_quantized_op import TestPadding # noqa: F401
|
|
from quantization.core.test_quantized_op import TestQuantizedEmbeddingOps # noqa: F401
|
|
# 2. Quantized Functional/Workflow Ops
|
|
from quantization.core.test_quantized_functional import TestQuantizedFunctionalOps # noqa: F401
|
|
from quantization.core.test_workflow_ops import TestFakeQuantizeOps # noqa: F401
|
|
from quantization.core.test_workflow_ops import TestFusedObsFakeQuant # noqa: F401
|
|
# 3. Quantized Tensor
|
|
from quantization.core.test_quantized_tensor import TestQuantizedTensor # noqa: F401
|
|
# 4. Modules
|
|
from quantization.core.test_workflow_module import TestFakeQuantize # noqa: F401
|
|
from quantization.core.test_workflow_module import TestObserver # noqa: F401
|
|
from quantization.core.test_quantized_module import TestStaticQuantizedModule # noqa: F401
|
|
from quantization.core.test_quantized_module import TestDynamicQuantizedModule # noqa: F401
|
|
from quantization.core.test_quantized_module import TestReferenceQuantizedModule # noqa: F401
|
|
from quantization.core.test_workflow_module import TestRecordHistogramObserver # noqa: F401
|
|
from quantization.core.test_workflow_module import TestHistogramObserver # noqa: F401
|
|
from quantization.core.test_workflow_module import TestDistributed # noqa: F401
|
|
from quantization.core.test_workflow_module import TestFusedObsFakeQuantModule # noqa: F401
|
|
from quantization.core.test_utils import TestUtils # noqa: F401
|
|
|
|
|
|
# Eager Mode Workflow. Tests for the functionality of APIs and different features implemented
|
|
# using eager mode.
|
|
|
|
# 1. Eager mode post training quantization
|
|
from quantization.eager.test_quantize_eager_ptq import TestQuantizeEagerPTQStatic # noqa: F401
|
|
from quantization.eager.test_quantize_eager_ptq import TestQuantizeEagerPTQDynamic # noqa: F401
|
|
from quantization.eager.test_quantize_eager_ptq import TestQuantizeEagerOps # noqa: F401
|
|
from quantization.eager.test_quantize_eager_ptq import TestQuantizeEagerONNXExport # noqa: F401
|
|
# 2. Eager mode quantization aware training
|
|
from quantization.eager.test_quantize_eager_qat import TestQuantizeEagerQAT # noqa: F401
|
|
from quantization.eager.test_quantize_eager_qat import TestQuantizeEagerQATNumerics # noqa: F401
|
|
# 3. Eager mode fusion passes
|
|
from quantization.eager.test_fuse_eager import TestFuseEager # noqa: F401
|
|
# 4. Testing model numerics between quanitzed and FP32 models
|
|
from quantization.eager.test_model_numerics import TestModelNumericsEager # noqa: F401
|
|
# 5. Tooling: numeric_suite
|
|
from quantization.eager.test_numeric_suite_eager import TestNumericSuiteEager # noqa: F401
|
|
# 6. Equalization and Bias Correction
|
|
from quantization.eager.test_equalize_eager import TestEqualizeEager # noqa: F401
|
|
from quantization.eager.test_bias_correction_eager import TestBiasCorrectionEager # noqa: F401
|
|
|
|
|
|
# FX GraphModule Graph Mode Quantization. Tests for the functionality of APIs and different features implemented
|
|
# using fx quantization.
|
|
try:
|
|
from quantization.fx.test_quantize_fx import TestFuseFx # noqa: F401
|
|
from quantization.fx.test_quantize_fx import TestQuantizeFx # noqa: F401
|
|
from quantization.fx.test_quantize_fx import TestQuantizeFxOps # noqa: F401
|
|
from quantization.fx.test_quantize_fx import TestQuantizeFxModels # noqa: F401
|
|
from quantization.fx.test_subgraph_rewriter import TestSubgraphRewriter # noqa: F401
|
|
except ImportError:
|
|
# In FBCode we separate FX out into a separate target for the sake of dev
|
|
# velocity. These are covered by a separate test target `quantization_fx`
|
|
pass
|
|
|
|
try:
|
|
from quantization.fx.test_numeric_suite_fx import TestFXGraphMatcher # noqa: F401
|
|
from quantization.fx.test_numeric_suite_fx import TestFXGraphMatcherModels # noqa: F401
|
|
from quantization.fx.test_numeric_suite_fx import TestFXNumericSuiteCoreAPIs # noqa: F401
|
|
from quantization.fx.test_numeric_suite_fx import TestFXNumericSuiteCoreAPIsModels # noqa: F401
|
|
except ImportError:
|
|
pass
|
|
|
|
# Test the model report module
|
|
try:
|
|
from quantization.fx.test_model_report_fx import TestFxModelReportDetector # noqa: F401
|
|
from quantization.fx.test_model_report_fx import TestFxModelReportObserver # noqa: F401
|
|
from quantization.fx.test_model_report_fx import TestFxModelReportDetectDynamicStatic # noqa: F401
|
|
from quantization.fx.test_model_report_fx import TestFxModelReportClass # noqa: F401
|
|
except ImportError:
|
|
pass
|
|
|
|
# Equalization for FX mode
|
|
try:
|
|
from quantization.fx.test_equalize_fx import TestEqualizeFx # noqa: F401
|
|
except ImportError:
|
|
pass
|
|
|
|
# Backward Compatibility. Tests serialization and BC for quantized modules.
|
|
try:
|
|
from quantization.bc.test_backward_compatibility import TestSerialization # noqa: F401
|
|
except ImportError:
|
|
pass
|
|
|
|
# JIT Graph Mode Quantization
|
|
from quantization.jit.test_quantize_jit import TestQuantizeJit # noqa: F401
|
|
from quantization.jit.test_quantize_jit import TestQuantizeJitPasses # noqa: F401
|
|
from quantization.jit.test_quantize_jit import TestQuantizeJitOps # noqa: F401
|
|
from quantization.jit.test_quantize_jit import TestQuantizeDynamicJitPasses # noqa: F401
|
|
from quantization.jit.test_quantize_jit import TestQuantizeDynamicJitOps # noqa: F401
|
|
# Quantization specific fusion passes
|
|
from quantization.jit.test_fusion_passes import TestFusionPasses # noqa: F401
|
|
from quantization.jit.test_deprecated_jit_quant import TestDeprecatedJitQuantized # noqa: F401
|
|
|
|
# AO Migration tests
|
|
from quantization.ao_migration.test_quantization import TestAOMigrationQuantization # noqa: F401
|
|
try:
|
|
from quantization.ao_migration.test_quantization_fx import TestAOMigrationQuantizationFx # noqa: F401
|
|
except ImportError:
|
|
pass
|
|
|
|
try:
|
|
from quantization.dbr.test_quantize_dbr import TestQuantizeDBR # noqa: F401
|
|
from quantization.dbr.test_quantize_dbr import TestQuantizeDBRIndividualOps # noqa: F401
|
|
from quantization.dbr.test_quantize_dbr import TestQuantizeDBRMultipleOps # noqa: F401
|
|
from quantization.dbr.test_quantize_dbr import TestQuantizeDBRModels # noqa: F401
|
|
except ImportError:
|
|
pass
|
|
|
|
if __name__ == '__main__':
|
|
run_tests()
|