We want to make contributing to this project as easy and transparent as possible. Our goal is to provide a repo that promotes optimizer research and development separate from the official PyTorch library. Please only create pull requests for improving existing optimizers in the repo; new optimizers should be created in a separate public repo.
We actively welcome your pull requests for existing optimizers.
- Fork the repo and create your branch from
main
. Install the package inside of your Python environment withpip install -e ".[dev]"
. Runpre-commit install
to set up the git hook scripts. - If you've added code that should be tested, add tests.
- If you've changed APIs, update the documentation.
- Ensure the test suite passes. To run the subset of the tests that can be run on CPU use
make test
; to run the tests for a single GPU usemake test-gpu
and to run the subset of tests that require 2-4 GPUs usemake test-multi-gpu
. - Make sure your code lints. You can use
make lint
andmake format
to automatically lint and format the code where possible (will also automatically run ongit commit
if the pre-commit hook was installed; however, this does not guarantee that there are not linting errors left). Usemake type-check
for type checking. - If you haven't already, complete the Contributor License Agreement ("CLA").
Note
If you add a new class or function that a user of the package might want to interact with directly, make sure to add it here.
In order to accept your pull request, we need you to submit a CLA. You only need to do this once to work on any of Meta's open source projects.
Complete your CLA here: https://code.facebook.com/cla
We use GitHub issues to track public bugs. Please ensure your description is clear and has sufficient instructions to be able to reproduce the issue.
Meta has a bounty program for the safe disclosure of security bugs. In those cases, please go through the process outlined on that page and do not file a public issue.
- 4 spaces for indentation rather than tabs
- 80 character line length
- Please maintain a consistent style with the rest of the code
By contributing to Optimizers, you agree that your contributions will be licensed under the LICENSE file in the root directory of this source tree.