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

[export] Add exportable attention and kv cache #2049

Merged
merged 8 commits into from
Nov 23, 2024

Conversation

larryliu0820
Copy link
Contributor

@larryliu0820 larryliu0820 commented Nov 21, 2024

Summary: As titled.

Test Plan: Rely on new unit tests

Reviewers:

Subscribers:

Tasks:

Tags:

Context

What is the purpose of this PR? Is it to

  • add a new feature
  • fix a bug
  • update tests and/or documentation
  • other (please add here)

Please link to any issues this PR addresses.

Changelog

What are the changes made in this PR?

  • Adding attention.py in torchtune/modules/_export/
  • Adding kv_cache.py in torchtune/modules/_export/
  • Adding test_attention.py in tests/torchtune/modules/_export/

Test plan

Please make sure to do each of the following if applicable to your PR. If you're unsure about any one of these just ask and we will happily help. We also have a contributing page for some guidance on contributing.

  • run pre-commit hooks and linters (make sure you've first installed via pre-commit install)
  • add unit tests for any new functionality
  • update docstrings for any new or updated methods or classes
  • run unit tests via pytest tests
  • run recipe tests via pytest tests -m integration_test
  • manually run any new or modified recipes with sufficient proof of correctness
  • include relevant commands and any other artifacts in this summary (pastes of loss curves, eval results, etc.)

UX

If your function changed a public API, please add a dummy example of what the user experience will look like when calling it.
Here is a docstring example
and a tutorial example

  • I did not change any public API
  • I have added an example to docs or docstrings

Summary: As titled.

Test Plan: Rely on new unit tests

Reviewers:

Subscribers:

Tasks:

Tags:
Copy link

pytorch-bot bot commented Nov 21, 2024

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/torchtune/2049

Note: Links to docs will display an error until the docs builds have been completed.

✅ No Failures

As of commit 6e910f1 with merge base e9fd56a (image):
💚 Looks good so far! There are no failures yet. 💚

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@facebook-github-bot facebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Nov 21, 2024
Summary:

Test Plan:

Reviewers:

Subscribers:

Tasks:

Tags:
Summary:

Test Plan:

Reviewers:

Subscribers:

Tasks:

Tags:
Comment on lines 37 to 39
NIGHTLY_VERSION=dev20241121
python -m pip install torch=="2.6.0.${NIGHTLY_VERSION}" torchvision=="0.20.0.${NIGHTLY_VERSION}" --extra-index-url https://download.pytorch.org/whl/nightly/cpu
python -m pip install torchao
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think we want to change the default behavior of our unit test workflow here. Can we figure out a way to decouple the export CI a little more?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Can you say a bit more? Are you ok with a separate CI job running these tests with torch nightly installed?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added Export CI workflow.

Summary:

Test Plan:

Reviewers:

Subscribers:

Tasks:

Tags:
Copy link
Contributor

@pbontrager pbontrager left a comment

Choose a reason for hiding this comment

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

Thanks for putting up this first commit. I'm not reviewing the modules themselves but the integration with unit tests as this is the first time we're doing this. I left some comments related to this.

.github/workflows/export.yaml Show resolved Hide resolved
@ebsmothers
Copy link
Contributor

OK just discussed with @pbontrager. Let's do the following:

  1. Create a workflow export.yaml as you've already done. Configure it to run under the following conditions:
    a) any PR touching the path torchtune/modules/_export (you can use path filters to do this)
    b) nightly

The workflow should run only on tests in the _export folder, something like the command pytest tests/torchtune/modules/_export. Then you can also separately control PyTorch nightlies etc without having to worry about impacting the setup of other test workflows. By running on every PR touching the _export folder, you'll know immediately if you break anything on your PRs. And the nightly runs will ensure we get quick signal on whether other changes in torchtune break anything in the _export folder.

  1. Modify other workflows to exclude torchtune/modules/_export. Specifically I think the files gpu_test.yaml and unit_test.yaml will need to change, and you will need to modify pytest tests -> pytest tests --ignore tests/torchtune/modules/_export

Summary:

Test Plan:

Reviewers:

Subscribers:

Tasks:

Tags:
Summary:

Test Plan:

Reviewers:

Subscribers:

Tasks:

Tags:
Copy link
Contributor

@jackzhxng jackzhxng left a comment

Choose a reason for hiding this comment

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

Should we also copy over the README?

.github/workflows/export.yaml Show resolved Hide resolved
tests/torchtune/modules/_export/test_attention.py Outdated Show resolved Hide resolved
tests/torchtune/modules/_export/test_attention.py Outdated Show resolved Hide resolved
tests/torchtune/modules/_export/test_attention.py Outdated Show resolved Hide resolved
Summary:

Test Plan:

Reviewers:

Subscribers:

Tasks:

Tags:
Summary:

Test Plan:

Reviewers:

Subscribers:

Tasks:

Tags:
@codecov-commenter
Copy link

codecov-commenter commented Nov 23, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 68.22%. Comparing base (89f935f) to head (6e910f1).
Report is 5 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2049      +/-   ##
==========================================
+ Coverage   67.69%   68.22%   +0.53%     
==========================================
  Files         323      323              
  Lines       17823    17961     +138     
==========================================
+ Hits        12065    12254     +189     
+ Misses       5758     5707      -51     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.


🚨 Try these New Features:

@larryliu0820 larryliu0820 merged commit f3d8d3c into pytorch:main Nov 23, 2024
20 checks passed
@larryliu0820 larryliu0820 deleted the exportable_attention branch November 23, 2024 01:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants