mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
Summary: The goal is to implement cross layer equalization as described in section 4.1 in this paper: https://arxiv.org/pdf/1906.04721.pdf Given two adjacent submodules in a trained model, A,B quantization might hurt one of the submodules more than the other. The paper poses the idea that a loss in accuracy from quantizing can be due to a difference in the channel ranges between the two submodules (the output channel range of A can be small, while the input channel range of B can be large). To minimize this source of error, we want to scale the tensors of A,B s.t. their channel ranges are equal (them being equal means no difference in ranges and minimizes this source of error). Pull Request resolved: https://github.com/pytorch/pytorch/pull/41685 Test Plan: Imported from OSS Reviewed By: z-a-f Differential Revision: D22630219 Pulled By: edmundw314 fbshipit-source-id: ccc91ba12c10b652d7275222da8b85455b8a7cd5
74 lines
3.5 KiB
Python
74 lines
3.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from torch.testing._internal.common_utils import run_tests
|
|
|
|
# Quantized Tensor
|
|
from quantization.test_quantized_tensor import TestQuantizedTensor # noqa: F401
|
|
# Quantized Op
|
|
# TODO: merge test cases in quantization.test_quantized
|
|
from quantization.test_quantized_op import TestQuantizedOps # noqa: F401
|
|
from quantization.test_quantized_op import TestQNNPackOps # noqa: F401
|
|
from quantization.test_quantized_op import TestQuantizedLinear # noqa: F401
|
|
from quantization.test_quantized_op import TestQuantizedConv # noqa: F401
|
|
from quantization.test_quantized_op import TestDynamicQuantizedLinear # noqa: F401
|
|
from quantization.test_quantized_op import TestComparatorOps # noqa: F401
|
|
from quantization.test_quantized_op import TestPadding # noqa: F401
|
|
from quantization.test_quantized_op import TestQuantizedEmbeddingBag # noqa: F401
|
|
|
|
# Quantized Functional
|
|
from quantization.test_quantized_functional import TestQuantizedFunctional # noqa: F401
|
|
|
|
# Quantized Module
|
|
from quantization.test_quantized_module import TestStaticQuantizedModule # noqa: F401
|
|
from quantization.test_quantized_module import TestDynamicQuantizedModule # noqa: F401
|
|
|
|
# Quantization Aware Training
|
|
from quantization.test_qat_module import TestQATModule # noqa: F401
|
|
|
|
# Quantization specific fusion passes
|
|
from quantization.test_fusion_passes import TestFusionPasses # noqa: F401
|
|
|
|
# Module
|
|
# TODO: merge the fake quant per tensor and per channel test cases
|
|
# TODO: some of the tests are actually operator tests, e.g. test_forward_per_tensor, and
|
|
# should be moved to test_quantized_op
|
|
from quantization.test_workflow_module import TestFakeQuantizePerTensor # noqa: F401
|
|
from quantization.test_workflow_module import TestFakeQuantizePerChannel # noqa: F401
|
|
from quantization.test_workflow_module import TestObserver # noqa: F401
|
|
# TODO: merge with TestObserver
|
|
# TODO: some tests belong to test_quantize.py, e.g. test_record_observer
|
|
from quantization.test_workflow_module import TestRecordHistogramObserver # noqa: F401
|
|
from quantization.test_workflow_module import TestDistributed # noqa: F401
|
|
|
|
# Workflow
|
|
# 1. Eager mode quantization
|
|
from quantization.test_quantize import TestPostTrainingStatic # noqa: F401
|
|
from quantization.test_quantize import TestPostTrainingDynamic # noqa: F401
|
|
from quantization.test_quantize import TestQuantizationAwareTraining # noqa: F401
|
|
|
|
# TODO: merge with other tests in test_quantize.py?
|
|
from quantization.test_quantize import TestFunctionalModule # noqa: F401
|
|
from quantization.test_quantize import TestFusion # noqa: F401
|
|
from quantization.test_quantize import TestModelNumerics # noqa: F401
|
|
from quantization.test_quantize import TestQuantizeONNXExport # noqa: F401
|
|
from quantization.test_quantize import TestDeprecatedJitQuantized # noqa: F401
|
|
|
|
# 2. Graph mode quantization
|
|
from quantization.test_quantize_jit import TestQuantizeJit # noqa: F401
|
|
from quantization.test_quantize_jit import TestQuantizeJitPasses # noqa: F401
|
|
from quantization.test_quantize_jit import TestQuantizeJitOps # noqa: F401
|
|
from quantization.test_quantize_jit import TestQuantizeDynamicJitPasses # noqa: F401
|
|
from quantization.test_quantize_jit import TestQuantizeDynamicJitOps # noqaa: F401
|
|
|
|
# Tooling: numric_suite
|
|
from quantization.test_numeric_suite import TestEagerModeNumericSuite # noqa: F401
|
|
|
|
# Backward Compatibility
|
|
from quantization.test_backward_compatibility import TestSerialization # noqa: F401
|
|
|
|
# Equalization
|
|
from quantization.test_equalize import TestEqualizeEager # noqa: F401
|
|
|
|
if __name__ == '__main__':
|
|
run_tests()
|