Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[quant][pt2] Update special qspecs after QAT rewrite #103970

Closed
wants to merge 1 commit into from

Commits on Jun 21, 2023

  1. [quant][pt2] Update special qspecs after QAT rewrite (pytorch#103970)

    Summary:
    Pull Request resolved: pytorch#103970
    
    Special qspecs like `SharedQuantizationSpec` and
    `DerivedQuantizationSpec` refer to other nodes in the graph.
    However, after subgraph rewriting in QAT, the nodes referred
    to in these special qspecs may be replaced by new nodes.
    This could lead to the following error when inserting
    observers according to these qspecs:
    
    ```
    AssertionError: please make sure only refer to edge or node
    that has observer/fake_quant inserted: 'getitem' not in
    dict_keys([(arg0, convolution_default_1), (mul_tensor, convolution_default_1), getitem_3])
    ```
    
    This commit fixes this by keeping track of the nodes that
    are replaced during subgraph rewriting in QAT, and using
    this mapping to update the dangling references used in these
    special qspecs.
    
    Test Plan: python test/test_quantization.py TestQuantizePT2E.test_qat_update_shared_qspec
    
    Reviewed By: jerryzh168
    
    Differential Revision: D46606614
    
    fbshipit-source-id: ed86c61007658b23121e98417ac754a48fa62a24
    andrewor14 authored and facebook-github-bot committed Jun 21, 2023
    Configuration menu
    Copy the full SHA
    4aa9c87 View commit details
    Browse the repository at this point in the history