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

[CPU] FusedAdam and CPU training support #3991

Merged
merged 24 commits into from
Jul 25, 2023

Conversation

delock
Copy link
Collaborator

@delock delock commented Jul 19, 2023

This PR implements FusedAdam and also enables CPU training with ZeRO stage 0-3. Note FP16 data type are not supported for CPU training. BF16 is the preferred datatype.

For ZeRO stage 0, this PR depends on #3842.

Whats in this PR:

  1. FusedAdam kernel, the implementation is from CPU Adam kernel and had been modified to suite the case.
  2. Fix bugs in CPU Accelerator interface implementation which had been exposed by training workload.
  3. Handling of synchronized accelerator in DeepSpeed runtime.

This PR had been verified on CIFAR10 in DeepSpeedExamples, A PR had been submitted to support BF16 data type for CIFAR10 deepspeedai/DeepSpeedExamples#651 . Note for Zero0/1, there is an accuracy bug in DeepSpeed supporting BF16 training (#3979), for Zero2/3, accuracy is correct.

@delock
Copy link
Collaborator Author

delock commented Jul 24, 2023

@tjruwase note we also have a PR in DeepSpeedExamples to demostrate CIFAR10 training with CPU. The PR also fix test broken for pytorch 2.0 because of API change.
deepspeedai/DeepSpeedExamples#651

@delock
Copy link
Collaborator Author

delock commented Jul 25, 2023

Also added CPUAdamBuilder for CPU accelerator, so HelloDeepSpeed which use cpu offload can run.

@tjruwase tjruwase added this pull request to the merge queue Jul 25, 2023
Merged via the queue into deepspeedai:master with commit 0f54063 Jul 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants