DeepSpeed welcomes your contributions!
DeepSpeed uses pre-commit to ensure that formatting is
consistent across DeepSpeed. First, ensure that pre-commit
is installed from either
installing DeepSpeed or pip install pre-commit
. Next, the pre-commit hooks must be
installed once before commits can be made:
pre-commit install
Afterwards, our suite of formatting tests run automatically before each git commit
. You
can also run these manually:
pre-commit run --all-files
If a formatting test fails, it will fix the modified code in place and abort
the git commit
. After looking over the changes, you can git add <modified files>
and then repeat the previous git commit
command.
DeepSpeed tracks two types of tests: unit tests and more costly model convergence tests.
The model convergence tests train
DeepSpeedExamples and measure
end-to-end convergence and related metrics. Unit tests are found in tests/unit/
and
the model convergence tests are found in tests/model/
.
PyTest is used to execute tests. PyTest can be
installed from PyPI via pip install pytest
. Simply invoke pytest --forked
to run the
unit tests:
pytest --forked tests/unit/
You can also provide the -v
flag to pytest
to see additional information about the
tests. Note that pytest-forked and the
--forked
flag are required to test CUDA functionality in distributed tests.
To execute model tests, first install DeepSpeed. The DeepSpeedExamples repository is cloned as part of this process. Next, execute the model test driver:
cd tests/model/
pytest run_sanity_check.py
Note that the --forked
flag is not necessary for the model tests.
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
Unlike bug fix or improving existing feature (where users usually directly submit a PR and we review it), adding a new feature to DeepSpeed requires several steps: (1) proposal and discussion, (2) implementation and verification, (3) release and maintenance. This general guideline applies to all new feature contributions. Core DeepSpeed team member contributions may complete step 1 internally.
We ask users to first post your intended feature in an issue. This issue needs to include:
Based on the issue we shall discuss the merit of the new feature and decide whether accept or decline the proposal. Once accepted and after we confirm the design and implementation plan, we are ready for step 2.
Contributor will go ahead and implement the feature, and the DeepSpeed team will provide guidance/helps as needed. The required deliverables include:
After receiving the PRs, we will review them and merge them after necessary tests/fixes.
After the PRs are merged, we will announce the feature on our website (with credit to the feature author). We ask the feature author to commit to the maintenance of the feature.