Skip to content

optimization of perKVhead quantization #4161

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

Closed
wants to merge 2 commits into from

Conversation

Aya-ZIbra
Copy link
Contributor

Summary:
y-sq noticed that for prefill chunk of 64k, the improvement in attention kernel runtime for local layers is cancelled out by around 0.4 ms overhead from the quantization kernel.

https://docs.google.com/document/d/193GL7o5GMlpVlwEDVxqoDB6O85zDuS8A5-PUOSsZc1s/edit?tab=t.0#bookmark=id.zh92spta1uxw

Before:
BS =1 , Seqlen = 64k
Elapsed Cycles cycle 530,268
Memory Throughput % 17.24
Duration us 392.93

After:
----------------------- ----------- ------------
DRAM Frequency Ghz 1.59
SM Frequency Ghz 1.34
Elapsed Cycles cycle 192,884
Memory Throughput % 46.01
DRAM Throughput % 46.01
Duration us 143.23
L1/TEX Cache Throughput % 15.15
L2 Cache Throughput % 39.31
SM Active Cycles cycle 181,953.16
Compute (SM) Throughput % 71.92
----------------------- ----------- ------------

Reviewed By: y-sq

Differential Revision: D74924275

Copy link

netlify bot commented May 20, 2025

Deploy Preview for pytorch-fbgemm-docs ready!

Name Link
🔨 Latest commit 6005e07
🔍 Latest deploy log https://app.netlify.com/projects/pytorch-fbgemm-docs/deploys/682d4a0bbfafd60008706593
😎 Deploy Preview https://deploy-preview-4161--pytorch-fbgemm-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D74924275

Summary:
as title.
This is needed to handle this case: https://www.internalfb.com/diff/D73833204?dst_version_fbid=9500286030082255&transaction_fbid=676020828512263

This will help avoid amax calc in rope for decode and partial prefill batch lanes.

Also, we can rely on it in Kernel2, to return back and avoid unneccessary quantization.

Differential Revision: D73478483

Reviewed By: y-sq
Aya-ZIbra added a commit to Aya-ZIbra/FBGEMM that referenced this pull request May 21, 2025
Summary:

X-link: facebookresearch/FBGEMM#1241

y-sq noticed that for prefill chunk of 64k, the improvement in attention kernel runtime for local layers is cancelled out by around 0.4 ms overhead from the quantization kernel. 

https://docs.google.com/document/d/193GL7o5GMlpVlwEDVxqoDB6O85zDuS8A5-PUOSsZc1s/edit?tab=t.0#bookmark=id.zh92spta1uxw

Before:
BS =1 , Seqlen = 64k
  Elapsed Cycles                cycle      530,268
  Memory Throughput                 %        17.24
  Duration                         us       392.93


After:
    ----------------------- ----------- ------------
    DRAM Frequency                  Ghz         1.59
    SM Frequency                    Ghz         1.34
    Elapsed Cycles                cycle      192,884
    Memory Throughput                 %        46.01
    DRAM Throughput                   %        46.01
    Duration                         us       143.23
    L1/TEX Cache Throughput           %        15.15
    L2 Cache Throughput               %        39.31
    SM Active Cycles              cycle   181,953.16
    Compute (SM) Throughput           %        71.92
    ----------------------- ----------- ------------

Reviewed By: y-sq

Differential Revision: D74924275
Aya-ZIbra added a commit to Aya-ZIbra/FBGEMM that referenced this pull request May 21, 2025
Summary:

X-link: facebookresearch/FBGEMM#1241

y-sq noticed that for prefill chunk of 64k, the improvement in attention kernel runtime for local layers is cancelled out by around 0.4 ms overhead from the quantization kernel. 

https://docs.google.com/document/d/193GL7o5GMlpVlwEDVxqoDB6O85zDuS8A5-PUOSsZc1s/edit?tab=t.0#bookmark=id.zh92spta1uxw

Before:
BS =1 , Seqlen = 64k
  Elapsed Cycles                cycle      530,268
  Memory Throughput                 %        17.24
  Duration                         us       392.93


After:
    ----------------------- ----------- ------------
    DRAM Frequency                  Ghz         1.59
    SM Frequency                    Ghz         1.34
    Elapsed Cycles                cycle      192,884
    Memory Throughput                 %        46.01
    DRAM Throughput                   %        46.01
    Duration                         us       143.23
    L1/TEX Cache Throughput           %        15.15
    L2 Cache Throughput               %        39.31
    SM Active Cycles              cycle   181,953.16
    Compute (SM) Throughput           %        71.92
    ----------------------- ----------- ------------

Reviewed By: y-sq

Differential Revision: D74924275
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D74924275

Aya-ZIbra added a commit to Aya-ZIbra/FBGEMM that referenced this pull request May 21, 2025
Summary:
Pull Request resolved: pytorch#4161

X-link: facebookresearch/FBGEMM#1241

y-sq noticed that for prefill chunk of 64k, the improvement in attention kernel runtime for local layers is cancelled out by around 0.4 ms overhead from the quantization kernel.

https://docs.google.com/document/d/193GL7o5GMlpVlwEDVxqoDB6O85zDuS8A5-PUOSsZc1s/edit?tab=t.0#bookmark=id.zh92spta1uxw

Before:
BS =1 , Seqlen = 64k
  Elapsed Cycles                cycle      530,268
  Memory Throughput                 %        17.24
  Duration                         us       392.93

After:
    ----------------------- ----------- ------------
    DRAM Frequency                  Ghz         1.59
    SM Frequency                    Ghz         1.34
    Elapsed Cycles                cycle      192,884
    Memory Throughput                 %        46.01
    DRAM Throughput                   %        46.01
    Duration                         us       143.23
    L1/TEX Cache Throughput           %        15.15
    L2 Cache Throughput               %        39.31
    SM Active Cycles              cycle   181,953.16
    Compute (SM) Throughput           %        71.92
    ----------------------- ----------- ------------

Reviewed By: y-sq

Differential Revision: D74924275
Summary:
Pull Request resolved: pytorch#4161

X-link: facebookresearch/FBGEMM#1241

y-sq noticed that for prefill chunk of 64k, the improvement in attention kernel runtime for local layers is cancelled out by around 0.4 ms overhead from the quantization kernel.

https://docs.google.com/document/d/193GL7o5GMlpVlwEDVxqoDB6O85zDuS8A5-PUOSsZc1s/edit?tab=t.0#bookmark=id.zh92spta1uxw

Before:
BS =1 , Seqlen = 64k
  Elapsed Cycles                cycle      530,268
  Memory Throughput                 %        17.24
  Duration                         us       392.93

After:
    ----------------------- ----------- ------------
    DRAM Frequency                  Ghz         1.59
    SM Frequency                    Ghz         1.34
    Elapsed Cycles                cycle      192,884
    Memory Throughput                 %        46.01
    DRAM Throughput                   %        46.01
    Duration                         us       143.23
    L1/TEX Cache Throughput           %        15.15
    L2 Cache Throughput               %        39.31
    SM Active Cycles              cycle   181,953.16
    Compute (SM) Throughput           %        71.92
    ----------------------- ----------- ------------

Reviewed By: y-sq

Differential Revision: D74924275
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D74924275

@facebook-github-bot
Copy link
Contributor

This pull request has been merged in aa2fe3d.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants