forked from pytorch/pytorch
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
quantization: autogenerate quantization backend configs for documenta…
…tion (pytorch#75126) Summary: Pull Request resolved: pytorch#75126 Quantization has a high volume of configurations of how to quantize an op for a reference model representation which is useful for a lowering step for a backend. An example of this is ``` {'dtype_configs': [{'input_dtype': torch.quint8, 'output_dtype': torch.quint8}], 'observation_type': <ObservationType.OUTPUT_USE_DIFFERENT_OBSERVER_AS_INPUT: 0>, 'pattern': <class 'torch.nn.modules.conv.ConvTranspose1d'>}, ``` These configs are checked into master, and they are created with Python functions. Therefore, there is no easy way for the user to see what the configs actually are without running some Python code. This PR is one approach to document these configs. Here is what this is doing: 1. during documentation build, write a text file of the configs 2. render that text file on a quantization page, with some additional context In the future, this could be extended to autogenerate better looking tables such as: op support per backend and dtype, op support per valid quantization settings per backend, etc. Test Plan: ``` cd docs make html cd html python -m http.server 8000 // render http://[::]:8000/quantization-backend-configuration.html // it renders correctly ``` Reviewed By: ejguan Differential Revision: D35365461 Pulled By: vkuzo fbshipit-source-id: d60f776ccb57da9db3d09550e4b27bd5e725635a (cherry picked from commit 14865c0)
- Loading branch information
1 parent
83400e8
commit 74b23b2
Showing
5 changed files
with
56 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
Quantization Backend Configuration | ||
---------------------------------- | ||
|
||
FX Graph Mode Quantization allows the user to configure various | ||
quantization behaviors of an op in order to match the expectation | ||
of their backend. | ||
|
||
In the future, this document will contain a detailed spec of | ||
these configurations. | ||
|
||
|
||
Default values for native configurations | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
Below is the output of the configuration for quantization of ops | ||
in fbgemm and qnnpack (PyTorch's default quantized backends). | ||
|
||
Results: | ||
|
||
.. literalinclude:: scripts/quantization_backend_configs/default_backend_config.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
""" | ||
This script will generate default values of quantization configs. | ||
These are for use in the documentation. | ||
""" | ||
|
||
from torch.ao.quantization.fx.backend_config import get_native_backend_config_dict | ||
import os.path | ||
from pprint import pprint | ||
|
||
|
||
# Create a directory for the images, if it doesn't exist | ||
QUANTIZATION_BACKEND_CONFIG_IMAGE_PATH = os.path.join( | ||
os.path.realpath(os.path.join(__file__, "..")), | ||
"quantization_backend_configs" | ||
) | ||
|
||
if not os.path.exists(QUANTIZATION_BACKEND_CONFIG_IMAGE_PATH): | ||
os.mkdir(QUANTIZATION_BACKEND_CONFIG_IMAGE_PATH) | ||
|
||
output_path = os.path.join(QUANTIZATION_BACKEND_CONFIG_IMAGE_PATH, "default_backend_config.txt") | ||
|
||
with open(output_path, "w") as f: | ||
pprint(get_native_backend_config_dict(), stream=f) |