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

[DNNL] Fix accuracy in INT8 FC #22404

Merged
merged 7 commits into from
Jan 31, 2020
Merged

Conversation

Sand3r-
Copy link
Contributor

@Sand3r- Sand3r- commented Jan 28, 2020

PR introduces changes that enable int8 FC to correctly perform computations in ernie topology.

Terminology used in description:

nhwc-like or nchw-like means any format that is descendant of these formats, such as ncw or nwc for 3-dim data blobs, nhwc, nchw for 4-dims and so on.

Description:

Background:

The nhwc data layout was formerly used in all int8 computations so far, and quantize op had it hardcoded to reorder to nhwc-like format during quantizaiton.

Problem:

Unfortunately, due to how this format is laid out in memory, it was not possible to correctly use this format when fully-connected op used in_num_col_dims parameter to merge some of the first dimensions, since it assumes an nchw-like format.

Solution:

To counter this, the PR makes it possible to set to which format (or in fact layout) should quantize reorder to during quantizaiton. Possible options being either NCHW or NCHW by setting its output_format parameter.

To further utilise this new feature, cpu_quantize_pass now accepts an optional attribute data_layout which allows to set desired data format for all quantizes that will be added to the graph.

paddle/fluid/framework/ir/mkldnn/fc_mkldnn_pass.cc Outdated Show resolved Hide resolved
paddle/fluid/operators/fc_op.cc Outdated Show resolved Hide resolved
paddle/fluid/operators/mkldnn/fc_mkldnn_op.cc Outdated Show resolved Hide resolved
paddle/fluid/inference/analysis/argument.h Outdated Show resolved Hide resolved
Copy link

@wojtuss wojtuss left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Sand3r- Sand3r- requested a review from luotao1 January 31, 2020 10:51
@luotao1 luotao1 merged commit 269db0d into PaddlePaddle:develop Jan 31, 2020
@luotao1
Copy link
Contributor

luotao1 commented Jan 31, 2020

Please cherry-pick into release/1.7

Sand3r- added a commit to Sand3r-/Paddle that referenced this pull request Feb 3, 2020
test=release/1.7

* Enable quantize to reorder to nchw as well

* Correct FC MKL-DNN input dim requirements to accept 3D

* Improve DNNL FC format, error and 3D input handling

* Improve error checking in FC

* Improve PADDLE_ENFORCE messages in fc-related files

* Remove data layout attribute from obligatory pass args

* Fix message in fc_mkldnn_pass to be logically correct
luotao1 pushed a commit that referenced this pull request Feb 4, 2020
test=release/1.7

* Enable quantize to reorder to nchw as well

* Correct FC MKL-DNN input dim requirements to accept 3D

* Improve DNNL FC format, error and 3D input handling

* Improve error checking in FC

* Improve PADDLE_ENFORCE messages in fc-related files

* Remove data layout attribute from obligatory pass args

* Fix message in fc_mkldnn_pass to be logically correct
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants