mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
This PR fixes typos `Github` in `.md` and `.rst` files. `Github` -> `GitHub` Pull Request resolved: https://github.com/pytorch/pytorch/pull/88962 Approved by: https://github.com/kit1980
371 lines
16 KiB
ReStructuredText
371 lines
16 KiB
ReStructuredText
PyTorch Contribution Guide
|
|
==========================
|
|
|
|
PyTorch is a GPU-accelerated Python tensor computation package for
|
|
building deep neural networks using a on tape-based autograd systems.
|
|
|
|
Contribution Process
|
|
--------------------
|
|
|
|
The PyTorch organization is governed by :doc:`PyTorch
|
|
Governance <governance>` and the technical guide to contributing
|
|
can be found in `CONTRIBUTING.md <https://github.com/pytorch/pytorch/blob/master/CONTRIBUTING.md>`_.
|
|
|
|
The PyTorch development process involves a healthy amount of open
|
|
discussions between the core development team and the community.
|
|
|
|
PyTorch operates similarly to most open source projects on GitHub.
|
|
However, if you've never contributed to an open source project before,
|
|
here is the basic process.
|
|
|
|
- **Figure out what you're going to work on.** The majority of open
|
|
source contributions come from people scratching their own itches.
|
|
However, if you don't know what you want to work on, or are just
|
|
looking to get more acquainted with the project, here are some tips
|
|
for how to find appropriate tasks:
|
|
|
|
- Look through the `issue
|
|
tracker <https://github.com/pytorch/pytorch/issues/>`__ and see if
|
|
there are any issues you know how to fix. Issues that are
|
|
confirmed by other contributors tend to be better to investigate.
|
|
We also maintain some labels for issues that are likely to be
|
|
good for new people, e.g., **bootcamp** and **1hr**, although
|
|
these labels are less well maintained.
|
|
- Join us on `dev discuss <https://dev-discuss.pytorch.org/>`_
|
|
and let us know you're interested in getting to
|
|
know PyTorch. We're very happy to help out researchers and
|
|
partners get up to speed with the codebase.
|
|
|
|
- **Figure out the scope of your change and reach out for design
|
|
comments on a GitHub issue if it's large.** The majority of pull
|
|
requests are small; in that case, no need to let us know about what
|
|
you want to do, just get cracking. But if the change is going to be
|
|
large, it's usually a good idea to get some design comments about it
|
|
first by `submitting an RFC <https://github.com/pytorch/rfcs/blob/master/README.md>`__.
|
|
|
|
- If you don't know how big a change is going to be, we can help you
|
|
figure it out! Just post about it on
|
|
`issues <https://github.com/pytorch/pytorch/issues/>`_ or
|
|
`dev discuss <https://dev-discuss.pytorch.org/>`_.
|
|
- Some feature additions are very standardized; for example, lots of
|
|
people add new operators or optimizers to PyTorch. Design
|
|
discussion in these cases boils down mostly to, “Do we want this
|
|
operator/optimizer?” Giving evidence for its utility, e.g., usage
|
|
in peer reviewed papers, or existence in other frameworks, helps a
|
|
bit when making this case.
|
|
|
|
- **Adding operators / algorithms from recently-released research**
|
|
is generally not accepted unless there is overwhelming evidence that
|
|
this newly published work has ground-breaking results and will eventually
|
|
become a standard in the field. If you are not sure where your method falls,
|
|
open an issue first before implementing a PR.
|
|
|
|
- Core changes and refactors can be quite difficult to coordinate
|
|
since the pace of development on PyTorch master is quite fast.
|
|
Definitely reach out about fundamental or cross-cutting changes;
|
|
we can often give guidance about how to stage such changes into
|
|
more easily reviewable pieces.
|
|
|
|
- **Code it out!**
|
|
|
|
- See the `CONTRIBUTING.md <https://github.com/pytorch/pytorch/blob/master/CONTRIBUTING.md>`_ file for advice for working with PyTorch in a
|
|
technical form.
|
|
|
|
- **Open a pull request.**
|
|
|
|
- If you are not ready for the pull request to be reviewed, create a draft
|
|
pull request first - you can later convert it to a full PR by pressing
|
|
"Ready for review" button. You can also prepend the title of the PR with
|
|
"[WIP]" ("work in progress") while it's still in draft. We will ignore
|
|
draft PRs when doing review passes. If you are working on a complex change,
|
|
it's good to start things off as a draft, because you will need to spend
|
|
time looking at CI results to see if things worked out or not.
|
|
- Find an appropriate reviewer for your change. We have some folks
|
|
who regularly go through the PR queue and try to review
|
|
everything, but if you happen to know who the maintainer for a
|
|
given subsystem affected by your patch is, feel free to include
|
|
them directly on the pull request. You can learn more about
|
|
`Persons of Interest <https://pytorch.org/docs/master/community/persons_of_interest.html>`_
|
|
that could review your code.
|
|
|
|
- **Iterate on the pull request until it's accepted!**
|
|
|
|
- We'll try our best to minimize the number of review round trips and
|
|
block PRs only when there are major issues. For the most common
|
|
issues in pull requests, take a look at `Common Mistakes <#common-mistakes-to-avoid>`__.
|
|
- Once a pull request is accepted and CI is passing, there is
|
|
nothing else you need to do; we will merge the PR for you.
|
|
|
|
Getting Started
|
|
---------------
|
|
|
|
Proposing New Features
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
New feature ideas are best discussed on a specific issue. Please include
|
|
as much information as you can, any accompanying data, and your proposed
|
|
solution. The PyTorch team and community frequently review new issues
|
|
and comments where they think they can help. If you feel confident in
|
|
your solution, go ahead and implement it.
|
|
|
|
Reporting Issues
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
If you've identified an issue, first search through the `list of
|
|
existing issues <https://github.com/pytorch/pytorch/issues>`__ on the
|
|
repo. If you are unable to find a similar issue, then create a new one.
|
|
Supply as much information you can to reproduce the problematic
|
|
behavior. Also, include any additional insights like the behavior you
|
|
expect.
|
|
|
|
Implementing Features or Fixing Bugs
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
If you want to fix a specific issue, it's best to comment on the
|
|
individual issue with your intent. However, we do not lock or assign
|
|
issues except in cases where we have worked with the developer before.
|
|
It's best to strike up a conversation on the issue and discuss your
|
|
proposed solution. The PyTorch team can provide guidance that saves you
|
|
time.
|
|
|
|
Issues that are labeled first-new-issue, low, or medium priority provide
|
|
the best entrance point are great places to start.
|
|
|
|
Adding Tutorials
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
A great deal of the tutorials on `pytorch.org <https://pytorch.org/>`__
|
|
come from the community itself and we welcome additional contributions.
|
|
To learn more about how to contribute a new tutorial you can learn more
|
|
here: `PyTorch.org Tutorial Contribution Guide on
|
|
GitHub <https://github.com/pytorch/tutorials/#contributing>`__
|
|
|
|
Improving Documentation & Tutorials
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
We aim to produce high quality documentation and tutorials. On rare
|
|
occasions that content includes typos or bugs. If you find something you
|
|
can fix, send us a pull request for consideration.
|
|
|
|
Take a look at the `Documentation <#on-documentation>`__ section to learn how our system
|
|
works.
|
|
|
|
Participating in Online Discussions
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
You can find active discussions happening on the `PyTorch Discussion
|
|
Forums <https://discuss.pytorch.org/>`__ for users as well as the
|
|
`PyTorch Dev Discussion Forums <https://dev-discuss.pytorch.org/>`__
|
|
for developers and maintainers.
|
|
|
|
Submitting Pull Requests to Fix Open Issues
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
You can view a list of all open issues
|
|
`here <https://github.com/pytorch/pytorch/issues>`__. Commenting on an
|
|
issue is a great way to get the attention of the team. From here you can
|
|
share your ideas and how you plan to resolve the issue.
|
|
|
|
For more challenging issues, the team will provide feedback and
|
|
direction for how to best solve the issue.
|
|
|
|
If you're not able to fix the issue yourself, commenting and sharing
|
|
whether you can reproduce the issue can help the team
|
|
identify problem areas.
|
|
|
|
Reviewing Open Pull Requests
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
We appreciate your help reviewing and commenting on pull requests. Our
|
|
team strives to keep the number of open pull requests at a manageable
|
|
size, we respond quickly for more information if we need it, and we
|
|
merge PRs that we think are useful. However, due to the high level of
|
|
interest, additional eyes on the pull requests are always appreciated.
|
|
|
|
Improving Code Readability
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Improving code readability helps everyone. It is often better to submit a
|
|
small number of pull requests that touch a few files versus a large pull
|
|
request that touches many files. Starting a discussion in the PyTorch
|
|
forum `here <https://discuss.pytorch.org/>`__ or on an issue related to
|
|
your improvement is the best way to get started.
|
|
|
|
Adding Test Cases to Make the Codebase More Robust
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Additional test coverage is appreciated.
|
|
|
|
Promoting PyTorch
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
Your use of PyTorch in your projects, research papers, write ups, blogs,
|
|
or general discussions around the internet helps to raise awareness for
|
|
PyTorch and our growing community. Please reach out to
|
|
`marketing@pytorch.org <mailto:marketing@pytorch.org>`__
|
|
for marketing support.
|
|
|
|
Triaging Issues
|
|
~~~~~~~~~~~~~~~
|
|
|
|
If you feel that an issue could benefit from a particular tag or level
|
|
of complexity, comment on the issue and share your opinion. If you
|
|
feel an issue isn't categorized properly, comment and let the team know.
|
|
|
|
About Open Source Development
|
|
-----------------------------
|
|
|
|
If this is your first time contributing to an open source project, some
|
|
aspects of the development process may seem unusual to you.
|
|
|
|
- **There is no way to “claim” issues.** People often want to “claim”
|
|
an issue when they decide to work on it, to ensure that there isn't
|
|
wasted work when someone else ends up working on it. This doesn't
|
|
really work too well in open source, since someone may decide to work
|
|
on something, and end up not having time to do it. Feel free to give
|
|
information in an advisory fashion, but at the end of the day, we
|
|
will take running code and rough consensus to move forward quickly.
|
|
- **There is a high bar for new functionality.** Unlike
|
|
in a corporate environment, where the person who wrote code
|
|
implicitly “owns” it and can be expected to take care of it for the
|
|
code's lifetime, once a pull request is merged into an open
|
|
source project, it immediately becomes the collective responsibility
|
|
of all maintainers on the project. When we merge code, we are saying
|
|
that we, the maintainers, can review subsequent changes and
|
|
make a bugfix to the code. This naturally leads to a higher standard
|
|
of contribution.
|
|
|
|
Common Mistakes To Avoid
|
|
------------------------
|
|
|
|
- **Did you add tests?** (Or if the change is hard to test, did you
|
|
describe how you tested your change?)
|
|
|
|
- We have a few motivations for why we ask for tests:
|
|
|
|
1. to help us tell if we break it later
|
|
2. to help us tell if the patch is correct in the first place
|
|
(yes, we did review it, but as Knuth says, “beware of the
|
|
following code, for I have not run it, merely proven it
|
|
correct”)
|
|
|
|
- When is it OK not to add a test? Sometimes a change can't be
|
|
conveniently tested, or the change is so obviously correct (and
|
|
unlikely to be broken) that it's OK not to test it. On the
|
|
contrary, if a change seems likely (or is known to be likely)
|
|
to be accidentally broken, it's important to put in the time to
|
|
work out a testing strategy.
|
|
|
|
- **Is your PR too long?**
|
|
|
|
- It's easier for us to review and merge small PRs. The difficulty of
|
|
reviewing a PR scales nonlinearly with its size.
|
|
- When is it OK to submit a large PR? It helps a lot if there was a
|
|
corresponding design discussion in an issue, with sign off from
|
|
the people who are going to review your diff. We can also help
|
|
give advice about how to split up a large change into individually
|
|
shippable parts. Similarly, it helps if there is a complete
|
|
description of the contents of the PR: it's easier to review code
|
|
if we know what's inside!
|
|
|
|
- **Comments for subtle things?** In cases where the behavior of your code
|
|
is nuanced, please include extra comments and documentation to allow
|
|
us to better understand the intention of your code.
|
|
- **Did you add a hack?** Sometimes, the right answer is a hack. But
|
|
usually, we will have to discuss it.
|
|
- **Do you want to touch a very core component?** To prevent
|
|
major regressions, pull requests that touch core components receive
|
|
extra scrutiny. Make sure you've discussed your changes with the team
|
|
before undertaking major changes.
|
|
- **Want to add a new feature?** If you want to add new features,
|
|
comment your intention on the related issue. Our team tries to
|
|
comment on and provide feedback to the community. It's better to have
|
|
an open discussion with the team and the rest of the community before
|
|
building new features. This helps us stay aware of what you're
|
|
working on and increases the chance that it'll be merged.
|
|
- **Did you touch code unrelated to the PR?** To aid in code review,
|
|
please only include files in your pull request that are directly
|
|
related to your changes.
|
|
|
|
Frequently Asked Questions
|
|
--------------------------
|
|
|
|
- **How can I contribute as a reviewer?** There is lots of value if
|
|
community developers reproduce issues, try out new functionality, or
|
|
otherwise help us identify or troubleshoot issues. Commenting on
|
|
tasks or pull requests with your environment details is helpful and
|
|
appreciated.
|
|
- **CI tests failed, what does it mean?** Maybe your PR is based
|
|
off a broken master? You can try to rebase your change on top
|
|
of the latest master. You can also see the current status of
|
|
master's CI at https://hud.pytorch.org/.
|
|
- **What are the most high risk changes?** Anything that touches build
|
|
configuration is a risky area. Please avoid changing these unless
|
|
you've had a discussion with the team beforehand.
|
|
- **Hey, a commit showed up on my branch, what's up with that?**
|
|
Sometimes another community member will provide a patch or fix to
|
|
your pull request or branch. This is often needed for getting CI tests
|
|
to pass.
|
|
|
|
On Documentation
|
|
----------------
|
|
|
|
Python Docs
|
|
~~~~~~~~~~~
|
|
|
|
PyTorch documentation is generated from python source using
|
|
`Sphinx <https://www.sphinx-doc.org/en/master/>`__. Generated HTML is
|
|
copied to the docs folder in the master branch of
|
|
`pytorch.github.io <https://github.com/pytorch/pytorch.github.io/tree/master/docs>`__,
|
|
and is served via GitHub pages.
|
|
|
|
- Site: https://pytorch.org/docs
|
|
- GitHub: https://github.com/pytorch/pytorch/tree/master/docs
|
|
- Served from:
|
|
`https://github.com/pytorch/pytorch.github.io/tree/master/doc <https://github.com/pytorch/pytorch.github.io/tree/master/docs>`__
|
|
|
|
C++ Docs
|
|
~~~~~~~~
|
|
|
|
For C++ code we use Doxygen to generate the content files. The C++ docs
|
|
are built on a special server and the resulting files are copied to the
|
|
https://github.com/pytorch/cppdocs repo, and are served from GitHub
|
|
pages.
|
|
|
|
- Site: https://pytorch.org/cppdocs
|
|
- GitHub: https://github.com/pytorch/pytorch/tree/master/docs/cpp
|
|
- Served from: https://github.com/pytorch/cppdocs
|
|
|
|
Tutorials
|
|
---------
|
|
|
|
PyTorch tutorials are documents used to help understand using PyTorch to
|
|
accomplish specific tasks or to understand more holistic concepts.
|
|
Tutorials are built using
|
|
`Sphinx-Gallery <https://sphinx-gallery.readthedocs.io/en/latest/index.html>`__
|
|
from executable python source files, or from restructured-text (rst)
|
|
files.
|
|
|
|
- Site: https://pytorch.org/tutorials
|
|
- GitHub: https://github.com/pytorch/tutorials
|
|
|
|
Tutorials Build Overview
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
For tutorials, `pull
|
|
requests <https://github.com/pytorch/tutorials/pulls>`__ trigger a
|
|
rebuild of the entire site using CircleCI to test the effects of the
|
|
change. This build is sharded into 9 worker builds and takes around 40
|
|
minutes total. At the same time, we do a Netlify build using *make
|
|
html-noplot*, which builds the site without rendering the notebook
|
|
output into pages for quick review.
|
|
|
|
After a PR is accepted, the site is rebuilt and deployed using GitHub
|
|
Actions.
|
|
|
|
Contributing a New Tutorial
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
See `PyTorch.org Tutorial Contribution
|
|
Guide <https://github.com/pytorch/tutorials/#contributing>`__.
|