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

[cleanup][2/x] split float8 mm by delayed vs dynamic #1461

Merged
merged 9 commits into from
Jan 13, 2025
Merged

Conversation

vkuzo
Copy link
Contributor

@vkuzo vkuzo commented Dec 27, 2024

Summary:

Before this PR, the float8 mm logic was split by axiswise vs tensorwise.
After this PR, the float8 mm logic is split by dynamic vs non-dynamic scaling.

Motivation: there is more and more evidence that dynamic scaling will
be common to the most important lowp recipes. This PR is a step on the way
to making the dynamic scaling logic be simpler and easier to understand
in torchao.float8.

There are a lot of other simplifications to do, but stopping here to
keep the PR small. This is a pure refactor without any logic changes.

Test Plan:

./test/float8/test_everything.sh

// torchtitan LLaMa 3 8B on 8 H100s

// baseline (bf16 + compile)
37.87GiB(39.86%)  tps: 5,787

// before this PR

// dynamic-tensorwise
memory: 37.98GiB(39.98%)  tps: 6,880
// dynamic-tensorwise with float8 all-gather
memory: 37.54GiB(39.51%)  tps: 7,126
// all-axiswise
memory: 57.03GiB(60.03%)  tps: 6,330
// lw_axiswise_with_gw_hp
memory: 57.03GiB(60.03%)  tps: 6,021

// after this PR
// dynamic-tensorwise
memory: 37.98GiB(39.98%)  tps: 6,891
// dynamic-tensorwise with float8 all-gather
memory: 37.54GiB(39.51%)  tps: 7,127
// all-axiswise
memory: 57.03GiB(60.03%)  tps: 6,345
// lw_axiswise_with_gw_hp
memory: 57.03GiB(60.03%)  tps: 6,042

Reviewers:

Subscribers:

Tasks:

Tags:

[ghstack-poisoned]
[ghstack-poisoned]
[ghstack-poisoned]
@vkuzo
Copy link
Contributor Author

vkuzo commented Dec 27, 2024

Copy link

pytorch-bot bot commented Dec 27, 2024

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/ao/1461

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

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 Dec 27, 2024
vkuzo added a commit that referenced this pull request Dec 27, 2024
Summary:

Before this PR, the float8 mm logic was split by axiswise vs tensorwise.
After this PR, the float8 mm logic is split by dynamic vs non-dynamic scaling.

Motivation: there is more and more evidence that dynamic scaling will
be common to the most important lowp recipes. This PR is a step on the way
to making the dynamic scaling logic be simpler and easier to understand
in `torchao.float8`.

There are a lot of other simplifications to do, but stopping here to
keep the PR small.  This is a pure refactor without any logic changes.

Test Plan:

```
./test/float8/test_everything.sh
```

Reviewers:

Subscribers:

Tasks:

Tags:

ghstack-source-id: 8a9792272e3aeea12d705eb5a466b9830dac6420
ghstack-comment-id: 2564049757
Pull Request resolved: #1461
@vkuzo vkuzo added the topic: not user facing Use this tag if you don't want this PR to show up in release notes label Dec 27, 2024
[ghstack-poisoned]
vkuzo added a commit that referenced this pull request Dec 27, 2024
Summary:

Before this PR, the float8 mm logic was split by axiswise vs tensorwise.
After this PR, the float8 mm logic is split by dynamic vs non-dynamic scaling.

Motivation: there is more and more evidence that dynamic scaling will
be common to the most important lowp recipes. This PR is a step on the way
to making the dynamic scaling logic be simpler and easier to understand
in `torchao.float8`.

There are a lot of other simplifications to do, but stopping here to
keep the PR small.  This is a pure refactor without any logic changes.

Test Plan:

```
./test/float8/test_everything.sh
```

Reviewers:

Subscribers:

Tasks:

Tags:

ghstack-source-id: 90b042fc76549c88a46abf06945ad166ea403e5c
ghstack-comment-id: 2564049757
Pull Request resolved: #1461
vkuzo added 2 commits January 8, 2025 13:07
[ghstack-poisoned]
[ghstack-poisoned]
@vkuzo vkuzo requested review from jerryzh168 and drisspg January 13, 2025 15:59
vkuzo added 2 commits January 13, 2025 08:00
[ghstack-poisoned]
[ghstack-poisoned]
config: Float8LinearConfig,
) -> Optional[torch.Tensor]:
if tensor_already_casted_to_fp8(weight):
return None
Copy link
Contributor

Choose a reason for hiding this comment

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

I figured it would have just returned the scale on the fp8 tensor

@vkuzo vkuzo changed the base branch from gh/vkuzo/13/head to main January 13, 2025 20:13
[ghstack-poisoned]
@vkuzo vkuzo merged commit 2ec9bc1 into main Jan 13, 2025
28 of 37 checks passed
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. topic: not user facing Use this tag if you don't want this PR to show up in release notes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants